Mysql异步复制、同步复制、半同步复制的区别
这篇文章主要介绍“Mysql异步复制、同步复制、半同步复制的区别”,在日常操作中,相信很多人在Mysql异步复制、同步复制、半同步复制的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql异步复制、同步复制、半同步复制的区别”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、异步复制、同步复制、半同步复制的区别
异步复制:在主从架构中假如当客户端发送了一条UPDATE语句,主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不管从服务器是否已经同步到从服务器的relaylog中,性能是最好的,缺点主服务器宕机,容易造成数据不一致,Mysql中默认使用的就是异步复制
同步复制:当主服务器完成更新,并且同步到所有从服务器才会返回成功结果,效率低,影响性能
半同步复制:将两种方法折中,当主服务器完成更新,至少有一个从服务器接收到并完成更新,主服务器就返回成功
二、具体实现
半同步至少需要3台主机,2台和异步就没有区别了,需要使用Mysql5.5以上版本,半同复制是通过插件Mysql包中的插件实现的
1、搭建主从复制
主服务器
vi/etc/my.cnf[mysqld]datadir=/var/lib/mysqlserver-id=57#添加唯一idlog-bin#开启二进制日志
创建账号MariaDB[(none)]>grantreplicationslaveon*.*torepluser@'192.168.12.%'identifiedby'12345';查看当前二进制日志位置showmasterlogs;
从服务器配置方法类似,不重复写了
vi/etc/my.cnf[mysqld]datadir=/var/lib/mysqlserver-id=27#添加唯一idlog-bin#开启二进制日志
2、半同步复制配置
主服务器
MariaDB[(none)]>showplugins;#可以查看安装的插件
安装主节点的插件
MariaDB[(none)]>INSTALLPLUGINrpl_semi_sync_masterSONAME'semisync_master.so';#安装主节点的插件MariaDB[(none)]>SETGLOBALrpl_semi_sync_master_enabled=1;#启用MariaDB[(none)]>SETGLOBALrpl_semi_sync_master_timeout=10000;#10000ms不同步,主服务器直接回应客户端,默认10000MariaDB[(none)]>SHOWGLOBALVARIABLESLIKE'%semi%';#查看主节点状态
MariaDB[(none)]>SHOWGLOBALSTATUSLIKE'%semi%';#查看状态变量
二台从服务器配置一样
MariaDB[(none)]>INSTALLPLUGINrpl_semi_sync_slaveSONAME'semisync_slave.so';#安装从节点插件MariaDB[(none)]>SETGLOBALrpl_semi_sync_slave_enabled=1;#启用MariaDB[(none)]>SHOWGLOBALVARIABLESLIKE'%semi%';MariaDB[(none)]>stopslave;#从节点配置过需要重启线程才生效MariaDB[(none)]>startslave;#启动后在主服务器状态变量中可以看到一个从节点
三、验证
在主服务器上创建数据库,二个从节点都可以同步
停止其中一个从服务器的Mariadb服务。同步不受影响
当二个从服务器服务都关闭,主服务器会等到rpl_semi_sync_master_timeout时间到了之后再执行
到此,关于“Mysql异步复制、同步复制、半同步复制的区别”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。