背景:两台服务器A、B各自部署MySQL5.6,配置主主复制以互相同步数据
一、主从复制配置(先理解主动复制的配置过程)
- 1.1【主】修改MySQL配置文件(配置后记得重启)
server-id=1
login-bin=xxx 二进制日志要开启
binlog-do-db=test_db #需要同步的数据库名
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
- 1.2【主】锁表(非必须,如果要导出备份可执行此步骤)
flush tables with read lock; #全局读锁定,执行后所有库所有表被锁定为只读
- 1.3【主】查看binlog日志文件和偏移量
show master status;
- 1.4【主】将数据导出,后自行导入到从机器(非必须,如果已做过迁移)
mysqldump test_db > /var/test_db.sql;
- 1.5【主】解除读锁(如果做了锁表要解锁)
unlock tables;
- 1.6【主】在主机器配置供从机器用的账户
grant replication slave on *.* to 'test_user'@'从机器IP' identified by 'test_db';
flush privileges;
- 1.7【从】配置文件(配置完记得重启)
server-id=2
login-bin=xxx 二进制日志要开启
binlog-do-db=test_db #需要同步的数据库名
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
- 1.8【从】关闭slave进程
stop slave;
- 1.9【从】配置(其中 master_log_file 和 master_log_pos 为主机器中查询内容)
change master to
master_host='主节点IP',
master_port=3306,
master_user='test_user',
master_password='test_db',
master_log_file='mysql-bin.000008',
master_log_pos=120;
- 1.10【从】开启slave进程
start slave;
- 1.11【从】查看同步状态
show slave status \G
二、主主复制
所谓主主复制,就是两台数据库互相同步数据
要实现主主复制,把上述主从复制,反过来配置一遍即可,即配置两台数据库互为主从即可
分享一个MySQL和主从同步正常监测脚本
#!/bin/bash
detect1=$(ps aux | grep -v grep | grep '/www/server/mysql/bin/mysqld_safe')
detect2=$(ps aux | grep -v grep | grep '/www/server/mysql/bin/mysqld')
if [[ "${detect1}" == "" || "${detect2}" == "" ]]; then
curl --request POST --url 'mail.host' --header 'content-type: application/json' --data '{"content":"MySQL进程异常"}'
else
echo "mysql进程正常"
fi
array=($(mysql -uroot -p123456 -e "show slave status\G" | grep "Running" | awk '{print $2}'))
if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ]; then
echo "slave正常"
else
curl --request POST --url 'mail.host' --header 'content-type: application/json' --data '{"content":"MySQL主主同步异常"}'
fi
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com