基于二进制日志文件位置的复制

  • MySQL官网链接:https://dev.mysql.com/doc/refman/5.7/en/binlog-replication-configuration-overview.html
  • 服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (slave)
  • 要将master配置为使用基于二进制日志文件位置的复制,必须启用二进制日志记录并建立唯一的server-id。要配置二进制日志和server ID选项,请关闭MySQL服务器并编辑my.cnf或my.ini文件。在配置文件的[mysqld]部分中,添加log-bin和server-id选项。如果这些选项已经存在,但是注释掉了,取消注释并根据您的需要修改它们。
  • 在master上,打开对应的my.cnf
    • 重启mysql,进入mysql,查看对应的server_id是否设置成功
    • mysql> show variables like ‘server_id‘;
    • +---------------+-------+
    • | Variable_name | Value |
    • +---------------+-------+
    • | server_id | 1 |
    • +---------------+-------+
    • 1 row in set (0.00 sec)
    • 表示设置是成功的
  • 在master上,创建复制使用的用户(每个slave都使用MySQL用户名和密码连接到master,因此master必须有一个用户帐户可以让slave用来连接。任何帐户都可以用于此操作,只要授予它REPLICATION SLAVE特权。)
    • 进入mysql,执行以下命令
    • mysql> CREATE USER ‘lisi‘@‘%‘ IDENTIFIED BY ‘Lisi@123456‘;
    • Query OK, 0 rows affected (0.00 sec)
    • mysql> GRANT REPLICATION SLAVE ON . TO ‘lisi‘@‘%‘;
    • Query OK, 0 rows affected (0.00 sec)
    • 接下来通过FLUSH刷新所有表和块写入语句
    • mysql> FLUSH TABLES WITH READ LOCK;
    • Query OK, 0 rows affected (0.00 sec)
    • 然后确定当前的二进制日志文件名称和位置:
    • mysql> show master status;
    • +------------------+----------+--------------+------------------+-------------------+
    • | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    • +------------------+----------+--------------+------------------+-------------------+
    • | mysql-bin.000005 | 802858 | | | |
    • +------------------+----------+--------------+------------------+-------------------+
    • 1 row in set (0.00 sec)
  • 在slave上,设置server_id,然后重启slave的mysql
  • 在slave上,在slave上设置master配置
    • mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.1.2‘, MASTER_USER=‘lisi‘, MASTER_PASSWORD=‘Lisi@123456‘, MASTER_LOG_FILE=‘mysql-bin.000005‘,MASTER_LOG_POS=802858;

      • 参数讲解
      • MASTER_HOST master的ip地址
      • MASTER_USER master的复制用户名
      • MASTER_PASSWORD master的复制用户的密码
      • MASTER_LOG_FILE master的二进制文件
      • MASTER_LOG_POS master的二进制文件位置
  • 在slave上,启动复制
    • mysql> start slave;
    • Query OK, 0 rows affected (0.00 sec)
    • 查看slave状态
    • mysql> show slave status\G
    • 可以查看这两个是Yes那就说明成功了
  • 在master上
    • mysql> UNLOCK TABLES;
    • Query OK, 0 rows affected (0.00 sec)
  • 下面就是在mysql中的数据库中随便操作一下数据,看下是否同步,如果同步则表示没有问题,有问题,请及时查看slave的mysql错误日志
  • 注意:

    • 需要验证一下master的复制账号是否能远程登录
    • 复制组中的每个服务器必须配置唯一的server ID

    这次操作踩的坑:

    • Q: Can‘t connect to MySQL server on ‘server’ 在当前主机上 mysql -uUserName -p -h localhost 可以连接上 mysql -uUserName -p -h ‘ip地址‘ 连接不上
    • A:先按照https://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html介绍的方法进行排查,最后还发现连接不上,如果是阿里云的服务器,那么可能就是防火墙把3306d端口给关了,那么就要在防火墙把这个端口给放开
    • 或者进入https://help.aliyun.com/document_detail/25471.html?spm=a2c4e.11153987.0.0.2de65a75vopCz7进行设置
    • Q:在slave机器上mysql -uUserName -p -h ‘master的ip地址’ 可以连接上,但show slave status是下图
    • A:查看错误日志
    • 2026是ssl错误,说明我们启动了ssl连接
    • 这时候需要在master和slave上的my.conf文件加上以下行
    • 然后重启mysql,如果在mysql中看到以下结果,就说明ssl被关闭了
    • 这时候如果slave还是连接不上master的话,我们再看一下show slave status的信息
    • 如果Master_SSL_Allowed为Yes,那么就要改为No,具体修改在change master语句里面改,本次我们的修改例子为
      CHANGE MASTER TO MASTER_HOST=‘192.168.1.2‘, MASTER_USER=‘lisi‘, MASTER_PASSWORD=‘Lisi@123456‘, MASTER_LOG_FILE=‘mysql-bin.000005‘,MASTER_LOG_POS=802858,master_ssl=0; 主要是master_ssl=0然后在执行一下start slave。

    原文地址:http://blog.51cto.com/itzhoujun/2351367

    时间: 2024-10-03 13:38:45

    基于二进制日志文件位置的复制的相关文章

    实现LVM逻辑卷数据库备份还原,二进制日志文件分离存放

    首先需要做到的是就是数据库文件,以及二进制日志文件全部放在单独的逻辑卷存储. 实现LVM逻辑卷,数据,二进制日志文件分离存放 一,创建逻辑卷步骤 (1),创建新分区 1,查看分区情况看看还剩多少空间 [[email protected] backup]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part /

    Mysql-8 配置主从复制(基于二进制日志)

    目录 1. 实验环境 2. 安装MySQL8 3. 配置主从复制 4. 配置复制用户 5. 数据的同步 6. 配置从节点 7. 测试主从复制 1. 实验环境 System IP Host CentOS 7.4.1708 192.168.100.101 master CentOS 7.4.1708 192.168.100.102 slave 2. 安装MySQL8 使用官方整合包安装Mysql8 3. 配置主从复制 要想将主节点配置为使用基于二进制日志的复制,必须确保启用了二进制日志记录,并建立唯

    rsync采集二进制日志文件

    本日志转载请注明出处,否则将追究责任! rsync简介 rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次发送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝. 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH伺服文件.需要备份的终端为

    实验:模拟场景中误删除mysql数据库表,然后使用全备份以及二进制日志文件恢复操作

    一.实验环境: 1.准备两台虚拟机,一台用于破坏数据库,一台用于还原,两台在同一个网络 2.两台最小化安装centos 7系统,并直接yum安装maraidb数据库 3.准备一个测试数据库文件,例如,hellodb_innodb.mysql 测试库里面最少有两个表. 二.实验步骤: 1.开启数据库的二进制日志功能 vim /etc/my.cnf[mysqld] 下面加入log-bin 表示开启二进制日志功能 2.完全备份 mysqldump -A -F --master-data=2 --sin

    MySQL主从复制 - 基于二进制日志(理论篇)

    mysql日志类型 1    二进制日志 2    事务日志 3    一般查询日志 4    中继日志 5    慢查询日志 二进制日志 二进制日志通常记录的是可能潜在引起数据库发生改变的操作,每一个操作我们称为一个event. 二进制日志记录一个event的时候,通常还会记录timestamp,position(偏移量offset),server-id,event本身. 二进制日志的数据存储形式,形如mysql-bin.xxxxxx这种,二进制日志除了mysql-bin.xxxxxx之外,还

    mysql删除二进制日志文件

    一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) 也是mysql一个重要的技术 2.运行一些测试的语句看数据是否能够复制到 slave上面 3.当复制运行正常的话,就 stop slace 然后在slave上面执行 reset slave,去掉不需要的数据 4.在master上面执行reset master 去掉2中产生的数据 可以删除列于索引文

    mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启mysql实例 server-id=11 #由于bug,所以需要设置该参数.否则无法启动mysql实例 log-bin = mysql-bin #其中mysql-bin代表的是basename就是生成二进制日志文件的前缀部分,默认的位置在datadir目录下,也可以设置为其他的路径 2.查看binlog

    实战:mysql检查物理磁盘中的二进制日志文件是否有丢失

    场景:有时候因为磁盘损坏或人为原因错误删除了磁盘中的二进制文件,导致mysql中的show binary logs记录和实际的物理磁盘中的二进制文件不匹配 #binlogdiff.sh #!/bin/sh #[email protected] #作用:mysql中show binary logs记录的二进制日志文件和实际的物理文件比较,检查 #磁盘中对应的二进制日志文件是否有丢失 source /usr/local/mysql/scripts/mysql_env.ini binlog_init=

    MySql通过二进制日志文件恢复数据

    在<百度.阿里.腾讯如何承载PB级别大数据>的视频中了解到,大型网站的数据库每天都会定时的进行数据备份份.如果设置每天的0点进行数据备份,在两个数据备份周期期间数据库出现宕机情况,0点到宕机这个时间段的数据如何备份呢?在MySql中是通过数据库的二进制日志文件进行数据恢复的. MySql的二进制日志文件默认是关闭的,需要我们在MySql根目录下的my.ini文件中设置为开启状态.设置方式为在[mysqld]节点下,添加log-bin=mysql  binlog-do-db=spring,mys