由于之前只用了两台服务器做单独的主从备份,所以没有太多问题,最近新加了一台主服务器,mysql主主从热备份,出现了两个问题。
结构
主 <=> 主 -> 从
问题
修复脚步每次都会重启数据库不够友好
获取新起点会删除已同步的日志,如果另一台未同步完成,会导致另一台数据不全,这样就是两台服务器有了冲突
优化
对比原脚步《mysql热备份自动修复脚步》,进行查看
1.主从断开优化
echo "主从服务器连接失败,重启mysql服务。" >> /root/error.log service mysqld restart >> /root/error.log
改为
echo "主从服务器连接失败,重启slave服务。" >> /root/error.log mysql -u$SU -p$SP -e " STOP SLAVE; START SLAVE; quit"
2.获取新起点优化
mysql -h $MIP -u$MU -p$MP -e " purge binary logs to '$Relay_Master_Log_File'; show binlog events; quit" > binary.log
改为
mysql -h $MIP -u$MU -p$MP -e " show binlog events in '$Relay_Master_Log_File' from $Exec_Master_Log_Pos limit 0,10; quit" > binary.log
注:这样写避免删除日志导致冲突,且只导出出错部分的10条记录,避免因日志过大而影响效率
3.重新关联优化
if [ "$Pos1" = "$Pos2" ] then echo "重新建立主从关系" >> /root/error.log mysql -u$SU -p$SP -e " STOP SLAVE; CHANGE MASTER TO MASTER_HOST='$MIP', MASTER_USER='$MSU', MASTER_PASSWORD='$MSP', MASTER_LOG_FILE='$Relay_Master_Log_File', MASTER_LOG_POS=$Pos2; quit" else Pos3=$(cat binary.log |grep -w Query|awk '{ print $2 }'|grep -A 1 $Pos1|tail -1) echo Pos3=$Pos3 >> /root/error.log echo "重新建立主从关系" >> /root/error.log mysql -u$SU -p$SP -e " STOP SLAVE; CHANGE MASTER TO MASTER_HOST='$MIP', MASTER_USER='$MSU', MASTER_PASSWORD='$MSP', MASTER_LOG_FILE='$Relay_Master_Log_File', MASTER_LOG_POS=$Pos3; quit" fi echo "重启mysql服务器" >> /root/error.log service mysqld restart >> /root/error.log fi
改为
if [ "$Pos1" = "$Pos2" ] then echo "重新建立主从关系" >> /root/error.log mysql -u$SU -p$SP -e " STOP SLAVE; CHANGE MASTER TO MASTER_HOST='$MIP', MASTER_USER='$MSU', MASTER_PASSWORD='$MSP', MASTER_LOG_FILE='$Relay_Master_Log_File', MASTER_LOG_POS=$Pos2; START SLAVE; quit" else Pos3=$(cat $binary |grep -w Query|awk '{ print $2 }'|grep -A 1 $Pos1|tail -1) echo Pos3=$Pos3 >> /root/error.log echo "重新建立主从关系" >> /root/error.log mysql -u$SU -p$SP -e " STOP SLAVE; CHANGE MASTER TO MASTER_HOST='$MIP', MASTER_USER='$MSU', MASTER_PASSWORD='$MSP', MASTER_LOG_FILE='$Relay_Master_Log_File', MASTER_LOG_POS=$Pos3; START SLAVE; quit" fi echo "重载mysql服务器" >> /root/error.log service mysqld reload fi
本文链接:https://jeff.xin/post/39.html
--EOF--
Comments
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。