MySQL 实践:制定 mysqldump 简单的备份策略
深为 DBA 和 IT从业人员,最害怕的是灯下黑,例如,DBA 从不备份自己的数据库,而时时告诉他人备份重于一切!
好吧,我要备份一下我的网站数据库,虽然 MySQL 和 云服务器 从来都是如此健壮,没有让我遭受任何数据库损失。
先定制一个简单的脚本,主要逻辑是:
1.备份;
2.压缩;
3.删除5天前的备份;
在Linux下进行时间运算,使用 date 可以做出灵活的配置:
[root@ backup]# date +"%F"
2019-08-15
[root@ backup]# date -d "5 days ago" +%Y-%m-%d
2019-08-10
以下是这个简单的脚本:
[root@ backup]# cat bakupdb.sh
#!/bin/sh
/alidata/mysql/bin/mysqldump -uroot -pyoupassword --all-databases > /alidata/backup/alldb-`date +"%F"`.sql
gzip /alidata/backup/alldb-`date +"%F"`.sql
rm -rf /alidata/backup/alldb-`date -d "5 days ago" +%Y-%m-%d`.sql.gz
此外,鉴于在 shell 脚本中增加 rm -rf 是非常危险的,所以要做好测试,做2个文件测试:
[root@ backup]# ls -l
total 30212
-rw-r--r-- 1 root root0 Aug 15 17:00 alldb-2019-08-10.sql.gz
-rw-r--r-- 1 root root0 Aug 15 17:01 alldb-2019-08-11.sql.gz
-rwxrwxr-x 1 root root235 Aug 15 17:00 bakupdb.sh
定义 crontab 任务:
[root@ backup]# crontab -l
20 17 * * * /alidata/backup/bakupdb.sh
最后检查一下成果:
[root@ backup]# ls -l
total 30212
-rw-r--r-- 1 root root0 Aug 15 17:01 alldb-2019-08-11.sql.gz
-rw-r--r-- 1 root root 30892895 Aug 15 17:20 alldb-2019-08-15.sql.gz
-rwxrwxr-x 1 root root235 Aug 15 17:00 bakupdb.sh
It works .再做一个 rsync ,把备份同步到远程。总算踏实了一点点。
By eygle on 2019-08-15 18:33 |
Comments (0) |
Backup&Recovery | 3355 |