Mysql5.6.x版本半同步主从复制的开启方法
介绍
先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制.
主库实际上并不关心从库是否把数据拉完没有,也不关心从库有没有把数据写进硬盘入库,反正数据丢过去,让从库自己慢慢跑,而实际上这也并不影响主库任何使用的情况.
细心的人就会发现,这种情况下,假如主库临时挂了,binlog还没传输完毕,即使是集群也不能保证说这挂了之后的数据一致性,因为你不能排除别人在主库是正常提交的,而从库没有数据的情况.
然后在某个位面的时间上,就有人提出同步复制的概念,意思就是说,只要从库没写入,主库就不返回完成,这个时候即使主库挂了,这也只是一个未完成的事务,从库也不会记录,能保证数据一致性.
看上去,数据一致性是解决了,但是呢,每个事务的延时就增大了,如果是大事务的话,就更惨,这得看网络带宽能不能顶得住,不然延时更低,性能更差.
最后,在mysql5.5之后,半同步就提出来了,意思就是说,每个事务的复制,至少保证一个从库已经收到了binlog,主库才返回事务完成,但不需要理会从库是否写入硬盘.
这样做虽然延时还是有,但是比起完全的同步方式还是好太多,对于数据一致性要求高的情况,牺牲性能来换取一定的价值,是在所难免的.
大家留意上面的数字,
第一部,客户端提交sql语句,
第二部,提交给存储引擎解析并处理数据修改,
第三部,事务在主库处理完毕,处于待完成状态,等待最终完成,
第四部,同时提交给各从库,等待完成,
第五部,从库返回状态给主库,标记已完成,半同步只需要一个从库返回就可以,其他会转成异步
第六部,返回客户端,整个事务已完成.
看上去还是比较不错,主从的数据一致性得到很大的提高,但是延时也不含糊,就是牺牲性能来提高一致性的问题了.
不过我还是得负责任的讲句,在极端的情况下,还是可能会丢一些数据的,所以定期做主从数据校验还是有必要的,例如使用PT工具什么的,至于为什么,这个不仿让大家思考一下,而对于大事务来说,半同步也是比较无力的情况,性能损耗较大.
安装使用
下面来看看如何安装使用半同步,大部分mysql本身并没有预装半同步的组件,需要另外安装,但是一般mysql的包里面会自带so文件,所以只要手动加载一下就可以用了.
安装使用
下面来看看如何安装使用半同步,大部分mysql本身并没有预装半同步的组件,需要另外安装,但是一般mysql的包里面会自带so文件,所以只要手动加载一下就可以用了.
#查找mysql插件目录位置
mysql> show variables like 'plugin_dir';
+---------------+---------------------------------+
| Variable_name | Value |
+---------------+---------------------------------+
| plugin_dir | /roobo/server/mysql/lib/plugin/ |
+---------------+---------------------------------+
1 row in set (0.00 sec)
#查看文件
[root@m2 ~]# cd /roobo/server/mysql/lib/plugin/ [root@m2 plugin]# ll
总用量 1048
-rwxr-xr-x. 1 mysql mysql 16445 5月 8 2017 adt_null.so
-rwxr-xr-x. 1 mysql mysql 25459 5月 8 2017 auth.so
-rwxr-xr-x. 1 mysql mysql 12532 5月 8 2017 auth_socket.so
-rwxr-xr-x. 1 mysql mysql 24544 5月 8 2017 auth_test_plugin.so
-rw-r--r--. 1 mysql mysql 227 5月 8 2017 daemon_example.ini
drwxr-xr-x. 2 mysql mysql 4096 5月 8 2017 debug
-rwxr-xr-x. 1 mysql mysql 38715 5月 8 2017 libdaemon_example.so
-rwxr-xr-x. 1 mysql mysql 17827 5月 8 2017 mypluglib.so
-rwxr-xr-x. 1 mysql mysql 11865 5月 8 2017 mysql_no_login.so
-rwxr-xr-x. 1 mysql mysql 18079 5月 8 2017 qa_auth_client.so
-rwxr-xr-x. 1 mysql mysql 23862 5月 8 2017 qa_auth_interface.so
-rwxr-xr-x. 1 mysql mysql 12934 5月 8 2017 qa_auth_server.so
-rwxr-xr-x. 1 mysql mysql 414708 5月 8 2017 semisync_master.so #有semisync开头的文件,就说明插件安装成功了。
-rwxr-xr-x. 1 mysql mysql 247783 5月 8 2017 semisync_slave.so #有semisync开头的文件,就说明插件安装成功了。
-rwxr-xr-x. 1 mysql mysql 168184 5月 8 2017 validate_password.so
#看到下面两个,就是半同步的组件了,一个是主库组件,一个是从库组件,你可以两个都装上或者只装一个.
semisync_master.so
semisync_slave.so
#下面开始正式安装:
#在主库上执行
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> show plugins;
#看到下面这个就证明成功了
rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL
#从库当然也要做
#然后在从库执行
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> show plugins;
#看到下面这个就证明成功了
rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL
安装完了,就开始准备启动了,
主库很简单,只要设置一下半同步启动就可以了.
mysql> set global rpl_semi_sync_master_enabled = on;
当然,你也可以写到配置文件,不过写到配置文件要重启才生效,而且还要重新加载组件,所以这就没意思了.
然后到从库,slave要重启动IO线程来生效,否则还是异步的方式复制数据。
mysql> set global rpl_semi_sync_slave_enabled = on;
mysql> stop slave IO_THREAD;
mysql> start slave IO_THREAD;
同样你也能写到配置文件,我就不多说了,反正这就启动完毕了.
下面来验证一下是否成功,以下是主库的信息,因为从库很多信息是没有的.
来看看我们能设置些什么关于半同步的参数
mysql> show variables like '%Rpl%';
+------------------------+----------+
| Variable_name | Value |
+------------------------+----------+
| rpl_stop_slave_timeout | 31536000 |
+------------------------+----------+
1 row in set (0.00 sec)
更多详细情况参考:
https://www.cnblogs.com/paul8339/p/8177683.html
https://www.cnblogs.com/abobo/p/4242417.html (备注:这个介绍的更详细)
other:
主从复制参考:
http://www.cnblogs.com/agileai/p/6126823.html
Mysql5.6.x版本半同步主从复制的开启方法的更多相关文章
- 关于Mysql5.6半同步主从复制的开启方法【转】
介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...
- Mysql的ssl主从复制+半同步主从复制
Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...
- MySQL5.7延迟复制半同步复制
MySQL5.7延迟复制半同步复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.延迟复制 1>.什么是延迟复制 延迟复制是指定从库对主库的延迟至少是指定的这个间隔时间 ...
- MySQL主从复制之半同步模式
MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一 ...
- MySQL主从复制之半同步(semi-sync replication)
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 半同步简介 MASTER节点在执行完客户端提交的事务后不是立刻返回结果给客户端,而是等待至少一个SLAVE节点接收并写到r ...
- Mysql半同步复制模式说明及配置示例 - 运维小结
MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...
- MySQL的半同步是什么?
前言 年后在进行腾讯二面的时候,写完算法的后问的第一个问题就是,MySQL的半同步是什么?我当时直接懵了,我以为是问的MySQL的两阶段提交的问题呢?结果确认了一下后不是两阶段提交,然后面试官看我连问 ...
- MySQL-技术专题-MySQL主从架构以及[半同步机制]模式大全
MySQL的主从复制 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的. 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步. 复制的功能不仅有利于构建高 ...
- MySQL 半同步复制+MMM架构
200 ? "200px" : this.width)!important;} --> 介绍 上篇文章介绍了MMM架构的实现方法,但是上篇文章的MMM方案的复制是异步复制,异 ...
随机推荐
- bzoj 1042 DP+容斥原理
我们可以先DP预处理出W[I]代表买I的东西,每种钞票的个数 不做限制的方案数,那么对于每一组数据的限制,我们可以知道 W[S-C[I]*(D[I]+1)]C为面值,D为数量,这个代表第I种钞票一定 ...
- Chrome Capabilities & ChromeOptions
Capabilities & ChromeOptions Chrome Extensions Contributing Downloads Getting started Android Ch ...
- 苹果Swift可为Windows/Android开发软件了
http://www.swifthumb.com/article-189-1.html http://iphone.tgbus.com/news/class/201502/20150211103418 ...
- Kuangbin 带你飞-线段树专题 题解
HDU 1166 敌兵布阵 单调更新区间查询和 #include <map> #include <set> #include <list> #include < ...
- linux用grep查找包含两个关键字的命令
linux用grep查找包含两个关键字的命令 http://zhidao.baidu.com/link?url=VsFxeJXmU7W7hy1UH7eT6QAbUsVz9Ru2ABPuWYHWm4kB ...
- docker从零开始网络(六)Macvlan
使用Macvlan网络 某些应用程序,尤其是遗留应用程序或监视网络流量的应用程序,希望直接连接到物理网络.在这种情况下,您可以使用macvlan网络驱动程序为每个容器的虚拟网络接口分配MAC地址,使其 ...
- [BZOJ1227][SDOI2009]虔诚的墓主人 组合数+树状数组
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 1433 Solved: 672[Submit][Stat ...
- CSS3实现鼠标经过图片时图片放大
在鼠标经过图片时,图片被放大,而且还有个过渡的效果.... <!DOCTYPE html> <html> <head> <link href="cs ...
- HDU 2537 8球胜负(模拟)
/*这是一个模拟题,模拟一种台球的进球过程,并且判定胜负. 对于输入的字符串,如果出现R则红方记1分,如果出现Y则黄方记1分. 最后根据哪一方打进黑球和得分情况判定胜负. 程序说明: 这里给出两个C语 ...
- Codeforces 691C. Exponential notation
题目链接:http://codeforces.com/problemset/problem/691/C 题意: 给你一个浮点数,让你把这个数转化为 aEb 的形式,含义为 a * 10b, 其中 a ...