定时任务定时备份docker中mysql并将数据自动保存到另外一台服务器

定时任务定时备份docker中mysql的数据

定时备份脚本 backupdb.sh:

#!/bin/sh
db_user="数据库用户名"
db_passwd="数据库密码"
db_name="需要备份的数据库名"
CONTAINERNAME="容器名"
REMOTE_USER="备份主机用户名"
REMOTE_IP="备份主机ip"
REMOTE_DIR="备份主机的备份目录
name="$(date +"%Y%m%d%H%M%S")"
docker exec -i $CONTAINERNAME /usr/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/usr/data/backup/$name.sql
# 通过scp的方式将备份的数据转移到另外一台服务器
scp /usr/data/backup/$name.sql $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
# 保留最近一个月的数据
find /usr/data/backup -type f -mtime +20 -name "*.sql" -exec rm -rf {} \;

注意需要在docker安装mysql的时候,需要在宿主机新建文件夹 /usr/data/backup

在window中编辑过的脚本需要去除空格和换行:

# 去除脚本中的空格和换行
sed -i 's/\r$//' /usr/data/backup/backupdb.sh


# 脚本中docker主机执行中执行容器命令时候 docker exec -it  需要将 t 去掉,否则在执行定时任务脚本的时候会报错 the input device is not a TTY

通过scp的方式将数据保存到另外一台服务器需要设置ssh免密登录:
请参考:
SSH免密登录,实现A服务器免密登录B服务器

启动定时任务:

# 启动定时任务
crontab -e
# 将定时任务写入其中 分 时 日 月 年
* * * * * /bin/bash /usr/data/backup/backupdb.sh

# 查看定时任务列表
crontab -l

你可能感兴趣的:(docker,Linux,mysql)