MySQL数据定时备份

在工作中经常需要接触数据库。为了保证数据安全与突发事件故障恢复,定时备份数据库的数据是十分有必要的。我们以Linux下的Mysql为例聊一聊怎么简单的备份数据。

一、备份脚本准备

Mysql中自带一个逻辑备份工具mysqldump.我们可以直接在命令行中对mysql数据进行操作。

以下是常见的命令格式:

1
2
3
4
5
mysqldump [选项] 数据库名 [表名] > 脚本名
---举个栗子---
mysqldump -uroot test > /home/backup.db
---解释---
通过用户root将test数据库进行备份到/home目录下的backup.db文件中

同样的,将所有mysql所有数据库中数据备份即为:

1
mysqldump [选项] --all-databases [选项]  > 脚本名

将以上命令写在shell脚本中,并赋予可执行权限。执行以上脚本的时候,由于没有设置登录密码所以还需要手动设置密码,当然在[选项]中也可以增加密码属性,但是由于安全性考量不建议这样做。

我们采用将密码放在my.cnf中并且设置该配置文件无读权限(chmod 600 my.cnf)的方式来实现免密备份。

my.cnf中增加如下配置:

1
2
3
[mysqldump]
user=XXX
password=XXX

当然这里配置的用户要与脚本中的用户一致,并且在此处配置后,在脚本中不要添加-p的选项。

二、启动定时任务

linux中有一个定时命令crontab,我们通常使用crontab -e来操作当前用户的定时任务。

执行以上命令后,在弹出的工作表中编辑脚本的定时规则。

其格式为:

1
2
3
4
5
6
7
8
* * * * * backup.sh
---解释---
前五个 * 分别代表:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天

所以,这样就可以很自由的设置定时任务,比如说我定时一个凌晨两点备份数据库信息的任务:

1
2
3
4
5
0 2 * * * /home/backup.sh
---解释---
0代表00分
2代表02点
其他没有设置,所以每次到凌晨两点是都会执行这个数据备份脚本。