2、两机均修改配置文件my.cnf
A机注意以下内容,无该项则增加:
[mysqld]
log-bin=mysql-bin
relay-log=mysql-relay-bin
log-slave-updates=1
# A机使用server id 为1,两机需要使用不同值
server-id = 1
auto-increment-increment = 2
# A机使用auto-increment-offset为1,两机需要使用不同值
auto-increment-offset = 1
B机注意以下内容,无该项则增加
[mysqld]
log-bin=mysql-bin
relay-log=mysql-relay-bin
log-slave-updates=1
# B机使用server id 为2,两机需要使用不同值
server-id = 2
auto-increment-increment = 2
# B机使用auto-increment-offset为2,两机需要使用不同值
auto-increment-offset = 2
3、两机数据库启动,启动复制
注意:使用CHANGE MASTER的方式需要从MASTER获取binlog信息,比如当前A机要做为B机的Slave,需要在B机执行, 然后获取file和position
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 534 | | |
+------------------+----------+--------------+------------------+
在A机上:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.80.56', MASTER_PORT=3306, MASTER_USER='mysql', MASTER_PASSWORD='mysql', MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=534;
mysql> START SLAVE;
同样的,B机要做为A机的Slave的时候,需要获取A机的binlog信息,
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 98 | | |
+------------------+----------+--------------+------------------+
在B机上:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.80.55', MASTER_PORT=3306, MASTER_USER='mysql', MASTER_PASSWORD='mysql',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=98;
mysql> START SLAVE;
完成以上之后,mysql的复制就算配置完成了,可在两机上分别执行
mysql> SHOW SLAVE STATUS\G
显示结果中,slave的两个线程都在运行,就表明复制是成功的,这样就在两机上任意的更新都将更新到两个数据库上(当然并不推荐两边都更新,因为可能带来冲突)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes