ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql5.5.9半同步复制功能部署

mysql5.5.9半同步复制功能部署

原创 Linux操作系统 作者:babyyellow 时间:2011-02-18 11:57:26 0 删除 编辑
原创文章,转载请注明出处:


1.mysql5.5.9 半同步复制功能:


    mysql5.5 版本支持半同步复制功能(Semisynchronous Replication),但

还不是原生的支持,是通过plugin来支持的,并且默认是没有安装这个插件的。

    不论是二进制发布的,还是自己源代码编译的,都会默认生成这个插件,
一个是针对master 的一个是针对slave的,在使用之前需要先安装这俩plugins


首先先检查 mysql是否支持动态添加插件,

mysql.sock@mysql> select @@have_dynamic_loading ;                      
+------------------------+
| @@have_dynamic_loading |
+------------------------+
| YES                    |
+------------------------+
1 row in set (0.00 sec)

支持动态增减插件,

添加插件:


mysql.sock@(none)> install plugin rpl_semi_sync_master soname

'semisync_master.so' ;
Query OK, 0 rows affected (0.00 sec)


mysql.sock@(none)> install plugin rpl_semi_sync_slave soname

'semisync_slave.so';
Query OK, 0 rows affected (0.00 sec)


添加完插件后,系统会默认的增加了几个系统参数
mysql.sock@(none)> show global variables like 'rpl_semi_sync%';
+------------------------------------+-------+
| 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_no_slave | ON    |
| rpl_semi_sync_slave_enabled        | OFF   |
| rpl_semi_sync_slave_trace_level    | 32    |
+------------------------------------+-------+
6 rows in set (0.00 sec)

这些参数是可以动态修改的

rpl_semi_sync_master_enabled  :
启动master 支持半同步复制。

 rpl_semi_sync_master_timeout  :
主库等待半同步复制信息返回的超时间隔,默认10秒

rpl_semi_sync_master_trace_level  :
监控等级:
1 = general level (for example, time function failures)

16 = detail level (more verbose information)

32 = net wait level (more information about network waits)

64 = function level (information about function entry and exit)


rpl_semi_sync_master_wait_no_slave :

是否允许master 每个事物提交后都要等待slave 的receipt信号。
默认为on ,每一个事务都会等待,如果slave当掉后,当slave追赶上master的日志时

,可以自动的切换为半同步方式,如果为off,则slave追赶上后,也不会彩玉半同步的

方式复制了,需要手工发动。

rpl_semi_sync_slave_enabled  :
启动slave 支持半同步复制。

rpl_semi_sync_slave_trace_level  :
监控等级,同 上面的rpl_semi_sync_master_trace_leve。




相应的系统的状态变量:

mysql.sock@mysql> show global status like 'rpl_semi_sync%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 902   |
| Rpl_semi_sync_master_net_wait_time         | 902   |
| Rpl_semi_sync_master_net_waits             | 1     |
| 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      | 501   |
| Rpl_semi_sync_master_tx_wait_time          | 501   |
| Rpl_semi_sync_master_tx_waits              | 1     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 1     |
| Rpl_semi_sync_slave_status                 | OFF   |
+--------------------------------------------+-------+
15 rows in set (0.00 sec)


 Rpl_semi_sync_master_clients   :
记录支持半同步的slave的个数。

Rpl_semi_sync_master_net_avg_wait_time :
master 等待slave 回复的平均等待时间。 单位毫秒.

| Rpl_semi_sync_master_net_wait_time :
master 总的等待时间。

Rpl_semi_sync_master_net_waits :
master 等待slave 回复的的总的等待次数。

Rpl_semi_sync_master_no_times :
master 关闭半同步复制的次数。

Rpl_semi_sync_master_no_tx :
master 没有收到slave的回复而提交的次数,(应该可以理解为master 等待超时的次

数)

Rpl_semi_sync_master_status :
标记master现在是否是半同步复制状态。

Rpl_semi_sync_master_timefunc_failures :
The number of times the master failed when calling time functions such as

gettimeofday().

Rpl_semi_sync_master_tx_avg_wait_time :
master 花在每个事务上的平均等待时间。

Rpl_semi_sync_master_tx_wait_time :
master 总的等待次数。


Rpl_semi_sync_master_wait_pos_backtraverse:
我理解的意思就是后来的先到了,而先来的还没有到的次数。
The total number of times the master waited for an event with binary

coordinates lower than events waited for previously. This can occur when

the order in which transactions start waiting for a reply is different from

the order in which their binary log events are written.


Rpl_semi_sync_master_wait_sessions:
当前有多少个session 因为slave 的回复而造成等待。



Rpl_semi_sync_master_yes_tx :
master 成功接收到slave的回复的次数。


Rpl_semi_sync_slave_status :
标记slave 是否在半同步状态。



========================================================
配置半同步的步骤就很简单了:


1.先按照我们一般的配置异步复制的方式 建立好复制。


2. 启动异步方式复制。

3.当slave追赶上master的状态时,停止slave :

4. 修改主从库的半同步的参数:
 
    主库执行:
    set global rpl_semi_master_enabled=1;

    set global rpl_semi_sync_master_timeout=1000; 

    从库执行 ;
    set global rpl_semi_slave_enabled=1;

5. 从库启动slave:

    start slave;


6.查看参数,根据复制的状态调整global rpl_semi_sync_master_timeout的值。





 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-687487/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 【转】慢性咽炎
请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。

注册时间:2010-12-02

  • 博文量
    252
  • 访问量
    1490910