mysql 定时备份
概述
众所周知,数据就是生命,如果数据被误删或者丢失,那就哭都来不及了,因此数据库的定时备份很重要。本篇文章介绍了如何对mysql进行定时备份。
详细过程
- 修改配置设置密码
高版本mysql是无法使用命令 -p 直接传递密码的,因为不安全。所以需要在配置文件中的 mysqldump
加入账户密码信息,之后运行 mysqldump
就会自动传入了:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在配置文件的 [mysqldump]
下边加入
host = localhost
user = root
password = 'root'
- 编写脚本
主要使用了 mysqldump
工具:
#!/bin/bash
mysqldump youdatabase| gzip > /home/backup_mysql/youdatabase_$(date +%Y%m%d_%H%M%S).sql.gz
以上的数据库替换成你对应的数据库即可。
之后尝试执行脚本,看是否可以成功备份。如果备份成功代表脚本编写的没问题。
- 加入
cron
计划
sudo crontab -e
选择 nano
进入编辑
加入一行:
0 0 * * * /usr/local/backup/bkDatabaseName.sh
0 0 * * *
表示每天零点运行,注意修改脚本为你的脚本位置
之后ctrl + x完成编辑,enter退出
sudo crontab -l
看看是否有刚刚加入的任务。
ok 到这里计划任务就成功加入了。
- 优化脚本,增加删除过期备份的功能,日志记录的功能
脚本参考了网络上其它同学的脚本修改而成,拿去改一下就可以用了,分享给大家:
#!/bin/bash
#备份保存路径
backup_dir=/home/xxx/backup_mysql
#保存备份个数,备份31天数据
number=31
#将要备份的数据库
database_name=xxx
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt
mysqldump momospace | gzip > $backup_dir/$database_name_$(date +%Y%m%d_%H%M%S).sql.gz
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql.gz | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql.gz | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
版权声明
本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途
发布时间:2022年06月05日 21:42:34
备案号:
闽ICP备19015193号-1
关闭特效
评论区#
还没有评论哦,期待您的评论!
引用发言