分库分表后备份数据到另外一个实例库

生产中备份表到另一个实例库
###步骤
1、本库为docker启动
2、脚本中备份的为生产环境的天表
3、解压缩后恢复数据

思路:使用mysqldump备份完成之后拷贝到docker启动的库的目录、然后进入到库source恢复或者


###恢复方式
1、mysql -u username -p your_database_name < bak.sql

2、进入MySQL后source以.sql的文件(绝对路径)

docker启动数据库

###docker启动MySQL
###密码记得替换
docker run -d --restart=always   -p 8806:3306   -v /data/mysql:/var/lib/mysql   -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime   -e MYSQL_ROOT_PASSWORD=XXXXXX   --name mysql_bak     mysql:8.0.27

脚本

#!/bin/bash

# 设置生产和测试环境的 webhook_url
webhook_url_prod="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXX"
webhook_url_test="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXX"

# 选择要使用的 webhook_url
webhook_url=$webhook_url_prod  # 切换到测试环境,如果需要切换到生产环境,修改为 $webhook_url_prod

# 切换到备份目录
cd /ipudb/dbbak/file-xl-port/

# 当前日期到秒
DATE=$(date +'%Y%m%d_%H%M%S')

# 前一天的日期
DATES=$(date -d "-1 days" +'%Y%m%d')

# 记录备份开始时间到日志文件
echo "  base_a_${DATES}天表   begin backup db 开始时间:`date +'%Y%m%d_%H%M%S'`" >> /ipudb/dbbak/file-xl-port/xl-port_backup.log

# 备份数据库表
mysqldump  -h127.0.0.1 -uroot -pXXXXXX xl-port base_a_$DATES --default-character-set=utf8mb4 | gzip > /ipudb/dbbak/file-xl-port/base_a_$DATES.sql.gz

# 记录备份结束时间到日志文件
echo "  base_a_${DATES}天表   end   backup db 结束时间:`date +'%Y%m%d_%H%M%S'`" >> /ipudb/dbbak/file-xl-port/xl-port_backup.log

# 检查上一步操作的退出状态
if [ $? != 0 ]; then
    echo "failed" >> backup.log
    # 如果备份失败,发送失败消息到微信
    ssh -p 20000 root@172.26.0.168 "curl -H 'Content-Type: application/json' -d '{\"msgtype\": \"text\", \"text\": {\"content\": \"base_a_${DATES}表备份成功\"}}' $webhook_url"
else
    echo "success" >> backup.log
    # 如果备份成功,发送成功消息到微信
    ssh -p 20000 root@172.26.0.168 "curl -H 'Content-Type: application/json' -d '{\"msgtype\": \"text\", \"text\": {\"content\": \"base_a_${DATES}表备份成功\"}}' $webhook_url"
    scp -P 20000 base_a_$DATES.sql.gz  172.16.17.150:/data/mysql/prod_bak/    &&   rm   -f   base_a_$DATES.sql.gz 
fi
posted @ 2024-06-18 20:00  姬高波  阅读(16)  评论(0)    收藏  举报