两台MySQL主机:master A:192.168.100.1、master B:192.168.100.2 ,进行配置实现双机MySQL互为备份数据库,具体设置如下:
一、创建并授权用户
在两台主机上各创建一个用户并授权,使它们能够互相访问对方的数据库。
在master A上:
建立允许许master B访问的用户"user",密码为"pass"。
GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.100.2' IDENTIFIED BY 'pass';
在master B上:
创建一个充许master A来访问的用户"user",密码为"pass"。
GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.100.1' IDENTIFIED BY 'pass';
注:为了方便操作,两台主机数据库授权设置了同样了用户名和密码。
二、修改主配置文件
在MySQL的主配置文件中修改/ect/my.cnf添加如下内容:
master A上:
1、Server-id = 1
2、log-bin=mysql-bin
3、Replicate-do-db=test //要同步的数据库
4、auto-increment-increment = 2
5、auto-increment-offset = 1
6、server-id=2 //指定从库id
7、log-bin=mysql-bin //开启从库复制机制
重启mysql
master B上:
1、Server-id = 2
2、log-bin=mysql-bin
3、Replicate-do-db=test
4、auto-increment-increment = 2
5、auto-increment-offset = 2
6、server-id=1 //指定从库id
log-bin=mysql-bin //开启从库复制机制
注:两台主机上设置仅server-id 和 auto-increment- offset不同,其他项设置相同。auto-increment-offset是用来设定数据库中自动增长的起点值,为这两台主机都设定一次自动增长值2,它们的起点必须不同,这样才能避免两台服务器数据同步时出现主键冲突。
三、获取两台服务器的二进制日志名和偏移量
在master A上:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set
在master B上:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set
四、两台服务器进行相应设置
在master A上:
mysql>stop slave;
mysql>
CHANGE MASTER TO
MASTER_HOST='192.168.100.2',
MASTER_USER='user',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=107;
在master B上:
mysql>stop slave;
mysql>
CHANGE MASTER TO
MASTER_HOST='192.168.100.1',
MASTER_USER='user',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=107;
五、启动slave线程
在两台主机上分别执行:
mysql> START SLAVE;
六、查看slave状态
mysql> show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注:如果都返回Yes,表示配置成功。有时创建数据时会报错,则需要重新手动更新日志文件和偏移量,保持两个数据库同步。
配置到此完成,此时,两台主机上的MySQL将保持数据同步。