在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
环境介绍: Ubuntu Server 16.04.2+MySQL 5.7.17 Community Server (GPL) MySQL安装 通过APT的方式安装,官方指导文档地址: 1、下载mysql-apt-config_0.8.3-1_all.deb 2、安装deb A Quick Guide to Using the MySQL APT Repository: >sudo dpkg -i mysql-apt-config_0.8.3-1_all.deb 3、更新源 >sudo apt-get update 4、安装MySQL >sudo apt-get install mysql-server 5、根据提示选择安装和设置密码。 另外,还需要对其进行设置,绑定的IP和打开防火墙的3306端口,这里主要是学习MySQL半同步复制,对MySQL的安装不做多解释,如果疑问欢迎留言。 MySQL半同步复制介绍 (1)默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能, 主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完毕,这一过程,也就意味着有可能出现当主服务器或从服务器端发生故障的时候,有可能从服务器没有接收到主服务器发送过来的binlog日志,这就会造成主服务器和从服务器的数据不一致,甚至在恢复时造成数据的丢失。 注意: 半同步复制模式必须在主服务器和从服务器端同时开启,否则主服务器默认使用异步复制模式。 (2)异步复制案例: MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解 (3)为了解决上述可能发生的错误,MySQL 5.5 引入了一种半同步复制模式。该模式可以确保从服务器接收完主服务器发送的 (4)当出现超时情况是,主服务器会暂时切换到异步复制模式,直到至少有一个从服务器从及时收到信息为止。 (5)中继日志的自我修复: 从MySQL 5.5.X 版本开始,增加了 (6)半同步复制与异步复制的切换: 半同步复制的工作原理就是当slave从库IO_Thread线程将binlog日志接收完毕之后,要给master主库一个确认,如果 MySQL半同步复制配置 首先,需要安装两个MySQL,这里是:
原始数据库的模样如下:
一、Master配置 (1)在Master数据库安装半同步复制插件: mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; (2)设置Master上开启半同步复制: mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1; (3)修改 上图指出了MySQL配置的文件路径。 [mysqld] log-bin=mysql-bin server_id = 10086 server_id_bits = 33 rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000 (4)修改MySQL server-uuid配置文件: root@xuliugen:/var/lib/mysql# pwd /var/lib/mysql 修改 [auto] server-uuid=8d90feb7-1a88-11e7-9d11-000c298a546f (5)查看配置是否成功: mysql>SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%'; (6)参数说明: 1、 2、 3、 4、 可以看出,在配置Master的时候,只设置了1,其他的都采取的默认设置。 二、Slave配置 (1)在Slave数据库安装半同步复制插件: mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; (2)设置Slave上开启半同步复制: mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1; (3)修改 [mysqld] log-bin=mysql-bin server_id=10089 server_id_bits = 32 rpl_semi_sync_slave_enabled = 1 (4)修改MySQL server-uuid配置文件: root@xuliugen:/var/lib/mysql# pwd /var/lib/mysql 修改 [auto] server-uuid=8d90feb7-1a88-11e7-9d11-000c298a123f 确保和Master的 (5)查看配置是否成功: mysql>SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%'; (6)参数说明: 1、 2、 三、为Slave指定Master (1)命令行模式下重启Master root@xuliugen:~# service mysql restart (2)命令行模式下重启Slave root@xuliugen:~# service mysql restart (3)查看Master状态: mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000004 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.02 sec) mysql> 注意: File: mysql-bin.000004 Position: 154 很重要,后边需要使用! (4)为Slave指定Master: 1、首先关闭Slave的半同步复制 mysql> stop slave; Query OK, 0 rows affected (0.01 sec) 2、为Slave指定Master mysql>change master to master_host='192.168.1.227',master_user='root',master_password='123456',master_log_file='mysql-bin.000004', master_log_pos=154; Query OK, 0 rows affected, 2 warnings (0.02 sec) 其中: master_host='192.168.1.227',Master主库IP地址 master_user='root',Master主库数据库账户 master_password='123456',Master主库数据库root用户密码 master_log_file='mysql-bin.000004', Master主库binlog文件 master_log_pos=154,Master主库binlog文件position 注意: 在MySQL 5.6版本以后,在进行主从复制的时候可以使用GTID的方式,无需再找binglog和pos点,只需要知道主服务器的IP、端口、账户、密码就可以实现自动找点同步,开启GTID功能的时候就不用再使用binlog和pos了。详细信息,请查阅相关资料进行学习。 3、开启Slave的半同步复制 mysql> start slave; Query OK, 0 rows affected (0.01 sec) 四、测试半同步复制是否成功 五、如何优雅的关闭Slave同步信息 在某些时候,一台服务器不再用来作为Slave,那么我们就需要清楚他的同步信息,一般会使用: mysql> stop slave #先关闭 mysql> reset slave #清楚Slave同步信息 但是,这样再通过show master status\G显示的时候: mysql> show master status\G; 还是会出现同步的信息,这是因为执行了 如何让其清除的更干净哪?请使用下边的命令: mysql> stop slave #先关闭 mysql> reset slave all#清楚Slave同步信息 再次执行 六、部分异常场景模拟 (1)半同步复制与异步复制的切换: 上述已经介绍了为什么会出现半同步复制到异步复制的切换,那么现在模拟一个场景进行演示。 场景如下: 1、关闭slave同步,停止IO接收binlog日志 mysql> stop slave; 该操作就将IO线程关闭,等待10秒之后,如果master未收到来自slave的确认信息,就会切换到异步复制模式: 上图看到slave已经关闭了半同步复制模式,再次开启: mysql> start slave; 此时,已经还原到半同步复制模式了。 (2)同步报错案例演示: 我们,首先从slave库上删除数据库表
此时,查看半同步状态: 是开启的,因此没有将半同步复制模式转化为异步复制模式,可以看出半同步复制模式跟 也就是说,slave从库接收完二进制日志后给master主库一个确认,但是他不会管 六、半同步复制模式性能分析及优缺点 在通常情况下,由于异步复制模式不需要等待从服务器的响应,其速度较半同步复制模式要快,吞吐率要高,在数据进行更新、插入、删除的时候其速度要高于半同步复制模式。但是,半同步复制模式有利于数据的一致性,对于一些数据一致性要求较高的,网络波动较小的可以采用半同步复制模式。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论