文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql 半同步复制

2024-04-02 19:55

关注

一.半同步复制
半同步复制特点
1. 与传统的异步复制相比,半同步复制在多个Slave节点中会选取一个节点进行半同步复制。也就是说,当Master提交一个事务的时候,在这个半同步复制的Slave端返回一个同步完成的Ack包之后,服务器才会向用户返回事务提交成功,而其他的节点则是采用传统的异步复制方式进行同步。
2. 半同步是复制是基于异步复制之上进行的,也就是说配置半同步复制之前需要先配置到异步复制。
3. 半同步复制可以保证在主节点发生故障的时候,总有一个节点的数据与主节点一样。这样在进行切换的时候,可以更加快速地把这个Slave节点设置成主节点来使用。

5.7mysql 半同步复制

5.6
mysql 半同步复制

半同步复制性能
- 半同步复制比异步复制性能低1/3
- 模式after_sync 比 after_commit性能要高

二.半同步复制安装条件
1.必须是MySQL5.5或者以上
2.MySQL必须有自动加载功能,即have_dynamic_loading变量为YES
mysql> show variables like 'have_dynamic_loading';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
3.主从复制已经配置好(异步复制)

三.配置
1.设置半同步模式(主库,5.7为默认值)
SET rpl_semi_sync_master_wait_point= AFTER_SYNC;

2.加载插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';(主库)
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';(从库)

show plugins;(确认查看)

3.启动半同步复制
主库
SET GLOBAL rpl_semi_sync_master_enabled = 1;
从库
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
以上的启动方式是在命令行操作,也可写在配置文件中。
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
rpl_semi_sync_master_wait_point = AFTER_SYNC or AFTER_COMMIT
rpl_semi_sync_master_wait_for_slave_count = 1

重启从服务器IO线程,手动将异步模式切换为半同步模式。重启后,slave会在master上注册为半同步复制的slave角色。
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;

4.确认半同步复制运行状态
主库
mysql> show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | ON    |
+-----------------------------+-------+
从库
mysql> show status like 'Rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+

5.半同步复制相关参数
主库
Rpl_semi_sync_master_status:指示主服务器使用的是异步复制模式,还是半同步复制模式。
Rpl_semi_sync_master_clients:显示有多少个从服务器配置成了半同步复制模式。
Rpl_semi_sync_master_yes_tx:显示从服务器确认的成功提交数量。
Rpl_semi_sync_master_no_tx:显示从服务器确认的不成功提交数量。
Rpl_semi_sync_master_timeout=1000默认1000毫秒,即10秒超时,将切换为异步复制
从库
Rpl_semi_sync_slave_status表示从服务器开启半同步复制

6.测试
模拟半同步复制slave server宕机
- 关闭半同步slave server
- 关闭后主库进行查看未发生变化
mysql> show status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 2     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 5754  |
| Rpl_semi_sync_master_tx_wait_time          | 11509 |
| Rpl_semi_sync_master_tx_waits              | 2     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 2     |
+--------------------------------------------+-------+
- 主库执行事务,等待10秒
mysql> delete from wwj.t3 where idt3=2;
Query OK, 1 row affected (10.03 sec)
- 再次查看
mysql> show status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 3     |
| Rpl_semi_sync_master_no_times              | 1     |
| Rpl_semi_sync_master_no_tx                 | 1     |
| Rpl_semi_sync_master_status                | OFF   |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 5754  |
| Rpl_semi_sync_master_tx_wait_time          | 11509 |
| Rpl_semi_sync_master_tx_waits              | 2     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 2     |
+--------------------------------------------+-------+
- 重新开启semi slave,半同步重新开启。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯