MySQL 备份和还原

针对 linux 上的 MySQL 进行备份还原。

备份脚本 mysql-bak.sh

db=$1
if [ -z $db ] 
then
  echo '错误: 清输入表名!'
  echo '用法: ./mysql-bak.sh db_name'
  exit 1
fi
D=$(date +%Y%m%d%H%M)
DUMP=/data/mysql-bak/${db}-${D}.tgz
echo 备份路径: $DUMP
echo 开始备份: $(date)
mysqldump -uroot -proot $db | gzip > $DUMP
echo 备份完成: $(date)

注意:

  • DUMP 中的路径,当通过 cron 配置定时任务时,如果不是绝对路径,生成的文件可能会在用户的 home 目录下。
  • mysqldump 中的用户名和密码
  • 使用 gzip 的压缩率在 10% 以下,能节省大量空间,也方便传输备份文件

全库备份参考脚本:

day=15
D=$(date +%Y%m%d%H%M)
DUMP=/data/mysql/bak/mysql-${D}.gz
echo 备份路径: $DUMP
echo 开始备份: $(date)
mysqldump --all-databases --master-data --single-transaction --include-master-host-port -uroot -p密码 | gzip > $DUMP
echo 备份完成: $(date)
echo 开始清理 ${day} 天前备份
for((i=$day;i<=30;i++));do rm -f /data/mysql/bak/mysql-$(date -d "-$i day" +"%Y%m%d")*.gz; done;
echo 清理完成

压缩和不压缩的文件大小

-rw-r--r-- 1 root root 1.4G Dec  6 00:31 mysql-201912060030.db
-rw-r--r-- 1 root root 107M Dec  6 11:35 mysql-201912061134.tgz

1.4G 和 107M 的大小。

还原脚本 mysql-restore.sh

db=$1
bak=$2
useage() {
  echo '错误: 清输入表名和备份文件名!'
  echo '用法: ./mysql-restore.sh db_name bak.tgz'
}
if [ -z "$db" -o -z "$bak" ]
then
  useage
  exit 1
fi
echo 开始还原: $(date)
gunzip < $bak | mysql -uroot -proot $db
echo 还原完成: $(date)

定时任务

通过 crontab -e 编辑定时任务,示例如下:

5 12 * * * sh /data/mysql-bak/mysql-bak.sh test123

上述定时任务在 12:05 执行,查看最近的执行情况:

[root@localhost mysql-bak]# tail -n 10 /var/spool/mail/root 
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20191206040502.2C1851742@localhost.localdomain>
Date: Fri,  6 Dec 2019 12:05:01 +0800 (CST)

备份路径: /data/mysql-bak/test123-201912061205.tgz
开始备份: Fri Dec 6 12:05:01 CST 2019
mysqldump: [Warning] Using a password on the command line interface can be insecure.
备份完成: Fri Dec 6 12:05:01 CST 2019
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值