Docker 下备份 Mariadb 数据库文件

描述

正常来说我们备份脚本,一般都是执行数据库目录下的 ...dump 文件的,但是在镜像中并且运行的容器如何备份?

就是使用容器中的 Mariadb 自带的备份脚本

操作

1、查看我们所有正在运行的容器信息

shell 复制代码
docker ps -a

找到容器的ID

2、然后我们进入到容器

shell 复制代码
docker exec -it 镜像运行的id bash

进来之后,找到 Mariadb 安装的所在目录

shell 复制代码
find -name mariadb

找到目录后,就能看到所对应的备份文件,注意后面的mariadb不是目录!

shell 复制代码
cd /usr/bin/

ls mariadb

mariadb-dump这个就是备份脚本

验证一下脚本是否可用

shell 复制代码
mariadb-dump -uroot -p123456 你的数据库名字 > backup.sql

是有大小的,那么就可以了,记住当前dump脚本的路径。

退出去容器,用docker 的 exec 命令备份试一下

shell 复制代码
docker exec mariadb /usr/bin/mariadb-dump -uroot -p123456 你的数据库名称 > backup.sql

ok,执行成功了,大小的话,数据库数据我有变更,所以大一些。

配合外部的cron定时任务就可以进行定时了

完整的备份脚本

shell 复制代码
#!/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 任务

shell 复制代码
crontab -e

在打开的文件末尾添加以下行

shell 复制代码
0 0 * * * 你的备份脚本路径/backup-hpc-cloud.sh

检查任务是否添加成功

shell 复制代码
crontab -l

正常会显示

shell 复制代码
0 0 * * * /opt/mariadb_backup.sh
相关推荐
ShiXZ2134 分钟前
Docker Compose 安装与配置指南
运维·docker·容器
麦聪聊数据6 分钟前
企业数据市场建设(三):API 化服务封装,让数据开箱即用、避免重复开发
数据库
麦聪聊数据18 分钟前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库
正儿八经的少年25 分钟前
redis 的大 key 和热 key 详解
数据库·redis·缓存
AI砖家29 分钟前
多智能体系统实战:架构设计、数据库表设计与 Skill 体系
数据库·多智能体·skill·agent架构设计·agengt
夜雪一千1 小时前
MySQL查询条件的顺序是否影响查询效率
数据库·mysql
BullSmall1 小时前
Anolis OS 8.10 Docker 部署 SonarQube 9.9 完整教程
运维·docker·容器
X-⃢_⃢-X1 小时前
十、Redis之布隆过滤器
数据库·redis·缓存
Nturmoils1 小时前
订单号查出了三笔,我以为是数据脏了,其实是自己写错了
数据库
ZKNOW甄知科技1 小时前
燕千云深度集成飞书:以AI之力,开启无感IT运维体验
大数据·运维·网络·数据库·人工智能·低代码·集成学习