Mysql的docker容器数据备份

本文介绍了如何在Docker环境下设置定期备份MySQL数据库,并自动删除超过7天的旧备份。首先,通过yum安装crontab和创建备份模板,然后设置脚本文件权限。接着,利用crontab添加定时任务,例如每天凌晨12点01分执行备份。此外,还展示了如何配置脚本以每分钟执行一次备份。这个教程对于保障数据安全和管理存储空间非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql的docker容器数据备份

1、安装crontab (如果已经有可以不需要安装)

yum -y install vixie-cron
yum -y install crontabs

2、新增备份模板
默认模板

#执行备份  mysq;:你的mysql容器名字   
docker exec  mysql mysqldump -u用户名 -p数据库密码 指定数据库 > /home/mysql/自定义名字_$(date +%Y%m%d_%H%M%S).sql

#只保留七天内的数据
find /home/mysql -name "同上的自定义名字_*" -mtime +7 -exec rm -rf {} \;

例子:
vi /home/mysql/backups/backups.sh

#执行备份  mysq;:你的mysql容器名字   
docker exec  mysql2 mysqldump -uadmin -p123456 doorbell > /home/mysql/doorbell_$(date +%Y%m%d_%H%M%S).sql

#只保留七天内的数据
find /home/mysql -name "doorbell_*" -mtime +7 -exec rm -rf {} \;

3、脚本文件授权

脚本文件授权

chmod +x **.sh

4、增加定时任务

增加定时任务

vi /etc/crontab 

根据自身需要配置对应的时间cron表达式

01 00 * * * root /shell/backups.sh 每天凌晨12点01分执行
01 00 * * * root /home/mysql/backups/backups.sh 每天凌晨12点01分执行
*/1 * * * * root /home/mysql/backups/backups.sh //每隔一分钟执行一次
### 进入 Docker 中的 MySQL 容器备份数据库的操作指南 #### 使用 `mysqldump` 工具进行备份 为了在 Docker 中的 MySQL 容器内执行备份操作,可以利用 `mysqldump` 命令来生成逻辑备份。此命令会将数据库的结构和数据导出为 SQL 脚本文件[^3]。 以下是具体方法: 1. **进入运行中的 MySQL 容器** 可以通过以下命令进入正在运行的 MySQL 容器: ```bash docker exec -it <container_name> bash ``` 将 `<container_name>` 替换为实际的容器名称或 ID。 2. **执行 mysqldump 备份** 如果已经进入了容器内部,则可以直接运行如下命令完成备份: ```bash mysqldump -u root -p<password> --all-databases > /backup/all_databases.sql ``` 或者不进入容器而直接从宿主机上执行该命令: ```bash docker exec -i <container_name> sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --all-databases' > all_databases.sql ``` 上述命令中 `-u root` 表明使用的是根用户登录;`-p<password>` 后面接密码(注意无空格),或者交互式输入密码;最后重定向输出至指定路径下的 `.sql` 文件。 3. **验证备份文件** 确认备份成功后可查看生成的 SQL 文件内容: ```bash cat all_databases.sql | head -n 20 ``` #### 利用 Docker 的导出功能迁移整个容器 除了单独备份数据库外,还可以借助 Docker 自身提供的导入导出机制整体迁移 MySQL 容器实例[^2]。这一步骤适用于希望连同环境设置一起转移的情况。 ##### 导出现有容器 ```bash docker export <container_id_or_name> > mysql_container.tar ``` ##### 在目标机器重新加载镜像 上传 tar 包到新服务器后再恢复成新的容器: ```bash cat mysql_container.tar | docker import - my_new_mysql_image:v1 docker run -d --name new_mysql_instance -p 3306:3306 my_new_mysql_image:v1 ``` 以上方式能够快速复制完整的应用状态而不必担心依赖关系问题。 --- ### 注意事项 当频繁修改配置时建议同步更新外部挂载卷的内容以便持久化存储更改后的参数设定[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值