由于之前只用了两台服务器做单独的主从备份,所以没有太多问题,最近新加了一台主服务器,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
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。