mysql 双机热备

来源:互联网 发布:网络安全工程师待遇 编辑:程序博客网 时间:2024/05/01 12:39

mysql 热备配置出现的问题

最近公司做mysql数据库的双向热备,期间遇到有如下问题:

1、主备机的server-id=ID 数一样导致不能建立mysql热备;

2、同步的数据库表建了触发器,会导致同步到备机重复进行写操作,导致“primary key”主键重复写入错误;

3、跨库操作的sql语句,不记mysql同步日志,不同步到备机上;

4、mysqldump导出数据库时,一并导出了触发器(可以采用:mysqldump -uroot -p123456 hacconf --ignore-table=hacconf.network_config --triggers=false >/val/log/hacconf.sql)

mysql双机热备实施

1、建立mysql数据库双向热备,首先建立复制帐号,帐号名和密码为“slaveuser”,执行的sql语句如下:

GRANT REPLICATION SLAVE ON *.* TO 'slaveuser' @ '%' IDENTIFIED BY 'slaveuser';

#GRANT REPLICATION SLAVE ON *.* TO 'slaveuser' @ 'RedunHost' 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;stop slave;reset slave;start slave;

重启主备机mysql服务,主备机执行show slave status/G,如果复制状态Slave_IO_Running,Slave_SQL_Running都为Yes,说明复制已经配置正确。

 

注:以上配置针对主备机数据库数据一致进行的操作,若要某些操作不记录mysql同步日志,可以用“set SQL_LOG_BIN = 0或1;”设置打开记录mysql同步日志的开关。


    

 

原创粉丝点击