MySQL在线通过xtrabackup流式热备份,恢复,并开启重库复制的脚本

编程入门 行业动态 更新时间:2024-10-25 06:29:50

MySQL<a href=https://www.elefans.com/category/jswz/34/1770935.html style=在线通过xtrabackup流式热备份,恢复,并开启重库复制的脚本"/>

MySQL在线通过xtrabackup流式热备份,恢复,并开启重库复制的脚本

数据无价,谨慎操作,风险自担。

在MySQL日常管理中,需要快速的创建数据库副本进行DBA的工作。因此阅读xtrabackup等参考手册,编写以下脚本,提升了生产力。引以为抛转,如有更好,可分享。

脚本正文:

#!/bin/bash
#xtrabackup流式热备份,恢复,并开启重库复制
#注意此脚本请在空白数据库服务器上执行
#软件平台:centos7.6 mysql5.7.25
#应用工具:xtrabackup2.4.12
#预配置SSH免密码登陆并确认通过
#version 1.0
#by jyx 2019-09-05#远程IP及账户等基础信息
REMOTE_HOST="xxx"
REMOTE_HOST_SSH_PORT="xxx"
REMOTE_HOST_USERNAME="xxx"
REMOTE_DB_USERNAME="xxx"
REMOTE_DB_PASSWORD="xxx"
REMOTE_DB_PORT="xxx"#本地IP及账户等基础信息
LOCAL_HOST="xxx"
LOCAL_HOST_SSH_PORT="xxx"
LOCAL_HOST_USERNAME="xxx"
LOCAL_DB_USERNAME="xxx"
LOCAL_DB_PASSWORD="xxx"
LOCAL_DB_PORT="xxx"#本地DB默认路径
MYSQL_PATH="/var/lib/mysql"
#或指定DB路径
#MYSQL_PATH="/mnt/mysql"#本地xtrabackup流式备份数据库暂存路径
BACKUP_PATH="/home/xtrabak"###在远程服务器流式备份表空间,传送本地服务器
#SSH远程服务器
ssh -p${REMOTE_HOST_SSH_PORT} ${REMOTE_HOST} &> /dev/null << eof
#在远程服务器用xtrabackup流式备份,传送本地服务器
innobackupex --user=${REMOTE_DB_USERNAME} --password='${REMOTE_DB_PASSWORD}'  --stream=xbstream ./ | ssh -p${LOCAL_HOST_SSH_PORT} ${LOCAL_HOST} "xbstream -x -C ${BACKUP_PATH}"
exit
eof###在本地服务器准备流式备份文件等
innobackupex --apply-log  ${BACKUP_PATH}
chown -R mysql:mysql ${BACKUP_PATH}###在本地服务器停止MySQL服务
systemctl stop mysqld
###在本地服务器清空MySQL目录
rm -rf ${MYSQL_PATH}/*###在本地服务器移动备份到mysql的schema目录
mv ${BACKUP_PATH}/${DB_NAME} ${MYSQL_PATH}###在本地检查并分析导入的数据库
mysql_upgrade -u${LOCAL_DB_USERNAME} -p${LOCAL_DB_PASSWORD} --force
mysqlcheck -u${LOCAL_DB_USERNAME} -p${LOCAL_DB_PASSWORD}  -a --auto-repair###在本地重启数据库
systemctl restart mysqld###配置从库连接信息等,然后自动加入从库复制
#GTID编号变量
GTID_SN=$(awk '{print $3}' ${BACKUP_PATH}/xtrabackup_binlog_info)
#BINLOG_FILE_NAME文件名变量
BINLOG_FILE_NAME=$(awk '{print $1}' ${BACKUP_PATH}/xtrabackup_binlog_info)
#POS_SN编号变量
POS_SN=$(awk '{print $2}' ${BACKUP_PATH}/xtrabackup_binlog_info)#在本地登陆数据库
mysql -u${LOCAL_DB_USERNAME} -p${LOCAL_DB_PASSWORD} -e "
#重设所有从库信息
stop slave;
reset master;
reset slave all;
#设置GTID全局变量
set global gtid_purged = '${GTID_SN}';#授权到主库的复制链接,引用相应参数变量
CHANGE MASTER TO MASTER_HOST='${REMOTE_HOST}',MASTER_PORT=${REMOTE_DB_PORT},MASTER_USER='${REMOTE_DB_USERNAME},MASTER_PASSWORD='${REMOTE_DB_PASSWORD}',master_log_file='${BINLOG_FILE_NAME}',master_log_pos=${POS_SN} FOR CHANNEL 'master:${REMOTE_HOST}';#启动从库复制
start slave;
#退出数据库登陆
exit "
#清除备份目录以节省空间
#rm -rf ${BACKUP_PATH}###检查MySQL日志,查看重库复制等

脚本结束

更多推荐

MySQL在线通过xtrabackup流式热备份,恢复,并开启重库复制的脚本

本文发布于:2024-02-05 08:10:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1673701.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:在线   脚本   备份   流式   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!