首页 / MYSQL / MySQL学习笔记12半同步复制
MySQL学习笔记12半同步复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL学习笔记12半同步复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6395字,纯文字阅读大概需要10分钟。
内容图文
MySQL使用异步复制,即master上的事务执行与slave上的复制操作不需要同步,master不需要等待slave上的复制线程将Binary Log接收完毕即可执行其它事务。半同步复制时,master上的事务执行与slave上的复制操作需要在某个步骤上进行同步,master需要等待slave上的复制线程接收完毕Binary Log。
异步复制的工作效率比较高,但是在特定条件下,有可能造成master和slave的数据不一致。半同步复制可以降低数据不一致的概率。半同步复制仅支持单源复制,不支持多源复制。
1.1.2. 部署半同步复制
建立半同步复制的环境,在已经建立好master-slave复制环境的情况下,还需要执行以下操作。
(1)在master上安装半同步复制插件。
mysql> show variables like ‘%semi%‘;
Empty set (0.02 sec)
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;
Query OK, 0 rows affected (0.05 sec)
mysql> show variables like ‘%semi%‘;
+-------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled | OFF |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)
其中 rpl_semi_sync_master_timeout变量控制半同步的超时时间,单位为毫秒,默认为10000,即10秒钟。
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
-> FROM INFORMATION_SCHEMA.PLUGINS
-> WHERE PLUGIN_NAME LIKE ‘%semi%‘;
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
(2)在slave上安装半同步复制插件。
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;
Query OK, 0 rows affected (0.03 sec)
mysql> show variables like ‘%semi%‘;
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
2 rows in set (0.00 sec)
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
-> FROM INFORMATION_SCHEMA.PLUGINS
-> WHERE PLUGIN_NAME LIKE ‘%semi%‘;
+---------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+---------------------+---------------+
| rpl_semi_sync_slave | ACTIVE |
+---------------------+---------------+
1 row in set (0.00 sec)
(3)在master上启用半同步复制。
在master上的MySQL配置文件中:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
【此处省略了异步复制必须的其它配置】
可以使用SQL命令动态启用半同步复制。
mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)
(4)在slave上启用半同步复制。
在slave上的MySQL配置文件中:
[mysqld]
rpl_semi_sync_slave_enabled=1
【此处省略了异步复制必须的其它配置】
可以使用SQL命令动态启用半同步复制。
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
至此半同步复制环境建立成功。
1.1.3. 监控半同步复制的状态
(1)查看master上的半同步复制。
mysql> SHOW VARIABLES LIKE ‘rpl_semi_sync%‘;
+-------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.01 sec)
mysql> SHOW STATUS LIKE ‘Rpl_semi_sync%‘;
+--------------------------------------------+-------+
| 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 | 0 |
| 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 | 0 |
| Rpl_semi_sync_master_tx_wait_time | 0 |
| Rpl_semi_sync_master_tx_waits | 0 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 0 |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)
其中,Rpl_semi_sync_master_clients表示通过半同步复制已经连接上的slave的数量。
Rpl_semi_sync_master_yes_tx表示已经成功发送了半同步ACK的slave的数量。
Rpl_semi_sync_master_no_tx表示没有成功发送半同步ACK的slave的数量。
(2)查看slave上的半同步复制状态。
mysql> SHOW VARIABLES LIKE ‘rpl_semi_sync%‘;
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
2 rows in set (0.00 sec)
mysql> SHOW STATUS LIKE ‘Rpl_semi_sync%‘;
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
1 row in set (0.00 sec)
其中,Rpl_semi_sync_slave_status表示slave上的半同步复制已经成功启动了。
MySQL学习笔记12半同步复制
标签:failure 连接 slave 半同步 事务 select bsp 时间 异步
本文系统来源:http://www.cnblogs.com/coe2coe/p/7439380.html
内容总结
以上是互联网集市为您收集整理的MySQL学习笔记12半同步复制全部内容,希望文章能够帮你解决MySQL学习笔记12半同步复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。