0

0

[SHELL]mysql主从+keepalived线上恢复解决方案

php中文网

php中文网

发布时间:2016-06-07 17:39:12

|

1238人浏览过

|

来源于php中文网

原创

最近一个项目需要做一个mysql+keepalived高可用主从同步,配起来当然轻车熟路,但想到如何在主库挂掉,从库接管后,以最快的速度恢复数据,并让主库重新接管,所

最近一个项目需要做一个mysql+keepalived高可用主从同步,配起来当然轻车熟路,但想到如何在主库挂掉,从库接管后,以最快的速度恢复数据,并让主库重新接管,,所以整理了下思路,编写了如下脚本,供大家参考

mysql主从,以及keepalived高可用配置本博传送门:


一.备份从库当前数据库

注:以下的所有配置需要在数据库未运转状态下进行,建议做一个iptables规则禁止非管理员IP访问主从服务器IP,以及VIP,这样既能保证管理员可SSH远程登陆配置,又能恢复主从环境,待配置完成后解除禁止即可。

# vi /etc/rc.d/mysql_bak.sh

-------------------------

#!/bin/bash


# 环境变量

超级简历WonderCV
超级简历WonderCV

免费求职简历模版下载制作,应届生职场人必备简历制作神器

下载

PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

export LANG=C


# 日常备份目录

basedir=/backup/daily/


# 数据库账户

user=root

passwd=123456


# mysql备份目录

mysql_db_bak=$basedir/$(date +%F_%H%M)

[ ! -d "$mysql_db_bak" ] && mkdir -p $mysql_db_bak


# mysql下所有库名称

db_name=("information_schema" "mysql" "test_db1" "test_db2" "test_db3" "test_db4")


# 1.备份MySQL数据库

for((i=0; i!=${#db_name[@]}; ++i))

{

mysqldump -u $user -p$passwd --opt --skip-lock-tables --flush-logs --database ${db_name[i]} > $mysql_db_bak/${db_name[i]}.sql

}

-------------------------


二.复制从(192.168.7.9)数据库备份到主库(192.168.7.12)

# vi /etc/rc.d/scp_mysql.sh

----------------------

#/bin/bash

# 环境变量

PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

scp /backup/daily/2013-09-10_1258/* 192.168.7.9:/tmp

----------------------


三.恢复主库(192.168.7.9)

# vi /etc/rc.d/recover_mysql.sh

------------------------------------

#/bin/bash

# 环境变量

PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

export LANG=C


# 数据库账户

user=root

passwd=123456


# # mysql下所有库名称

db_name=("information_schema" "mysql" "test_db1" "test_db2" "test_db3" "test_db4")


# 恢复MySQL数据库

cd /tmp

for((i=0; i!=${#db_name[@]}; ++i))

{

mysql -u $user -p$passwd -e "drop database ${db_name[i]};"

mysql -u $user -p$passwd -e "create database ${db_name[i]};"

mysql -u $user -p$passwd ${db_name[i]}

}


# 开启从库

mysql -u $user -p$passwd -e "stop slave;"

mysql -u $user -p$passwd -e "reset slave;"

# 设置从库连接主库的相关参数,可利用相关命令查看

mysql -u $user -p$passwd -e "change master to master_host='192.168.7.9',master_user='slave',master_password='123456#',master_log_file='bin.000029',master_log_pos=106 ";

mysql -u $user -p$passwd -e "start slave;"

# 查看主从是否连接成功

mysql -u $user -p$passwd -e "show slave status\G;"

------------------------------------


四.查看主从同步信息

1.查看主库binlog日志以及偏移量

# mysql -u root -p123456 -e "show master status"

2.查看从库是否连接到主库

# mysql -u root -p123456 -e " show slave status\G;"


注:实际操作中发现,一旦VIP切换后有一定几率造成主从服务器都会同时获取到该虚IP,导致主从数据库冲突,无论重启keepalived与否都无法干掉该VIP,目前我的临时解决方案是将两台服务器均重新启动,大家如果有更好的方法请留言告知我,不胜感谢。


后续:

在网上翻阅大量资料,初步判断VIP切换后造成的冲突是因为在触发切换动作时使用的pkill keepalived 来杀掉keepaliaved进程,造成系统只是杀掉keepalived自身进程,并未来得及切换VIP,

目前的解决方案是使用正规的keepalived启动脚本/etc/init.d/keepalived stop 来关闭

初步测试未发现异常。。。


如果出现主从在切换VIP时,出现了主的VIP未自动关闭,从的正常开启,导致都获取到VIP,造成互相冲突的情况,可手动输入如下命令删除一方的VIP地址

# ip addr del "虚拟ip" dev eth0

但此方法只是一个临时的解决方案,当手动删除VIP后,重启keepalived服务会无法正常开启vip,需要重启服务器方能恢复。


本文出自 “一路向北” 博客,请务必保留此出处

相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

61

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

41

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

32

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

41

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

198

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

9

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

8

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.6万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 779人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号