背景:最近有个需求,备份服务器A的数据库到服务器B,最后分析了下,主要涉及到两部分(免密登录和定时任务执行脚本)。
一、免密登录
免密登录可参考以下链接:https://www.jianshu.com/p/6ac4f8311476
二、定时任务执行脚本
直接上脚本代码(脚本文件名backup_数据库名.sh):
#!/bin/bash
backup_dir=/home/db_数据库名_files
NOW=`date +%Y%m%d`
mkdir $backup_dir/
#导出表数据和结构
ssh root@服务器IP mysqldump -u用户名 -p密码 数据库名 > $backup_dir/env_数据库名_$NOW.sql
#涉及到特殊字符要转义的可参考ssh root@服务器IP mysqldump -u用户名 -p\'\`qwer\' 数据库名 > $backup_dir/env_数据库名_$NOW.sql
#压缩
gzip $backup_dir/env_数据库名_$NOW.sql
echo $backup_dir/env_数据库名_$(date -d "$NOW-7days" +%Y%m%d).sql.gz
rm -rf $backup_dir/env_数据库名_$NOW.sql
rm -rf $backup_dir/env_数据库名_$(date -d "$NOW-7days" +%Y%m%d).sql.gz
定时任务配置
00 23 * * * /home/backup_数据库名.sh >> /home/testbackup.log 2>&1