Linux下定时备份Mysql数据库
编辑
748
2022-02-26
Linux下定时备份Mysql数据库
前言
作为一个菜鸟程序员 ,时刻心系公司数据问题, 生怕屎山一样的代码引起故障 ,导致数据丢失 ,所以定时备份我的一亩三分田显得尤为重要。在此分享一下我的备份计划。
备份
首先, 我们得找一个足够大的地方 ,足够去存储备份的数据库文件 ,先通过df -h
找到一个空间大的目录 。
可以看到 /wanwutech
目录空间很大 ,此目录挂载了一个500G的云盘 ,所以就他了。
1. 创建备份目录
cd /wanwutech # 进入选定目录
mkdir /wanwutech/backup #创建要备份到的目录
2. 创建备份脚本
cd /wanwutech/backup
vi mysql_backup.sh
输入/粘贴脚本内容:
#!/bin/bash
#database_name 为数据库名 如果有多个数据库需要备份 ,可以在 mysqldump 语句中将数据库名'$database_name'参数更改为'-A' ,表示备份所有数据库
database_name='application' #数据库名
#这里我想每天备份 ,按日期目录存储 ,所以备份文件按日期目录存储 ,备份文件后缀增加当前时间 ,一天可以有多个备份
backup_dir='/wanwutech/backup/'$(date +'%Y-%m-%d')'/' #备份的路径
current_time=$(date +'%Y-%m-%d_%H%M%S') #当前的时间
filepath=$backup_dir$current_time'.sql.gz' #将backup_dir和时间组合起来,再加个后缀
# 先检验并创建日期文件夹
echo '校验并创建日期文件夹...'
if [ ! -d "$backup_dir" ];then
mkdir $backup_dir
fi
echo '开始数据库备份----------------------------------------'
mysqldump --defaults-extra-file=/wanwutech/backup/mysql_backup.cnf $database_name | gzip > $backup_dir$current_time'.sql.gz'
# 如果是备份多个数据库, dump语句改为
mysqldump --defaults-extra-file=/wanwutech/backup/mysql_backup.cnf -A | gzip > $backup_dir$current_time'.sql.gz'
echo '数据库备份成功----------------------------------------'
3. 创建备份配置文件
需要创建备份的配置文件 ,配置数据库用户名密码等
vi mysql_backup.cnf
输入/粘贴内容:
[mysqldump]
#max_allowed_packet = 400M #
host=127.0.0.1 #地址
user=root #数据库用户名
password='Azxvg78pl,' #数据库密码
[mysql]
host=127.0.0.1
user=root
password='Azxvg78pl,'
4.给脚本添加权限
chmod 755 mysql_backup.sh
5.执行脚本
sh mysql_backup.sh
执行完成后就备份成功了 ,如果有错误 ,请根据错误类型自行分析 ,我这样搞是没有错误的 ,当然因环境,人为等因素 ,不能保证在你那不报错。没有问题后说明这样备份是可以的 ,接下来添加定时任务就可以了。
添加定时任务
使用crontab来创建任务
crontab -e
添加执行脚本, 先解释一下脚本格式, 基本格式为
* * * * * command
前面5个* 分别代表 分 时 日 月 周
后面command代表具体执行的命令
下面给出一些示例
-
每5分钟执行一次 ,在分配置除以5就是每5分钟执行一次
*/5 * * * * /wanwutech/backup/mysql_backup.sh #每5分钟执行一次
-
每12小时执行一次
0 */12 * * * /data/backup/mysql_backup.sh #每12小时备份一次
-
每天定时执行
0 23 * * * /data/backup/mysql_backup.sh # 每天23点执行
可以设置多个定时执行时间, 逗号分隔, 如
0 12,23 * * * /data/backup/mysql_backup.sh # 每天12点和每天23点执行
添加完成后保存即可 ,前提是系统要启动crontab 可以通过 system corn start
启动服务
至此 ,定时备份功能已经完成了 ,那接下来 ,如何恢复备份的数据呢?
恢复
恢复也很简单 ,这里我们备份的是gz压缩文件,所以先解压它.
-
解压备份文件
gzip /wanwutech/backup/2022-05-05/2022-05-05_120000.sql.gz #解压备份文件 #上面那种解压会删掉原压缩文件 ,可以采用下面这种方式解压 gunzip -c /wanwutech/backup/2022-05-05/2022-05-05_120000.sql.gz > /wanwutech/backup/2022-05-05/2022-05-05_120000.sql
-
解压完成后加入mysql ,恢复数据
mysql -u root -p # 输入密码... # 进入对应数据库 use application; # 恢复数据 source /wanwutech/backup/2022-05-05/2022-05-05_120000.sql
- 12
- 1
-
分享