by Frank 2013.04.25 测试环境
master:192.168.1.200 slave:192.168.1.110
一、单向主从
1、master服务器配置
主要配置文件为/etc/my.cnf 添加如下内容:
server_id=1 主服务器的标志
log-bin=mysql-bin 二进制日志要开启,同步的原理主要是从服务器获取主服务器的log-bin日志来同步的
binlog-do-db=test1 这个地方是配置要同步的库
2、
grant replication slave on *.* to hua@'%' identified by '123456' 开通授权同步的账号 flush privileges; 刷新 重启数据库
3、查看master的状态,记下file和position的值,主要是配置slave是会用到 show master status;
4、slave服务器(192.168.1.110)设置 修改/etc/mycnf配置文件 添加如下项 server-id=2
log-bin=mysql-bin 二进制日志
replicate-do-db=test1 这里是配置需要同步的数据库名称
replicate-ignore-db=mysql 这里是配置不需要设置同步的数据库名称 配置完毕my.cnf后重启mysqld /etc/init.d/mysqd restart
5、接着就到配置链接master实现同步的账号信息,这里跟5.1以下的版本不一样5.1以下
是直接在my.cnf里边配置的。 首先要停止slave
在mysql命令模式下执行stop slave;
然后输入change master to master_host='192.168.1.200', master_user='hua', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=349; (后面这两项即为刚才提到的在master服务器上show master status查询记下的项) 接着开启slave命令是start slave; 检查SLAVE状态是否正常 show slave status\\G
6、验证同步
在master的test1库表object_002上执行操作,查看slave库是否有一样的效果。(数据库表结构要一致)。
二、双向主从
1、master上的/etc/my.cnf上添加
replicate-do-db=test1 此为配置需要同步的库
replicate-ignore-db=mysql 此为配置不需要同步的库
重启服务/etc/init.d/mysqld restart 2、slave上修改/etc/my.cnd 添加
binlog-do-db=test1 配置需要同步的库
binlog-ignore-db=mysql 配置不需要同步的库
3、然后在slave服务器上创建一个master同步slave的账号 grant replication slave on *.* to hua2@'%' identified by '123456' 重启服务/etc/init.d/mysqld restart
4、分别在两台服务器上show master status;
5、在master上执行 change master to master_host='192.168.1.110', master_user='hua2', master_password='123456', master_log_file='mysql-bin.00000x', master_log_pos=xxx; 6、在slave上
change master to master_host='192.168.1.200', master_user='hua', master_password='123456', master_log_file='mysql-bin.00000x', master_log_pos=xxx; 7、之后分别在两台服务器上show slave status\\G 检查
Slave_IO_Running:Yes Slave_SQL_Running:Yes
是否都为yes 8、验证方法
分别在master slave上执行更新 修改操作检查另一的表是否有变化。
因篇幅问题不能全部显示,请点此查看更多更全内容