不清楚什么是异步半同步的童鞋自己谷歌度娘去,本文主要说明的是配置。
环境:centos5.4+mysql-5.5.20以及必须的证书。
异步复制配置过程:
master:
1)创建复制帐号,用户名密码均为repl,其中host为主slave主机地址
- grant replication slave on *.* to 'repl'@'host' identified by 'repl';
2)配置主服务器
在主服务器的my.cnf文件中配置下列行
- log_bin = mysql-bin
- server-id = 10
这里要注意的是必须显示的定义唯一的服务器ID。
重启mysql服务,进入mysql数据库,查看主服务器状态并记录二进制文件名及其位置
- mysql>show master status;
- +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000008 | 107 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
- log-bin = mysql-bin
- server-id = 21
- relay-log = mysql-relay-bin
重启mysql服务。
4)启动复制
进入从服务器,把从服务器指向主服务器,配置如下
- mysql>change master to master_host='master_ip',
- ->master_user='repl',
- ->master_password='repl',
- ->master_log_file='此处即为上面记录的文件名',
- ->master_log_pos='此处即为上面记录的位置';
开启从服务复制
- mysql>start slave;
检查是否已经开启
- mysql>show slave status\G
- *************************** 1. row ***************************
- Slave_IO_State:
- 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)
如果看到
- Slave_IO_Running: Yes
- Slave_SQL_Running:Yes
异步复制已经成功开启。
ssl加密传输配置
此步可参考官方文档http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-ssl.html
半同步复制
mysql5.5 版本支持半同步复制功能(Semisynchronous Replication),但还不是原生的支持,是通过plugin来支持的,并且默认是没有安装这个插件的。
在master中安装
- mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
- mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;
- mysql>SET GLOBAL rpl_semi_sync_master_timeout=1000;
在slave中安装
- mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;
- mysql>SET GLOBAL rpl_semi_sync_slave_enabled=1;
启用方法,在slave从服务器中
- mysql>STOP SLAVE;
- mysql>CHANGE MASTER TO master_heartbeat_period= milliseconds;
- mysql>START SLAVE;