测试环境:
两台安装有 mysql Ver 14.14 Distrib 5.5.28 For Linux的Ubuntu 12.04服务器, 分别表示为A(172.16.0.3)和B(172.16.0.4). 如果mysql版本低于5.5,方法可能有些许差别。
修改数据库配置文件 /etc/my.cnf :
- 修改A(172.16.0.3)的my.cnf文件,追加以下内容:
[cc lang="bash"]
server-id = 1 # 任意整数均可,只是注意不同的服务器ID保持不同。
binlog\_cache\_size=4m
max\_binlog\_size=300m
binlog-do-db=some\_database #需要同步的数据库
binlog-ignore-db=mysql #不需要同步的数据库
log-slave-updates
replicate-do-db=some\_database
replicate-ignore-db=mysql
[/cc] - 修改B(172.16.0.4)的my.cnf文件,追加以下内容:
[cc lang="bash"]
server-id = 1 # 任意整数均可,只是注意不同的服务器ID保持不同。
binlog\_cache\_size=4m
max\_binlog\_size=300m
binlog-do-db=some\_database #需要同步的数据库
binlog-ignore-db=mysql #不需要同步的数据库
log-slave-updates
replicate-do-db=some\_database
replicate-ignore-db=mysql
[/cc]
然后使用service mysql restart命令重启两台机器的mysql服务。
- 修改A(172.16.0.3)的my.cnf文件,追加以下内容:
添加两个同步用户:
- 在A(172.16.0.3)上运行:
[cc lang="sql"]
grant replication slave on *.* to username@172.16.0.4 identified by 'PASSWORD\_HERE'; #注意这里出现的IP地址应该是B机器的。
[/cc] 在B(172.16.0.4)上运行:
[cc lang="sql"]
grant replication slave on *.* to username@172.16.0.3 identified by 'PASSWORD\_HERE'; #注意这里出现的IP地址应该是A机器的。
[/cc]- 设置主从关系:以root身份分别进入两台机器的mysql命令行,然后在A(172.16.0.3)上运行:
[cc lang="sql"]mysql> show master status;[/cc]
返回:+------------------+----------+-------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+-------------------+------------------+ | mysql-bin.000015 | 110041 | some_database | mysql | +------------------+----------+-------------------+------------------+ 1 row in set (0.00 sec)记住其中的file文件的数字后缀和Position值。
- 转到B(172.16.0.4)上的mysql shell上,执行下面三条命令:
[cc lang="sql"]
mysql> stop slave;
mysql> change master to master\_host='172.16.0.3',master\_user='username',master\_password='PASSWORD\_HERE',master\_port=3306,master\_log\_file='mysql-bin.000015',master\_log\_pos=110041;
mysql> show slave status\G
[/cc]
如果结果中出现:
Slave\_IO\_Running: Yes
Slave\_SQL\_Running: Yes
则表明两台服务器的主从设置完成,其中A(172.16.0.3)为主服务器,而B(172.16.0.4)为从服务器。
- 在A(172.16.0.3)上运行:
最后,如果想实现互为主从双向同步,只需将第三步反过来执行一遍即可,不再赘述。