只讲怎么操作,有错的地方请大佬们指教!谢谢!
创建一个脚本文件
我这里是 /home/back/mysql/script/bkDatabaseName.sh,内容:
# 第一行 (因为我mysql是用docker容器创建的,所以命令中带有docker),将该数据库备份到 /home/backup/mysql/sqlFile文件夹下名称为数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
docker exec mysql mysqldump 数据库名称 | gzip > /home/backup/mysql/sqlFile/数据库名称_$(date +%Y%m%d_%H%M%S).sql.gz
# 第二行 保留7天以内的文件
find /home/backup/mysql/sqlFile -name "*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
# 第三行 同步备份文件给其他服务器(数据安全),注意IP后面的冒号
scp /home/backup/mysql/sqlFile/* root@远程服务器IP:/mnt/backup/mysql/文件夹名
创建完脚本文件后,不要忘记赋予其执行权限
chmod +x /home/back/mysql/script/bkDatabaseName.sh
1.crontab
命令行输入:
crontab -e
直接在里面加定时任务,我是每天凌晨1点执行
1 0 * * * /home/back/mysql/script/bkDatabaseName.sh
bkDatabaseName.sh是定时到点要执行的任务脚本
2.本地备份
这个其实没什么好说的
# 进入文件夹
cd /home/back/mysql/script/
# 执行脚本
./bkDatabaseName.sh
查看在/home/backup/mysql/sqlFile下有文件生成,例:数据库名_20210311_160110.sql.gz
3.远程备份
首先解决两个服务器之间的无密码传输,定义本机为client,远程服务器为server
<1> 在client中输入命令
ssh-keygen -o
全部按回车键,查看生成的文件
# 进入到root下
cd ~
# 进入 .ssh
cd .ssh/
# 查看
ls
会发现以下文件
然后传文件给远程服务器为server
scp -p /root/.ssh/id_rsa.pub root@远程服务器IP:/root/.ssh/
期间会让你输入远程服务器密码,成功后
登录远程服务器:
cd ~
cd .ssh
# 这个命令可以一对多,也就是可以多个client连接server,是否多个可以vim查看authorized_keys中是否多一行
cat id_rsa.pub >> authorized_keys
这样建立了服务器之间的安全信任
server端手动创建文件夹/mnt/backup/mysql/文件夹名
测试是否成功,返回client端
# 进入文件夹
cd /home/back/mysql/script/
# 执行脚本
./bkDatabaseName.sh
查看client端和server对应文件夹是否生成文件
参考:https://blog.csdn.net/zhezhebie/article/details/72626837