linux下启用定时任务对mysql数据库进行定时备份
- 备份规则
每天凌晨3点备份整个数据库到opt/data/bakmysql,文件名为:数据库名-当天日期;在此之前将前天的数据库备份文件移动到opt/data/bakmysql/oldbak;之后删除前7天的数据库文件(数据库备份文件最多只保留一周)
- 编写脚本
touch bakmysql.sh
chmod a+X bakmysql.sh
vi bakmysql.sh
#!/bin/sh
echo "step1: move old sql to /opt/data/bakmysql....."
mv /opt/data/bakmysql/*.sql /opt/data/bakmysql/oldbak
echo "OK!!! "
echo ""
echo "step2: bak realdb data into sql..... "
Now=$(date +"%d-%m-%Y")
File=/opt/data/bakmysql/test-$Now.sql
mysqldump -uroot -proot test >$File
echo "OK!!! "
echo ""
echo "step3: delete old sql before a week!"
sevenDays=$(date -d -7day +"%d-%m-%Y")
rm -rf /opt/data/bakmysql/oldbak/*-$sevenDays.sql
#echo "You have delete 7days ago bak file "
echo "OK!!! "
- 脚本执行后警告信息解决
MySQL 5.6 警告信息 command line interface can be insecure 修复
在命令行输入密码,就会提示这些安全警告信息;
Warning: Using apassword on the command line interface can be insecure.
注:mysql -u root -pPASSWORD 或 mysqldump -u root -pPASSWORD 都会输出这样的警告信息.
解决方法:
对于mysqldump 要如何避免出现(Warning:Using a password on the command line interface can be insecure.) 警告信息呢?
vim /etc/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password
修改完配置文件后, 只需要执行mysqldump 脚本就可以了;备份脚本中不需要涉及用户名密码相关信息;(替换以上脚本中mysqldump -uroot -proot test >$File为mysqldump test>$File)
- 定时任务添加
vi /etc/crontab添加以下内容:
0 3 * * * root /opt/data/bakmysql/backup.sh
- 解决重启后定时任务失效
vi /etc/rc.local添加一下内容:
/bin/systemctl start crond.service
- 相关命令
systemctl start crond.service
systemctl restart crond.service
systemctl stop crond.service
systemctl status crond.service