首页 > mysql > mysql5.5半同步配置实战

mysql5.5半同步配置实战

2012年6月28日 发表评论 阅读评论

前几天在mysql官网下了mysql5.5的白皮书《详解MySQL5.5新特性-性能与扩展》,里面有介绍mysql5.5的新特性的,看到有个地方讲到半同步,以前是需要手动打google的mysql补丁才能使用这个功能,现在5.5的官方版本已经提供了这个功能.

官方白皮书描述如下:

默认情况下,MySQL5.5 的复制功能是异步的,这意味着当谈到数据一致性时,主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binlog)文件中后,无需等待验证更新数据是否已经复制到至少一台拓扑从服务器中,就可以自由处理其它进入的事务处理请求。虽然快,但这也同时带来了很高的风险,如果在主服务器或从服务器端发生故障,会造成主服务器/从服务器数据的不一致,甚至在恢复时造成数据丢失。
MySQL5.5 引入了一种半同步复制功能,该功能可以确保主服务器和访问链中至少一台从服务器之间的数据一致性和冗余。在这种配置结构中,一台主服务器和其许多从服务器都进行了配置,这样在复制拓扑中,至少有一台从服务器在父主服务器进行事务处理前,必须确认更新已经收到并写入了其中继日志(Relay Log)。当出现超时,源主服务器必须暂时切换到异步复制模式重新复制,直到至少有一台设置为半同步复制模式的从服务器及时收到信息。

mysql半同步复制模式

现在由于有新服务器要上线,就配置了mysql5.5的同步,在依照白皮书中介绍的如下配置的时候:

INSTALL PLUGIN ‘rpl_semi_sync_master’ SONAME ‘semisync_master.so’;

结果如下:

mysql> INSTALL PLUGIN ‘rpl_semi_sync_master’ SONAME ‘semisync_master.so’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”rpl_semi_sync_master’ SONAME ‘semisync_master.so” at line 1
mysql>

后来猜测,是不是引号的问题,修改为INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

提示安装成功。

这里,还是提醒大家,对于官方手册自己也要空闲的时候测试下,不要在上线的时候急急忙忙的测试,否则很坑爹的

ps:对于windows,’semisync_master.so’要改为’semisync_master.dll’
配置完之后,运行show global status like ‘%semi%’;

结果如下:

mysql> show global 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 | 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_status ON 显示半同步已经开启,Rpl_semi_sync_master_clients 表示有多少半同步客户点连接上了服务端。

移动设备快速阅读本文:
            请扫描二维码  -->
分类: mysql 标签: ,
  1. 2013年4月10日11:08 | #1

    很好

  1. 本文目前尚无任何 trackbacks 和 pingbacks.