注释:MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。在实际项目中,,两台分布于异地的主机上安装有MySQL数据库,两台服务器互为主备,客户要求当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台数据库的数据要实时保持一致,在这里使用MySQL的同步功能实现双机的同步复制。
以下是操作实例:
A、环境配置
1、主数据服务端:CentOS release 5.6 mysql-5.0.77-4.el5_5.4 IP:192.168.4.200
2、从数据客户端:CentOS release 5.69 mysql-server-5.0.95-5.el5_9 IP:192.168.4.244
B、在主、从数据库增加同步账号
1、在主库增加一个从库可以登录的账号
MySQL>
GRANT all privileges ON *.* TO tongbu@’192.168.4.244′ IDENTIFIED BY ‘123456’;
(注意:tongbu是用于同步的帐号,123456是tongbu的密码)
2、在从库增加一个主库可以登录的账号
MySQL>
GRANT all privileges ON *.* TO tongbu@’192.168.4.200′ IDENTIFIED BY ‘123456’;
(注意:tongbu是用于同步的帐号,123456是tongbu的密码)
C、配置数据库参数
1、以root用户登录主库,修改主库my.cnf文件;
[root@jw01 mysql]# vim /etc/my.cnf
[mysqld]下面增加以下的参数;
default-character-set=utf8
log-bin=MySQL-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
server-id=1
master-host=192.168.4.244 #同步服务器的IP
master-user=tongbu #用于同步的帐号
master-password=123456 #用于同步帐号的密码
master-port=3306 #同步服务器的端口
master-connect-retry=30 #同步的时间间隔,单位是秒
binlog-do-db=zhubao #需要同步的库,zhubao、HyDatabase、zentao、collect;
binlog-do-db=HyDatabase
binlog-do-db=zentao
binlog-do-db=collect
replicate-do-db=zhubao
replicate-do-db=HyDatabase
replicate-do-db=zentao
replicate-do-db=collect
2、以root用户登录从库,修改从库my.cnf文件;
[root@jw02 mysql]# vim /etc/my.cnf
[mysqld]下面增加以下的参数;
default-character-set=utf8
log-bin=MySQL-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
server-id=2
master-host=192.168.4.200
master-user=tongbu
master-password=123456
master-port=3306
master-connect-retry=30
binlog-do-db=zhubao
binlog-do-db=HyDatabase
binlog-do-db=zentao
binlog-do-db=collect
replicate-do-db=zhubao
replicate-do-db=HyDatabase
replicate-do-db=zentao
replicate-do-db=collect
slave-net-timeout=60 #当slave从主数据库读取log数据失败
slave-skip-errors=all #忽略错误的参数