Mysql内置的数据实时同步

221 阅读3分钟
配置主从同步的基本步骤:
1.在主服务器上,必须开启二进制日志机制和配置一个独立的ID
2.在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
3.在开始复制进程前,在主服务器上记录二进制文件的位置信息
4.如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
5.配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

一、主服务器配置
1、检查是否开启bin_log
    show variables like '%log_bin%';
2、编辑设置mysqld的配置文件my.cnf,设置log_bin和server-id
    log_bin可以直接配置成mysql-bin.log

    根据需求还可以配置如下字段
    log_slave_updates=1
    binlog-do-db=db_name   # 需要同步的数据库
    binlog-ignore-db=mysql   # 被忽略的数据库
    binlog_format=ROW
    改完后,重启数据库:service mysql restart
3、导出当前数据快照
(1)导出所有数据库:
    mysqldump -uroot -proot --all-databases --lock-all-tables > all_master_db.sql
(2)导出制定数据库(wwpdb):
    mysqldump -uroot -proot wwpdb --lock-all-tables > one_db.sql
4、创建用于数据同步的数据库账号
    create user 'slave'@'%' IDENTIFIED by 'slave2020';
    grant replication slave on *.* to 'slave'@'%';
    FLUSH PRIVILEGES;
    
    或者
    
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave2020';
    FLUSH PRIVILEGES;
5、获取主服务器的二进制日志信息
 SHOW MASTER STATUS;
 
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1774f89217f14ad7980ca51579dcedbb~tplv-k3u1fbpfcp-watermark.image)
 注意:File为使用的日志文件名字,Position为使用的文件位置,这两个参数须记下,配置从服务器时会用到
 
二、从机配置
1、导入主服务器数据库数据快照
mysql -uroot -proot wwpdb < one_db.sql
2、配置文件配置
编辑my.ini文件,将server-id修改为2,并保存退出

3、重启mysql服务
service mysql restart
4、进入mysql,设置连接到master主服务器
change master to master_host='10.10.10.195', master_user='slave', master_password='slave2020',master_log_file='mysql-bin.000001', master_log_pos=590;
5、开启同步
start slave;
6、查看同步状态
show slave status \G;
7、查看relaylog参数:
    mysql> show variables like '%relay%';
    1.relay_log_recovery:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
    2.relay_log_space_limit:防止中继日志写满磁盘,这里设置中继日志最大限额。但此设置存在主库崩溃,从库中继日志不全的情况,不到万不得已,不推荐使用;

三、断网重新配置
1、在从服务器停止同步
    stop slave;
2、在从服务器重置同步
    reset slave;
3、在主服务器查询bin_log信息
    SHOW MASTER STATUS;
4、在从服务器上修改bin_log信息
    change master to MASTER_HOST='10.10.10.195',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='slave2020',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=590;
5、在从机上启动同步
    start slave;
    
四、常用命令
1、通过如下命令可以查看当前binlog事件:
    mysql> show binlog events;
2、查看relaylog的事件:
    mysql> show relaylog events;
3、查看slave_relay_log_info与slave_master_info当前的存储方式
    slave_relay_log_info和slave_master_info分别为relaylog-info和master-info信息。relaylog-info和master-info信息可以使用FILE或这TABLE存储。relaylog-info有三种形式,分为为FILE、TABLE、DUMMY。通过relay_log_info_repository和master_info_repository可以得知relaylog-info和master-info是用什么形式存储:
    show variables like 'master_info_repository';
    show variables like 'relay_log_info_repository';
4、windows的mysql数据库默认文件夹位置
    (1)安装目录:C:\Program Files\MySQL\MySQL Server 8.0
    (2)配置、数据目录(默认是隐藏文件):C:\ProgramData\MySQL\MySQL Server 8.0
5、centos7的mysql数据库默认文件夹位置
     配置文件:/etc/my.cnf
6、查看连接重试次数的限制配置
    show variables like 'connection_control%';