介绍

先了解一下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

转载于:https://www.cnblogs.com/nulige/p/9243803.html

Mysql5.6.x版本半同步主从复制的开启方法相关推荐

  1. mysql5.6.37 主从同步_Mysql5.6.x版本半同步主从复制的开启方法

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  2. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  3. mysql半同步 rpo_PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)-阿里云开发者社区...

    标签 PostgreSQL , 同步 , 半同步 , 流复制 背景 两节点HA架构,如何做到跨机房RPO=0(可靠性维度)?同时RTO可控(可用性维度)? 半同步是一个不错的选择. 1.当只挂掉一个节 ...

  4. mysql复制多行_mysql中的复制方式总结(半同步复制,并行复制,多源复制)

    一.MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志b ...

  5. MySQL 8 复制(二)——半同步复制

    目录 一.简介 二.性能提升 1. 支持发送二进制日志事件和接收ACK的异步化 2. 控制主库接收确认反馈从库的数量 3. 二进制日志互斥锁改进 三.数据一致性 1. 源码剖析 2. rpl_semi ...

  6. 腾讯二面:MySQL的半同步是什么?

    前言 年后在进行腾讯二面的时候,写完算法的后问的第一个问题就是,MySQL的半同步是什么?我当时直接懵了,我以为是问的MySQL的两阶段提交的问题呢?结果确认了一下后不是两阶段提交,然后面试官看我连问 ...

  7. MySQL双主(master-master)+半同步(Semisync Replication)

    环境: 主机名 主机IP 操作系统 MySQL版本 mysqlA 172.16.4.235 CentOS 6.5 2.6.32-431.el6.x86_64 mysql-community-serve ...

  8. MySQL 5.7 深度解析: 半同步复制技术

    复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史. MySQL的复制分为四种: 普通的replication,异步同步. 搭建简单,使用非常广泛,从mysql诞生之初,就产生了 ...

  9. mysql确认半同步命令_怎么判断mysql是否是半同步复制

    AFTER_COMMIT(5.6默认值) master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务.master等待slave 反馈收到relay ...

最新文章

  1. Apache配置代理服务器的方法(2)
  2. win10共享打印机怎么设置_小编为你叙述 win10系统网络共享理光打印机的设置方法的技巧介绍 -win10使用教程...
  3. 常规操作中浏览器缓存检测与服务器请求机制总结
  4. ZOJ 1295——Reverse Text
  5. C# 序列化与反序列化json
  6. IMG图片和文字同一行显示,图片和文字居中显示
  7. ACM_基础知识(二)
  8. 压缩数据成JPG到内存-windows
  9. cefsharp winform 页面里的单击事件不触发_事件详解C 键盘事件及事件流
  10. linux卸载cognos,在Linux上实战安装Cognos
  11. 【信息学奥赛一本通】题解目录
  12. 计算机网络管理员是技能培训吗,计算机网络管理员(路由与交换) 专业简介
  13. docker swarm 部署 sentry9.1.2
  14. reviewboard使用 与原理
  15. 【图形学】我理解的伽马校正(Gamma Correction)
  16. 2020 dns排名_2020年中国最快的dns_动漫台
  17. 《剑破武林》用户注册协议
  18. Beaglebone Black–I2C 接 BMP280 获取当前温度
  19. 线程学习(13)-偏向锁
  20. java代码设置路由

热门文章

  1. java quartz
  2. mybatis SqlMapConfig.xml environments
  3. pytorch 创建神经网络
  4. Itsdangerous应用
  5. 27 Server Sockets
  6. Python Logging Handler
  7. 1.10 梯度消失与梯度爆炸
  8. 华为云 - 公有云产品 - OBS计费说明
  9. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
  10. 梅创社c语言答案,c语言程序设计第2版) 教学课件 作者 梅创社答案 第四章答案.docx...