mysql 双向热备...
时间:2010-08-13 来源:weibinhu
mysql 热备配置出现的问题
最近公司做mysql数据库的双向热备,期间遇到有如下问题:
1、主备机的server-id=ID 数一样导致不能建立mysql热备;
2、同步的数据库表建了触发器,会导致同步到备机重复进行写操作,导致“primary key”主键重复写入错误;
3、跨库操作的sql语句,不记mysql同步日志,不同步到备机上;
mysql双向热备实施
1、建立mysql数据库双向热备,首先建立复制帐号,帐号名和密码为“slaveuser”,执行的sql语句如下:
GRANT REPLICATION SLAVE ON *.* TO 'slaveuser' @ '%' IDENTIFIED BY 'slaveuser';
2、修改主备机的my.cnf配置文件
server-id = 1
log-bin=mysql-bin
relay-log=relay-bin
log-slave-updates
#slave-skip-errors = all(可选)
master-host = RedunHost
master-user = slaveuser
master-password = slavepass
master-port=8004
#跨库操作配置
replicate-wild-do-table=db_name.%
如果需要同步跨库操作,需使用 –replicate-wild-do-table=db_name.% 选项
#replicate-do-db=db_name 指定要复制的数据库,本身不支持跨库更新
replicate-do-table=db_name.t_name (db_name.%) 同replicate-do-db功能类似,与replicate-do-db区别,支持跨库更新
注解:
server-id = 1
服务器ID号,整数值,保证唯一标识一台服务器就可以
log-bin=mysql-bin
打开二进制日志
relay-log=relay-bin
中继日志名称
master-host = RedunHost
主服务器IP地址或者主机名,比如:172.20.16.204
master-user= slaveuser
主服务器上创建的复制用户帐号名称,比如以上创建的:slaveuser
master-password=slaveuser
主服务器上创建的复制用户帐号密码,比如以上创建的:slaveuser
relay-log-index=relay-bin
中继索引文件名称
slave-skip-errors =all 是跳过错误,继续执行复制操作(可选)
log-slave-updates
log-slave-updates 这个参数一定要加上,否则不会给更新的记录些到二进制文件里
主备机执行Reset master;reset slave;stop slave;start slave;
重启主备机mysql服务,主备机执行show slave status\G,如果复制状态Slave_IO_Running,Slave_SQL_Running都为Yes,说明复制已经配置正确。
注:以上配置针对主备机数据库数据一致进行的操作