跳到主要内容

MySQL数据库异地备份与恢复脚本-2024.1.13(收藏)

更新于:2024年1月13日

MySQL数据库异地备份与恢复脚本-2024.1.13(收藏)

image-20240113094131931

目录

[toc]

说明

次shell脚本仅记录收藏,自己未验证;其中的shell也可借鉴;

原文链接

https://mp.weixin.qq.com/s/mNqynoaGiTmv0bLtNil2Lg

推荐文章

我的开源项目:

https://onedayxyy.cn/docs/MyOpenSourceProject

一、MySQL 数据库异地备份脚本

该脚本主要是用于在Linux系统上备份MySQL数据库,自定义数据库用户名、密码、IP 地址、远程备份服务器 IP、本地备份路径、远程备份路径、当前时间、7 天前的日期变量。

使用mkdir -p命令创建以当前日期为名的目录,存放数据库备份文件。

使用mysqldump命令备份所有数据库,并将输出重定向至mysql_backup_$DATE.sql文件中。

使用tar命令将备份文件压缩为:.tar.gz格式的文件内,并附加日志到备份文件中,然后删除原始的备份文件。

使用rm -rf命令删除 7 天前的备份文件,删除的是以 7 天前日期为名的目录和目录下的所有文件。

使用scp命令将本地备份文件传到远程备份服务器上。

#!/bin/bash
# Database info
DB_USER="root"                          # 数据库备份用户
DB_PASS="1Q!2W@3E#"                     # 备份用户密码
DB_HOST="192.168.1.100"                 # 数据库 IP
DBBACK_IP="192.168.1.200"               # 远程备份服务器 IP
BCK_DIR="/bigdata/mysql"                # 本地备份路径
DBBACK_PATH=/bigdata/mysqlbackup        # 远程备份路径
DATE=`date +%F`                         # 获取当前时间
yestoday=$(date -d '-7 day' +%Y-%m-%d)  # 取 7 天前的时间,格式为:2023-12-30,用于删除备份文件取文件时间,该参数可自行调整

#BACK_
#TB_)               # 需要备份的表名

#create file

mkdir -p $BCK_DIR/$DATE                 # 创建本地备份日期目录
echo "开始本地备份中..."

/usr/local/mysql/bin/mysqldump -u$DB_USER -p$DB_PASS -h$DB_HOST --all-databases > $BCK_DIR/$DATE/mysql_backup_$DATE.sql
cd $BCK_DIR/$DATE && tar -zcvf mysql_backup_$DATE.sql.tar.gz mysql_backup_$DATE.sql >>/$BCK_DIR/$DATE/$DATE.log && rm -fr mysql_backup_$DATE.sql
echo "$DATE db bakcup success!" >>/$BCK_DIR/$DATE/$DATE.log

echo "开始删除 7 天前的数据库备份文件..."
rm -rf $BCK_DIR/$yestoday
echo "7 天前的数据库备份文件删除完毕!"

echo "开始远程备份中..."
scp -r $BCK_DIR/$DATE/mysql_backup_$DATE.sql.tar.gz root@$DBBACK_IP:$DBBACK_PATH
echo "远程备份完毕!"


需要注意的是:远程备份需要做免密,在MySQL数据库所在服务器与需要远程备份的服务器做免密,并进行ssh验证登录是否正常。

ssh-keygen
cd ~/.ssh/
scp id_rsa.pub 目标主机IP~/.ssh/authorized_keys

利用find命令查找mysqldump工具安装路径,并按实际路径更改脚本中的参数。

find / -name mysqldump

mysql_backup.sh脚本增加可执行权限,并创建crontab定时任务。

chmod +x mysql_backup.sh

crontab -e
# MySQL 数据库备份
0 3 * * 6 root sh /bigdata/mysql_backup.sh >> /bigdata/mysql_backup.log 2>&1 &

二、MySQL 数据库的恢复

首先确保已安装好MySQL数据库,详情可参考文章:MySQL 数据库系统的安装

可使用以下语法命令从.sql文件中恢复MySQL数据库,详情可参考文章:MySQL 数据库系统的备份与恢复

mysql -[用户名] -[密码] [数据库名] < [备份文件名.sql]

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

https://onedayxyy.cn/

🍀 语雀

https://www.yuque.com/xyy-onlyone

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!