MySQL|实现定时备份数据

#教程 #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下放置备份脚本

1# 进入文件夹
2cd /etc/cron.weekly
3# vi backup.sh

2.复制一下内容

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

1# Example of job definition:
2# .---------------- minute (0 - 59)
3# | .------------- hour (0 - 23)
4# | | .---------- day of month (1 - 31)
5# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
6# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
7# | | | | |
8# * * * * * user-name command to be executed

其他

要保证定时任务执行还需要保证 cron 程序已经安装并且正在运行(有些系统没有安装),另外如定时任务命令中执行的是脚本,需要把脚本加上执行权限。


博客没有评论系统,可以通过 邮件 评论和交流。 Top↑