主从设备的同步(基于binlog和gtid实现同步)

一、原理

1、MySQL将数据变化记录到二进制日志中;

2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中;

3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

以便:

灾备

数据分布

负载平衡

读写分离

提高并发能力

二、工作过程

1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave

2、从库的IO线程和主库的dump线程建立连接。

3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。

4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。

5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中

6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

方法一:基于binlog日志实现主从同步

前提:2台设备的mysql版本最好相同

1.主设备的配置

(1.配置 /etc/my.cnf.d/mysql-server.cnf子配置文件并重启mysql服务。

bash 复制代码
[root@localhost ~]#vim /etc/my.cnf.d/mysql.server.cnf----先配
[root@localhost ~]#systemctl restart mysqld---后重启

(2. 授权用户

bash 复制代码
[root@localhost ~]# systemctl restart mysqld

2. 从设备配置

(1.配置 /etc/my.cnf.d/mysql-server.cnf子配置文件并重启mysql服务。

bash 复制代码
[root@localhost ~]#vim /etc/my.cnf.d/mysql.server.cnf----先配
[root@localhost ~]#systemctl restart mysqld---后重启

(2.关闭从设备---stop slave 并 配置参数--change master to

(3.开启从设备并检查slave状态

注:出现上述情况可能是因为

1.配置子配置文件是没有重启

2.防火墙和seliunx的原因

正确的slave状态应为双'yes':

(4.测试

在主设备山上进行相应操作,到从设备上观察。

方法二:基于gtid实现主从同步

在binlog方法的文件配置基础上开启gtid

开启gtid

gtid_mode=ON

enforce-gtid-consistency=ON

1.主设备配置
(1.配置 /etc/my.cnf.d/mysql-server.cnf子配置文件并重启mysql服务。
bash 复制代码
[root@localhost ~]#vim /etc/my.cnf.d/mysql.server.cnf----先配
[root@localhost ~]#systemctl restart mysqld---后重启

查看gtid是否开启

2.从设备配置

(1.配置 /etc/my.cnf.d/mysql-server.cnf子配置文件并重启mysql服务。

bash 复制代码
[root@localhost ~]#vim /etc/my.cnf.d/mysql.server.cnf----先配
[root@localhost ~]#systemctl restart mysqld---后重启

(2.从设备参数配置 --change master to

sql 复制代码
mysql> change master to 
     >     MASTER_HOST = '192.168.63.11',
     >     MASTER_PORT = port,
     >     MASTER_USER = 'rep',
     >     MASTER_PASSWORD = '123456',
     >     MASTER_AUTO_POSITION = 1;

或者

sql 复制代码
mysql> CHANGE REPLICATION SOURCE TO
     >     SOURCE_HOST = '192.168.63.11',
     >     SOURCE_PORT = port,------可选项,若端口改变一定要加
     >     SOURCE_USER = 'rep',
     >     SOURCE_PASSWORD = '1213456',
     >     SOURCE_AUTO_POSITION = 1;
(3.启动从设备并观察状态和测试
sql 复制代码
mysql> START SLAVE;
相关推荐
中微极客9 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
吠品9 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
XMAIPC_Robot9 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky10 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客10 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
Urbano10 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化
骑上单车去旅行11 小时前
MD5校验对比脚本
linux·服务器·windows
平生幻11 小时前
Linux 常用命令
linux
期待着201311 小时前
docker 安装 ,在centos7.9
运维·docker·容器
踏月的造梦星球12 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库