当前位置: 首页 > article >正文

主从设备的同步(基于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服务。

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

                (2. 授权用户    

[root@localhost ~]# systemctl restart mysqld

        2. 从设备配置

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

[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服务。
[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服务。

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

               

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

mysql> change master to 
     >     MASTER_HOST = '192.168.63.11',
     >     MASTER_PORT = port,
     >     MASTER_USER = 'rep',
     >     MASTER_PASSWORD = '123456',
     >     MASTER_AUTO_POSITION = 1;


或者

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.启动从设备并观察状态和测试
mysql> START SLAVE;


http://www.kler.cn/a/510856.html

相关文章:

  • go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
  • 【QT用户登录与界面跳转】
  • vscode离线安装插件--终极解决方案
  • 【C++】面试题整理(未完待续)
  • Word2Vec中的CBOW模型训练原理详细解析
  • HTML应用指南:利用GET请求获取全国特斯拉充电桩位置
  • TCP协议与TCP SYN Flood攻击
  • 【专题二 二叉树中的深搜】814. 二叉树剪枝
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • 21.1、网络设备安全概述
  • Ubuntu22.04安装paddle GPU版本
  • Linux| ubuntu系统入门篇
  • 解决Spring Boot中Druid连接池“discard long time none received connection“警告
  • 分布式 ID 生成策略:应用场景与 ShardingSphere 实现
  • EPLAN 2024-电机保护开关符号,辅助触点
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(13)网格单元分类、物理场与自由度概念
  • http://noi.openjudge.cn/——4.7算法之搜索——【169:The Buses】
  • 《王者荣耀》皮肤爬虫源码
  • 【漫话机器学习系列】050.epoch(迭代轮数)
  • 数字艺术类专业人才供需数据获取和分析研究
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(6)(并行相关Hint)
  • 接口测试Day10-测试数据封装(参数化-数据驱动)
  • 【氮化镓】香港科技大学陈Kevin-单片集成GaN比较器
  • TensorFlow深度学习实战(5)——神经网络性能优化技术详解
  • Linux磁盘空间不足,12个详细的排查方法
  • 【LeetCode: 215. 数组中的第K个最大元素 + 快速选择排序】