使用 crontab & mysqldump 对 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式