加入收藏 | 设为首页 | 会员中心 | 我要投稿 洛阳站长网 (https://www.0379zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql主从等步机制原理

发布时间:2022-01-19 14:02:01 所属栏目:MySql教程 来源:互联网
导读:本篇内容主要讲解mysql主从同步机制原理,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql主从同步机制原理吧! 1、binlog+pos同步(默认为异步) 从服务器通过IO进程读取主库的binlog,写入到relay_log中,
      本篇内容主要讲解“mysql主从同步机制原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql主从同步机制原理”吧!
 
1、binlog+pos同步(默认为异步)
 
     从服务器通过IO进程读取主库的binlog,写入到relay_log中,
 
     从服务器通过sql running进程读取从库的relay_log,并写入到从库的bin_Log实现同步
 
我们生产一般使用row模式,因为有些函数在使用mix和state模式可能会报错。
 
2、半同步(5.5开始)
 
半同步就是就是用户向mysql写入数据,先写入到主库,然后生成binlog日志。主库等待从库来取binlog日志,如果从库超过10秒没有来获取binlog日志。主库自动转换为异步,以后用户写入数据生成binlog日志,等待用户自己来取,没有取到主库也不在管理。
 
介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。
 
在没有指明的情况下,默认都是异步复制。
 
3、GTID同步(5.6.10开始)
 
使用UUID+事务ID作为全局事物标识,UUID为每台机器的标识符,事务ID记录最新的事务,不在使用binlog+pos开启复制。而是使用master_auto_postion=1的方式自动匹配GTID断点进行复制。
 
4、group replication(5.7.17开始)
 
基于传统异步复制和半同步复制的缺陷——数据的一致性问题无法保证,MySQL官方在5.7.17版本正式推出组复制,也就是MGR。
 
由若干个节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点(N / 2 + 1)决议并通过,才能得以提交。由3个节点组成一个复制组,Consensus层为一致性协议层,在事务提交过程中,发生组间通讯,由2个节点决议(certify)通过这个事务,事务才能够最终得以提交并响应。
 
半同步的开启方法和前提条件:
 
要想使用半同步复制,必须满足以下几个条件:
 
1. MySQL 5.5及以上版本
 
2. 变量have_dynamic_loading为YES
 
3. 异步复制已经存在
 
1、首先加载插件,主从分别安装插件
 
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
 
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
 
2、查看插件是否安装成功。
 
1、show plugins;
 
rpl_semi_sync_master       | ACTIVE   | REPLICATION        | semisync_master.so | GPL
 
2、mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';
 
+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+
1 row in set (0.00 sec)
 
3、启动半同步复制(也可以写在配置文件中)
 
SET GLOBAL rpl_semi_sync_master_enabled = 1;
 
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
 
4、重启从上的IO线程
 
mysql> STOP SLAVE IO_THREAD;
 
mysql> START SLAVE IO_THREAD;
 
5、检查半同步是否正确运行
 
mysql> show status like 'Rpl_semi_sync_master_status';
 
mysql> show status like 'Rpl_semi_sync_slave_status';
 
均显示为ON则正常启动。
 
到此,相信大家对“mysql主从同步机制原理”有了更深的了解,不妨来实际操作一番吧!

(编辑:洛阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!