日期:2014-05-16  浏览次数:20781 次

MySQL 5.5 Master/Slave 配置

??????? 在MySQL5.5版本中,引入了半同步复制模式(Semi-synchronous Replication)能够成功避免上述数据丢失的隐患。在这种模式下:master会等到binlog成功传送并写入至少一个slave的delay log之后才会提交,否则一直等待,直到timeout(默认10s)。当出现timeout的时候,master会自动切换半同步为异步,直到至少有一 个slave成功收到并发送Acknowledge,master会再切换回半同步模式。结合这个新功能,我们可以做到,在允许损失一定的事务吞吐量的前 提下来保证同步数据的绝对安全,因为当你设置timeout为一个足够大的值的情况下,任何提交的数据都会安全抵达slave。 ?

???????? 半同步模式其实是作为MySQL5.5的一个plugin实现的,master和slave使用不同的plugin。默认情况下没有安装该plugin, 官方提供的MySQL Server RPM包默认安装后,会在/usr/lib(64)/mysql/plugin/下面找到该插件。安装完插件之后,还需要手动设置系统参数以开启半同步复 制模式。


------------------------------------------------------------------------------------------

?

Master 服务器:

?

vi my.cnf
? [mysqld]
? log-bin=NEW_NAME
? server-id=1???? #配一个唯一的ID编号,1至32。

#设置要进行或不要进行主从复制的数据库名,同时也要在 Slave 上设定。

? binlog-do-db=数据库名

? binlog-ignore-db=数据库名

?

安装插件

?

mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';

? 删除插件是:uninstall plugin PLUGIN_NAME;

mysql>show status;

Rpl_semi_sync_master_clients ? ? ? 0 ? ? ?##表示有多少slave设置了半同步模式。

Rpl_semi_sync_master_no_tx ? ? ? ? 0 ? ? ?##表示没有成功接收slave回执的提交次数

Rpl_semi_sync_master_status ? ? ?? OFF ? ?##表示当前是异步模式还是半同步模式,设成ON状态,set global rpl_semi_sync_master_enabled=1;

? mysql> SET GLOBAL rpl_semi_sync_master_timeout=1000; (1s, 默认是 10s)

?

?mysql> grant replication slave on *.* to NEW_NAME@Slave服务器IP identified by '**';

?mysql> flush tables with read lock;
?mysql> show master status;?? #记下现在的日志文件位置。
???? 显示: saturn-bin.002? 106

?


?


Slave服务器:

?

vi my.cnf
?[mysqld]
?server-id=2???? #也是要唯一。

#设置要进行或不要进行主从复制的数据库名,同时也要在 Master 上设定。

?replicate-do-db=数据库名

?replicate-ignore-db=数据库名

?

安装插件

mysql> install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
mysql> change master to master_host='Master服务器IP',master_user='授权用户(不可以是root)',master_password='',master_log_file='saturn-bin.002',master_log_pos=106;

?

设置rpl_semi_sync_slave_enabled =ON,重启才生效 mysql>slave stop;slave start ?


检查设置没有问题后,Master服务器:mysql> unlock tables;

?

mysql>show master status \G? #查看Master状态