centos定时crontab执行任务,docker中的mysql数据备份(本地备份、远程备份)

只讲怎么操作,有错的地方请大佬们指教!谢谢!

创建一个脚本文件

我这里是 /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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值