MySQL|实现定时备份数据
数据库中的数据是撑起应用系统的重中之重,定期备份数据库中的数据是很有必要的。定期备份数据是为了防止数据库出现意外情况,如被病毒入侵造成删库、勒索等。
实现方式是使用 MySQL 的 mysqldump 备份命令,利用 cron 配合脚本实现定期备份。
mysqldump 备份命令使用
1#mysqldump -u用户名 -p用户密码 数据库名 > 导出文件
2mysqldump -uroot -p111 mydb > mydb_bak.sql
3
4#备份多个数据库
5mysqldump -uroot -p111 dbname mydb1, mydb2 > mydb1_mydb2_bak.sql
6
7#备份所有数据库
8mysqldump -uroot -p111 --all-databases > all_db.sql
cron 定时任务
可以通过 crontab 命令添加 cron 表达式,创建更加细致的定时任务,网上有很多资料可自行参考。
这里是以周为频率备份数据库的,有两种实现方法:一是在 /etc/cron.weekly 放置 shell 脚本,二是使用 crontab 创建定时任务。cron.weekly 文件夹下的 shell 脚本,cron 程序每周会执行一次,把备份脚本的命令写在里面就可以实现定时备份。使用 crontab 命令创建一个定时任务,每当到达指定时间点便执行定时命令(命令可以是个 shell 脚本)。
在/etc/cron.weekly下放置备份脚本
# 进入文件夹
cd /etc/cron.weekly
# vi backup.sh
- 复制以下内容
1#!/bin/bash
2
3#日期
4DATE=$(date +'%Y-%m-%d')
5
6#备份命令
7mysqldump -uroot -p这里放置密码 数据库名> 备份名称-$DATE.sql 2> /dev/null
3.添加执行权限
1chmod +x backup.sh
使用crontab命令创建定时任务实现
1# 查看定时任务
2crontab -l
3
4# 进入cron任务编辑界面
5crontab -e
6
7# 创建任务,在编辑中输入如下内容, 替换中文
822 4 * * 0 root mysqldump -uroot -p密码 数据库名 > 备份名称-$(date +'%Y-%m-%d').sql 2> /dev/null
9
10# 保存并退出vi编辑器
cron 表达式参考
每周定期执行表达式为:22 4 * * 0
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
其他
要保证定时任务能执行,还需要保证 cron 程序已经安装并且正在运行(有些系统没有安装)。另外,如果定时任务命令中执行的是脚本,需要把脚本加上执行权限。