设为首页 加入收藏

TOP

[MySQL-MM] 生产环境自动恢复MM中一台M2库的过程,分享从零开始写的自动化重建脚本以及思路(二)
2014-11-24 08:21:50 来源: 作者: 【 】 浏览:9
Tags:MySQL-MM 生产 环境 自动 恢复 过程 分享 从零 开始 自动化 重建 脚本 以及 思路
"
then
echo "[ERROR] Cannot start slave on db2!"
exit -1
fi
#(11)建立M1上面的复制功能,M2为master,M1为slave;
echo "Setup replication from db2 to db1"
./build_replication.sh $db2 $db1
#(12)Check M1库的复制功能状态,是否搭建成功
echo "Check db1 replication status."
if ! $MYSQL_EXEC -h$db1 -ummm_agent -p"$AGENT_PASSWORD" -e "SHOW SLAVE STATUS\G" | grep "Slave_SQL_Running: Yes"
then
echo "[ERROR] Cannot start slave on db1!"
exit -1
fi
#(13)清除临时目录的备份文件,释放磁盘空间
echo "Clean up the shared storage folder and tmp folder."
ssh -t $db1 "rm -rf $TEMP_SETUP_FOLDER"
ssh -t $db2 "rm -rf $TEMP_SETUP_FOLDER"
ssh -t $db1 "sudo -u mysql rm -rf $BACKUP_FOLDER"
echo 'Rebuild secondary done!'
4 分脚本(1),M1库上的在线备份脚本create_hot_backup.sh详情
#!/bin/bash
set -x
set -e
# !!! This file need to be run in mysql !!!
#(1)设置一些基本参数,$1:备份文件;$2:备份用户名;$3:备份用户名密码;$4:是否需要安全模式备份; $5:是否需要rsync信息
BACKUP_FOLDER=$1
HOTBACKUP_USER=$2
HOTBACKUP_PASSWORD=$3
NEED_SAFE_SLAVE=$4
NEED_RSYNC=$5
#(2)参数验证,如果需要,则在接下来的备份命令中加上--safe-slave-backup或者--rsync参数
INNOBACKUP_OPT=""
if [[ $NEED_SAFE_SLAVE == "Y" ]]
then
INNOBACKUP_OPT=$INNOBACKUP_OPT" --safe-slave-backup"
fi
if [[ $NEED_RSYNC == "Y" ]]
then
INNOBACKUP_OPT=$INNOBACKUP_OPT" --rsync"
fi
#(3)开始执行备份命令
echo "Run xtrabackup to take hotbackup..."
export MYSQL_HOME=/opt/mysql/product/mysql
innobackupex $INNOBACKUP_OPT --user=$HOTBACKUP_USER --password=$HOTBACKUP_PASSWORD $BACKUP_FOLDER
5 分脚本(2)restore_hot_backup.sh,在M2库上进行数据恢复操作。
#!/bin/bash
set -x
set -e
#(1)$1:备份数据存放的目录;$2:恢复用户;$3:恢复用户密码; $4:临时文件夹目录; $5:是否需要resync;
SHARED_STORAGE_PATH=$1
HOTBACKUP_USER=$2
HOTBACKUP_PASSWORD=$3
TEMP_SETUP_FOLDER=$4
NEED_RSYNC=$5
#(2)是否需要加上resync参数
INNOBACKUP_OPT=""
if [[ $NEED_RSYNC == "Y" ]]
then
INNOBACKUP_OPT="--rsync"
fi
#(3)把MYSQL_HOME放入环境变量中
export MYSQL_HOME=/opt/mysql/product/mysql
#(4)如果目录存在的话,删除这些 数据库目录下的旧文件
echo "Delete existing mysql instance..."
rm -rf /mysqldata/data
rm -rf /mysqldata/shared/restore
rm -rf /mysqldata/binlog/*
rm -rf /mysqldata/iblogs/*
#(5)开始准备数据目录以及备份数据目录,如今不存在就新建,并且赋予linux 系统帐号mysql的操作权限。
echo "Apply and copy back backup files..."
mkdir -p /mysqldata/data && chown -R mysql:mysql /mysqldata/data && chmod 700 /mysqldata/data
mkdir -p /mysqldata/shared/restore
backup_folder=$(ls -1 $SHARED_STORAGE_PATH | sort -rn | head -n1) #这个ls的找最新生成的文件的命令很实用,可以借鉴。
#(6)如果为了安全起见可以备份文件数据目录copy到指定的恢复临时目录,然后在临时目录进行--apply-log以及--copy-back等操作,但是我为了效率,就去掉了copy的时间(copy时间大概需要1小时左右),直接在原来的备份数据目录进行--apply-log以及--copy-back操作
# cp -r $SHARED_STORAGE_PATH/${backup_folder}/* /mysqldata/shared/restore/
# innobackupex --user=$HOTBACKUP_USER --password=$HOTBACKUP_PASSWORD --ibbackup xtrabackup --apply-log /mysqldata/shared/restore/
# innobackupex --user=$HOTBACKUP_USER --password=$HOTBACKUP_PASSWORD $INNOBACKUP_OPT --copy-back /mysqldata/shared/restore/
innobackupex --user=$HOTBACKUP_USER --password=$HOTBACKUP_PASSWORD
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用mysql federated引擎构建MySQ.. 下一篇mysql创建存储过程和函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)
·基于Python的数据分 (2025-12-27 07:50:03)
·深入理解 Java 集合 (2025-12-27 07:22:48)
·Java集合框架全面解 (2025-12-27 07:22:45)