mysql 数据库做异机定时器自动全库备份
现在病毒活跃,如果客户的安全做的不好,服务器就会被感染,资料被加密用不了,前几天客户的服务器还被攻击,被勒索,软件没了可以重新部署,数据没了就嗝屁了,所以今天赶紧做个数据库全量备份。
* 目标机即就是保存数据库备份的机器
* 数据库机器就是源机器
1、免密登录
因为定时任务备份完成后需要传输到远程目标机上,所以需要再数据库机器上做免密登录目标机。
(1)生成ssh-keygen -t rsa -b 4096

(2)传输公钥到目标机 ssh-copy-id 用户@目标ip 操作需要输入yes

(3)测试免密登录

成功登录。
2、开发脚本
#!/bin/bash
# MySQL异机全量备份脚本# 配置信息
DB_USER="****"
DB_PASS="****"
BACKUP_PATH="/data/back_tmp"
TARGET_USER="目标用户名"
TARGET_IP="目标ip地址"
TARGET_PATH="/data/back/mysql"
RETENTION_DAYS=7 # 目标机备份保留天数# 生成备份文件名
BACKUP_NAME="mysql_full_$(date +%Y%m%d_%H%M%S).sql.gz"# 导出数据库
echo "开始导出数据库..."
mysqldump -u${DB_USER} -p${DB_PASS} -S /tmp/mysql.sock --all-databases --routines --events --triggers | gzip > ${BACKUP_PATH}/${BACKUP_NAME}
if [ $? -ne 0 ]; thenecho "导出失败!"exit 1
fi# 传输到目标机
echo "开始传输到目标机..."
scp ${BACKUP_PATH}/${BACKUP_NAME} ${TARGET_USER}@${TARGET_IP}:${TARGET_PATH}/
if [ $? -ne 0 ]; thenecho "传输失败!"exit 1
fi# 清理源机临时文件
rm -f ${BACKUP_PATH}/${BACKUP_NAME}# 清理目标机过期备份(保留7天内的)
echo "清理目标机过期备份..."
ssh ${TARGET_USER}@${TARGET_IP} "find ${TARGET_PATH} -name 'mysql_full_*.sql.gz' -mtime +${RETENTION_DAYS} -delete"echo "备份完成!"3、设置定时器
(1)添加脚本的自动执行权限:
![]()
(2)编辑定时器crontab -e
0 3 * * * /data/back-mysql.sh >> /var/log/mysql_backup.log 2>&1每天晚上3点执行

(3)记得给数据库的tmp临时文件夹和目标机的存储文件夹赋权
![]()
![]()
(4)测试


