linux ubuntu 如何自动定时备份数据库到服务器 mysql mysqldump cron
一、需求描述
我有一个小日记应用,从 2019 年到 2022 年已经出现了两次比较严重的数据丢失的情况,一次是服务器错误,一次是人为。
所以我急切需要它能自己自动备份数据库,到服务器也好,到其它地址也好。
二、如何实现
目的
我的目的是自动备份数据库到 root 的 /root/backup
目录中
实现这个功能,需要使用 mysqldump
和 linux 的 cron
定时任务。
1. 写一个备份数据库到指定文件夹的脚本
在 /root
目录下新建一个名为 database_backup.sh
的脚本文件,其内容如下
#!/bin/sh
current_date=$(date +'%Y-%m-%d')
mysqldump --databases diary > "/root/backup/diary-backup-${current_date}.sql"
给这个脚本添加可执行属性
chmod +x database_backup.sh
这个脚本的作用是 导出 数据库中名为 diary 的数据库到 /root/backup/
目录下,文件名为 diary-backup-2022-12-29.sql
,这个时间会自动根据当前日期生成。
2. 设置 cron 让这个脚本每天定时执行
接下来就是设置 cron 让它每天定时执行上面的那个脚本,来实现自动备份的目的。
具体 cron 的高级设置,可以查看相关教程,这里我只简单介绍使用 root 用户进行备份的
编辑 cron 的计划表
crontab -e
如果你第一次使用,ubuntu 会提示让你选择默认的编辑器,根据自己喜好选择就好。我习惯使用 vim
root@aliyun:/var/spool/cron/crontabs# crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
然后会显示这样的画面
只需要根据 cron 的规则在这里面添加指令即可。cron 的规则说明我就不在此细讲了。
这里我们这样添加,意思是每天的 2 点执行 bash /root/database_backup.sh
这个脚本
0 2 * * * bash /root/database_backup.sh
然后保存即可。
三、结果
能看到我的已经在自动备份了