mysql定时备份、删除7天前记录,并定时同步至远程服务器
环境背景:两台centos7.1服务器A、B,A用于mysql数据库服务器,B用于远程存储数据库备份;现为大家演示:1、A做mysql定时备份并删除7天前备份记录;2、A的数据库备份记录定时同步至B
1.1 mysql备份、删除记录
直接上干货-编写bakmysql.sh脚本(脚本路径自行选择)
vi /usr/sbin/bakmysql.sh
脚本内容:
#!/bin/bash
# Name:bakmysql.sh
# This is a ShellScript For Auto Mysql Backup and Delete old Backup
# To backup mysql backupdir路径自行修改
backupdir=/opt/mysqlbak
time=` date +%Y%m%d%H `
/usr/bin/mysqldump -u root --all-databases | gzip > $backupdir/databases_$time.sql.gz
# To delete old backup 7 days ago 时间设定7天前可自行修改
find $backupdir -name "name_*.sql.gz" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1
#
在~根目录下新建 .my.cnf:
# mysql用户名、密码
[mysqldump]
user=xxxxx
password=xxxxx
更改文件权限:chmod 600 .my.cnf
更改脚本权限:chmod +x /usr/sbin/bakmysql.sh
可运行下脚本测试:/usr/sbin/bakmysql.sh
此时应该你设置的backupdir路径下有备份生成,则shell脚本没问题,继续以下操作;
1.2 设置定时任务
vi /etc/crontab
在最后一行中加入:
#表示每天1点00分执行备份
00 1 * * * root /usr/sbin/bakmysql.sh
注:crontab配置文件格式如下:
分 时 日 月 周 命令
重启crontab:
service crond restart
2.1 文件远程同步-rsync
首先先设置AB服务器ssh免密,否则需要手动输入密码
ssh免密设置步骤如下:
#发起公钥请求
ssh-keygen -t rsa
#密码设置为空,直接回车即可
#将公钥上传到B服务器
ssh-copy-id userb@10.124.84.20
#需要输入B服务器密码
编写rsync.sh脚本
#!/bin/bash
# Name:rsync.sh
# This is a ShellScript For Auto remote Backup and Delete old Backup
rsync -vzacu --delete /opt/mysqlbak/ root@1.1.1.1:/opt/mysqlbak/ --exclude "mysqlbak/index" -e "ssh -p 22"
修改脚本权限:chmod +x rsync.sh
执行测试,观察远程服务器是否同步过去文件,无问题后进行定时任务设置;
2.2 文件同步定时任务设置
基本上同mysql定时任务设置一样:
vi /etc/crontab
在最后一行中加入:
#表示每天2点00分执行备份
00 2 * * * root /usr/sbin/rsync.sh
重启crontab:
service crond restart
以上,即快速完成mysql本地化定时备份、删除冗余备份记录、远程同步备份的操作。具体命令使用可自行man学习,本文只提供一种配置思路,实现方法还有很多,可自行开发修订。