不清楚什么是异步半同步的童鞋自己谷歌度娘去,本文主要说明的是配置。

     环境:centos5.4+mysql-5.5.20以及必须的证书。

异步复制配置过程:

     master:

     1)创建复制帐号,用户名密码均为repl,其中host为主slave主机地址

 
  
  1. grant replication slave on *.* to 'repl'@'host' identified by 'repl'

     2)配置主服务器

      在主服务器的my.cnf文件中配置下列行

 
  
  1. log_bin = mysql-bin 
  2. server-id = 10 

      这里要注意的是必须显示的定义唯一的服务器ID。

      重启mysql服务,进入mysql数据库,查看主服务器状态并记录二进制文件名及其位置

 
  
  1. mysql>show master status; 
  2. +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000008 | 107 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)

 

     3)配置从服务器
     在从服务其的my.cnf文件配置下列行
 
  
  1. log-bin = mysql-bin 
  2. server-id = 21 
  3. relay-log = mysql-relay-bin 

 

     重启mysql服务。

     4)启动复制

      进入从服务器,把从服务器指向主服务器,配置如下

 
  
  1. mysql>change master to master_host='master_ip'
  2.     ->master_user='repl'
  3.     ->master_password='repl'
  4.     ->master_log_file='此处即为上面记录的文件名'
  5.     ->master_log_pos='此处即为上面记录的位置'

      开启从服务复制

 
  
  1. mysql>start slave; 

     检查是否已经开启

 
  
  1. mysql>show slave status\G 
  2. *************************** 1. row ***************************
  3. Slave_IO_State:
  4. Master_Host: 192.168.0.2 Master_User: backup Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000006 Read_Master_Log_Pos: 413 Relay_Log_File: relay-bin.000002 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000006 Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 413 Relay_Log_Space: 529 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysqld/ssl/cacert.pem Master_SSL_CA_Path: /etc/mysqld/ssl/ Master_SSL_Cert: /etc/mysqld/ssl/client.crt Master_SSL_Cipher: Master_SSL_Key: /etc/mysqld/ssl/client.key Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 1 row in set (0.00 sec)
  5.  

     如果看到

 
  
  1. Slave_IO_Running: Yes 
  2. Slave_SQL_Running:Yes 

   异步复制已经成功开启。

ssl加密传输配置

     此步可参考官方文档http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-ssl.html

半同步复制

     mysql5.5 版本支持半同步复制功能(Semisynchronous Replication),但还不是原生的支持,是通过plugin来支持的,并且默认是没有安装这个插件的。

    在master中安装

 
  
  1. mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;  
  2. mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;  
  3. mysql>SET GLOBAL rpl_semi_sync_master_timeout=1000; 

    在slave中安装

 
  
  1. mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;  
  2. mysql>SET GLOBAL rpl_semi_sync_slave_enabled=1; 

    启用方法,在slave从服务器中

 
  
  1. mysql>STOP SLAVE;  
  2. mysql>CHANGE MASTER TO master_heartbeat_period= milliseconds;  
  3. mysql>START SLAVE;