1.主服务器配置
在主服务器上为从服务器建立一个用户:
grant replication slave on *.* to '用户名'@'主机' identified by '密码';
编辑主服务器的配置文件:/etc/my.cnf
server-id=1
log-bin
binlog-do-db=需要复制的数据库名
2.从服务器配置
编辑从服务器的配置文件:/etc/my.cnf
server-id=2
master-host='主机'
master-user='用户名'
master-password='密码'
master-port=端口
replicate-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
replicate-ignore-db=需要复制的数据库名
我这样配置没有成功,按照下面的配置成功了:
/etc/my.cnf中
server-id=2
replicate-do-db=需要复制的数据库名
接着运行
mysql> CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
where you replace <host>, <user>, <password> by quoted strings and
<port> by the master's port number (3306 by default).
Example:
mysql> CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
MASTER_USER='joe', MASTER_PASSWORD='secret';
重启从服务器(在从服务器上运行)
-
查看状态
mysql> show slave status;
会显示相关的信息,注意Slave_IO_Running 和 Slave_SQL_Running的状态都为YES,而且没有错误提示。
3.最后我发现,主从服务器要同步的数据库的名字要一样,同步的表的结构等也要一样,不然同步不了,目前我还没有实现数据库名不一样时的同步。虽然没有解决我的问题,但还是记录下来以供参考。