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