Docker 下备份 Mariadb 数据库文件
在Docker容器中备份MariaDB数据库的方法如下:首先通过docker ps -a找到容器ID,然后进入容器查找mariadb-dump脚本路径(通常在/usr/bin/)。验证脚本可用后,可直接使用docker exec命令进行备份。文中还提供了一个完整的备份脚本,包含自动创建备份目录、执行备份、压缩文件以及清理7天前旧备份的功能。该脚本通过环境变量配置容器名、数据库信息等参数,适合用于定
·
描述
正常来说我们备份脚本,一般都是执行数据库目录下的 …dump 文件的,但是在镜像中并且运行的容器如何备份?
就是使用容器中的 Mariadb 自带的备份脚本
操作
1、查看我们所有正在运行的容器信息
docker ps -a
找到容器的ID
2、然后我们进入到容器
docker exec -it 镜像运行的id bash
进来之后,找到 Mariadb 安装的所在目录
find -name mariadb
找到目录后,就能看到所对应的备份文件,注意后面的mariadb不是目录!
cd /usr/bin/
ls mariadb
mariadb-dump
这个就是备份脚本
验证一下脚本是否可用
mariadb-dump -uroot -p123456 你的数据库名字 > backup.sql
是有大小的,那么就可以了,记住当前dump脚本的路径。
退出去容器,用docker 的 exec 命令备份试一下
docker exec mariadb /usr/bin/mariadb-dump -uroot -p123456 你的数据库名称 > backup.sql
ok,执行成功了,大小的话,数据库数据我有变更,所以大一些。
配合外部的cron定时任务就可以进行定时了
完整的备份脚本
#!/bin/bash
# 定义变量
BACKUP_DIR="./data_file" # 备份存储目录
CONTAINER_NAME="mariadb" # MariaDB容器名
MYSQL_USER="root" # 数据库用户名
MYSQL_PASSWORD="123456" # 数据库密码
DATABASE_NAME="你数据的名字" # 要备份的数据库名
DATE=$(date +%Y%m%d_%H%M%S) # 当前时间格式
# 创建备份目录
mkdir -p $BACKUP_DIR
# 使用 `docker exec` 执行 `mysqldump` 备份
docker exec $CONTAINER_NAME /usr/bin/mariadb-dump -u$MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $BACKUP_DIR/${DATABASE_NAME}_${DATE}.sql
# 压缩备份文件(可选)
gzip $BACKUP_DIR/${DATABASE_NAME}_${DATE}.sql
# 删除7天前的旧备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete
定时cron命令设置凌晨12点执行一次
运行以下命令编辑当前用户的 cron 任务
crontab -e
在打开的文件末尾添加以下行
0 0 * * * 你的备份脚本路径/backup-hpc-cloud.sh
检查任务是否添加成功
crontab -l
正常会显示
0 0 * * * /opt/mariadb_backup.sh

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)