检查是否安装了crontab
rpm -qa|grep crontab
如果没有安装,则执行
yum -y install vixie-cron
查看crond状态
service crond status
如果没有运行,则执行
service crond start
创建备份目录
mkdir -p /data/rollback/store
mkdir -p /data/rollback/scripts
chmod 600 /data/rollback/scripts
备份脚本
vim /data/rollback/scripts/db_backup.sh
查看dump命令位置
find / -name mysqldump
脚本如下
#!/bin/bash
#mysql backup database
/usr/bin/mysqldump -uroot yourDatabase > /data/rollback/store/yourDatabase-$(date +%F -d "-1day").sql
/usr/bin/mysqldump --single-transaction -uroot yourDatabase > /data/rollback/store/yourDatabase-$(date +%F -d "-1day").sql
# delete 7 day ago
find /data/rollback/store -name "*.sql" -mtime +7 -delete
备份保留7天
定时任务
vim /var/spool/cron/root
任务如下
# cornd: sql backup data
00 00 * * * /bin/sh /data/rollback/scripts/db_backup.sh &>/dev/null
修改my.conf
vim /etc/my.conf
添加如下内容,此配置避免了dump时需要手动输入密码。且mysql已禁止dump时明文显示密码
[mysqldump]
user=root
password=rootpassword
host=127.0.0.1
重启mysql服务
service mysqld restart
如果先前my.conf中配置了skip-grant-tables,历史数据是以mysql用户创建的,则需要执行如下命令。负责dump不成功。
grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by "o2Y*eKMIK";
flush privileges;