主服务器my.cnf设置
server-id=1
log-bin=mysql-bin #日志名称
binlog-ignore-db=mysql #要忽略的数据库
binlog-do-db=taolai_1 #要备份的数据库, 若不填此项,则记录所有数据库
从服务器my.cnf设置(MariaDb为my.cnf.d/server.cnf)
server-id=2
log-bin=mysql-bin
重启主从的mysql服务
在主服务器上建立账号并赋予权限
mysql>GRANT REPLICATION SLAVE ON *.* to 'wz'@'%' identified by 'wz123';
(wz: 同步账号;wz123: 密码 生产服务器将%改为从服务器ip)
登陆主服务器查看master状态
mysql>show master status;
配置从服务器Slave:
mysql>change master to master_host='172.16.160.93',master_user='wz',master_password='wz123',master_log_file='mysql-bin.000002',master_log_pos=23020360;
(master_log_file为上图File的值;master_log_pos为上图Position的值)
启动从服务器复制功能
mysql>start slave;
查看从服务器复制功能状态
mysql>show slave status\G
只有当Slave_IO_Running: Yes;Slave_SQL_Running: Yes都为yes时,主从复制才算成功
监控
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了
注意:
1. Slave_IO_Running: Connecting 时 检查密码是否正确
2. Slave_SQL_Running: No 时 查看出错原因
【ERROR】1452:无法在外键的表插入或更新参考主键没有的数据。由于item_discovery.itemid字段(外键)参考了items.itemid字段(主键),当要在item_discovery表插数据时,如果items表的主键没有对应的数据,则无法插入,报1452错误。此时可以检查参考的表的主键是否有主库对应的数据,如果有,则插入参考的表相应的数据,再开启复制恢复SQL线程。
【ERROR】1032:删除或更新从库的数据,从库找不到记录。此时,主库的数据是比从库新的,可以采取从库添加相同的数据在开启复制恢复SQL线程。
【ERROR】1062:从库插入数据,发生唯一性冲突。此时从库已经有相同主键的数据,如果再插入相同主键值的数据则会报错。可以查看主库的改行数据与从库的要插入数据是否一致,如一致则跳过错误,恢复SQL线程,如不一致,则以主库为准,将从库的该行记录删除,再开启复制。
3. 调试应先关闭从服务器复制功能 mysql>stop slave;
4. 主从服务器有内网条件的优先使用内网ip
2018-02-07 17:49:19 回复