在linux下定时备份mysql数据库

注意mysql版本,在mysql5.6版本之后使用明码的mysql密码会提示:

Warning: Using a password on the command line interface can be insecure.

虽然数据库能够正常导出,但是密码最好还是不要暴露在脚本中为好。

1.修改数据库配置文件

有些的数据库配文件为/etc/my.cnf 有些则是/etc/my.cnf

添加如下代码

[mysqldump]
user=databaseName
password=databasePassword

修改之后在使用mysqldump命令时 就不需要使用-u 和 -p了

即:mysqldump -udatabaseName -pdatabasePassword database>expdatabase.sql

变为:mysqldump database>expdatabase.sql

2.新建导出脚本

新建文件夹

#在指定位置新建 backup  bakmysql  bakmysqlold文件夹 用于存放导出脚本 和导出的最新数据库和历史导出数据
mkdir backup
mkdir backup/bakmysql
mkdir backup/bakmysqlold

导出数据库,并删除7天之前的导出数据库

#新建脚本
touch bakmysql.sh
db_name="databalseName"
#进入备份目录将之前的移动到old目录
cd /home/paguma/backup/bakmysql
echo "you are in bakmysql directory now"
mv $db_name* /home/paguma/backup/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"
#备份目录
backup_dir="/home/paguma/backup/bakmysql"
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
mysqldump $db_name>"$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day  +"%Y-%m-%d")
if [ -f /home/paguma/backup/bakmysqlold/pashanhu-$SevenDays.sql ]
then
rm -rf /home/paguma/backup/bakmysqlold/pashanhu-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi

将脚本加入到定时任务

将任务添加至计划任务

crontab -e
#每天晚上23:59分运行备份任务
59 23 * * * ./bakmysql.sh

crontab相关知识如下

启动cron服务
systemctl start crond

停止cron服务
systemctl stop crond

重启cron服务
systemctl restart crond

设置cron开机启动
systemctl enable crond.service

查看当前crontab,输入 crontab -l

编辑当前crontab,输入 crontab -e

删除当前crontab,输入 crontab  -r

添加定时任务
crontab -e

crontab文件格式:

*           *        *        *        *           command

minute      hour      day     month      week      command

分          时         天      月        星期       命令

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

你可能感兴趣的:(在linux下定时备份mysql数据库)