温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql主从同步机制原理

发布时间:2021-08-20 23:20:39 来源:亿速云 阅读:137 作者:chen 栏目:MySQL数据库

本篇内容主要讲解“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主从同步机制原理”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI