Docker 下 MySQL 8 自动备份

Docker 下 MySQL 8 自动备份

更新日期:2023年4月18日
先前使用时可以正常定时备份,但最近使用同样配置但无法生成备份文件,所以寻找了其他自动备份方法,可以移步到:Docker Mysql 8 自动定时备份 查看最新的操作方法。

root@debian:~# crontab -e 进入crontab,添加以下内容:

// 0 2 * * *:crontab 每天 2 点,-u<username> -p<password>:数据库的用户名及密码
0 2 * * * find /var/backup/ -mtime +5 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -u<username> -p<password> --all-databases' > /var/backup/bcksql_`date +\%F`.sql
// 查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本
find /var/backup/ -mtime +5 -name "*.sql" -delete
// 将备份文件保存到该路径下并命名为“bcksql_日期.sql”(以上路径需要有对应权限,否则无法正常存储)
/var/backup/bcksql_`date +\%F`.sql

mysqldump 常用操作示例

备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

备份单个数据库的数据和结构(数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker环境下,可以使用定时任务和脚本来实现MySQL 5.7的自动备份。以下是一个示例: 1. 创建一个名为`backup.sh`的备份脚本,并将其保存在Docker容器中的任意位置,例如`/backup/backup.sh`。 ```shell #!/bin/bash # 备份文件保存路径 BACKUP_DIR="/backup" # MySQL连接信息 MYSQL_HOST="mysql" MYSQL_PORT="3306" MYSQL_USER="root" MYSQL_PASSWORD="password" MYSQL_DATABASE="database" # 备份文件名 BACKUP_FILE="${BACKUP_DIR}/backup_$(date +%Y%m%d%H%M%S).sql" # 执行备份命令 mysqldump -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} > ${BACKUP_FILE} ``` 2. 在Dockerfile中添加以下内容,以将备份脚本复制到Docker容器中。 ```dockerfile COPY backup.sh /backup/backup.sh RUN chmod +x /backup/backup.sh ``` 3. 构建并运行MySQL 5.7的Docker容器。 ```shell docker build -t mysql57 . docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57 ``` 4. 创建一个名为`crontab.txt`的定时任务文件,并将其保存在Docker容器中的任意位置,例如`/backup/crontab.txt`。 ```shell # 每天凌晨3点执行备份任务 0 3 * * * /backup/backup.sh ``` 5. 在Dockerfile中添加以下内容,以将定时任务文件复制到Docker容器中,并安装cron。 ```dockerfile COPY crontab.txt /backup/crontab.txt RUN crontab /backup/crontab.txt RUN apt-get update && apt-get -y install cron ``` 6. 重新构建并运行MySQL 5.7的Docker容器。 ```shell docker build -t mysql57 . docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57 ``` 现在,MySQL 5.7的Docker容器将在每天凌晨3点自动执行备份任务,并将备份文件保存在容器中的`/backup`目录下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值