使用 crontab & mysqldump 对 MySQL 数据库进行自动定时备份

更新日期: 2018-01-06 阅读次数: 8152 分类: MySQL

crontab 配置

crontab 中添加

30 4 * * * /usr/bin/mysqldump -uuser db > /path/to/backups/db-`date +"\%Y_\%m_\%d_\%H"`.sql

即每天凌晨 4 点半进行自动备份

注意,这里不要加 -p 参数。

如何自动输入密码

不安全的方式是

直接在 crontab mysqldump 命令的参数中用 -p 指定密码,但是这样做有巨大的风险。

因为,任何用户都可以通过 ps axuw | grep mysqldump 看到进程的命令参数。

一种安全的方式是

在用户的根目录添加配置文件 .my.cnf

[mysqldump]
password=my_password

配置中可以忽略用户名

然后删除该文件对于其他用户的可读权限

chmod 600 .my.cnf

对备份文件进行压缩

目前的做法还不够完美,因为定期备份会占用大量的磁盘空间。

例如一个 1.2M 的数据库备份文件,gzip 之后只有 489K。

30 4 * * * /usr/bin/mysqldump -uuser db | /bin/gzip > /path/to/backups/db-`date +"\%Y_\%m_\%d_\%H"`.sql.gz

解压方法

gunzip -k some_backup.sql.gz

加 -k 参数的目的是,为了保留原压缩文件

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式