欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在linux下定时备份mysql数据库

程序员文章站 2024-03-11 19:17:31
...

注意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:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。