MySQL数据库半同步复制

半同步复制,是有一个从节点或者一部分从节点与主节点之间是同步复制的,其他的从节点仍是异步复制

半同步复制是谷歌公司贡献给MySQL的一个插件,默认在MySQL中没有此插件,所以要实现主从的版同步复制需要安装此插件

1
2
rpm -ql mariadb-server|  grep  semi
#找到需要安装的插件,以so结尾
1
2
SHOW PLUGINS;
#查看当前支持的插件,此处也能看到myisam和innodb也是插件类型

下面开始介绍如何配置主从版同步复制:


1、创建传统的主从复制功能的mysql,请参考‘MySQL数据库主从复制’一文(http://panpangao.blog.51cto.com/10624093/1981418  )

2、在主节点安装半同步复制插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
INSTALL PLUGIN rpl_semi_sync_master SONAME  'semisync_master' // 格式都是固定的不可随意修改
SHOW GLOBAL VARIABLES LIKE  'rpl_semi%' ;     // 查看主节点的半同步复制功能,此时尚未开启
SET GLOBAL rpl_semi_sync_master_enabled=ON;   // 开启
 
 
SHOW GLOBAL STATUS LIKE  '%rpl%' ;             // 查看状态,关键是查看 Rpl_semi_sync_master_clients数量,此时尚未配置从节点所以是0
+--------------------------------------------+-------------+
| Variable_name                              | Value       |
+--------------------------------------------+-------------+
| Rpl_semi_sync_master_clients               | 0           |
| 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           |
| Rpl_status                                 | AUTH_MASTER |
+--------------------------------------------+-------------+
15 rows  in  set  (0.00 sec)


3、在从节点安装半同步复制插件

1
2
3
4
5
6
7
8
9
INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave' ;
SET GLOBAL rpl_semi_sync_slave_enabled=ON;
SHOW GLOBAL VARIABLES LIKE  'rpl_semisync%' ;    
SHOW GLOBAL VARIABLES LIKE  '%rpl%' ;            // 这时从的功能是开启的
 
SHOW GLOBAL STATUS LIKE  '%rpl%' ;    // 但状态是OFF,因为从节点此时的IO线程未重启
 
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;   // 重启从的IO线程

4、测试

此时在主节点查看clients的数量就会变成1了,因为已经加入了一个从节点;

在主节点创建数据库、表,都会同步到从节点上

1
2
SHOW GLOBAL STATUS LIKE  '%rpl%' ;  
// 此时显示的信息就会有变化,主节点等待时长、平均等待时长、等待次数等信息,具体都可以从字面意思看出


本实验到此结束


本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1981515


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值