【Docker】备份和迁移数据

本文详细介绍了如何使用Docker对MongoDB数据库进行数据备份和迁移,包括在Ubuntu容器中操作、创建volume、使用tar命令以及Studio3T工具的应用。

更多内容请看专栏 💘【 Docker快速上手 Docker基础 】💘 


备份和导入 Volume 的流程

备份:

1.运行一个 ubuntu 的容器,挂载需要备份的 volume 到容器,并且挂载宿主机目录到容器里的备份目录。
2.运行 tar 命令把数据压缩为一个文件。
3.把备份文件复制到需要导入的机器。

迁移(导入):

1.运行 ubuntu 容器,挂载容器的 volume,并且挂载宿主机备份文件所在目录到容器里。
2.运行 tar 命令解压备份文件到指定目录。


目录

下面以MongoDB的数据备份和迁移做演示

Step1:数据备份

 Step2:数据迁移


下面以MongoDB的数据备份和迁移做演示

Step1:数据备份

运行一个 mongodb,创建一个名叫mongo-data的 volume 指向容器的 /data 目录,暴露端口01

docker run -p 01:27017 --name mongo -v mongo-data:/data mongo:4.4

也可以让内容在后台输出使用下面命令 

docker run -p 01:27017 --name mongo -v mongo-data:/data -d mongo:4.4

 

接着我们使用​​​​​​Studio 3T for Mongo连接mongo

​ ​连接成功后添加一个数据库再添加一个表

 随便写点数据,参考内容

{
    '_id':'u1',
    'name':'哈仔康康',
    'age':19,
 
}

​ 现在随便找个地方新建一个文件夹,可以取名叫backup,然后终端输入命令

docker run --rm --volumes-from mongo -v d:/backup(绝对路径):/backup ubuntu tar cvf /backup/backup.tar /data/

指令执行完会在backup下生成一个压缩包,这时候数据就已经备份好了 

 Step2:数据迁移

接下来为了方便做数据迁移的展示我们新生成一个暴露端口为02的

docker run -p 02:27017 --name mongo2 -v mongo-data2:/data -d mongo:4.4

我们可以上Studuio 3T for MongoDB上连接一下

可以看见现在还没有01容器刚才写的test数据库 

然后我们将刚才生成的backup的包导入02容器

docker run --rm --volumes-from mongo2 -v d:/backup(绝对路径):/backup ubuntu bash -c "cd /data/ && tar xvf /backup/backup.tar --strip 1"

导入完成后我们刷新一下dm02这个数据库 (注意刚才导入数据的时候自动关闭了02容器需要手动去Docker Desktop重新启动)

 

成功导入数据!

恭喜你!已经学会了Docker的数据备份和迁移 !

可使用 MinIO 的 MC(MinIO Client)工具或 rclone 工具对 Docker 中的 MinIO 容器数据进行备份迁移到新的 MinIO 中。 ### 使用 MC 工具迁移数据 #### 迁移前准备 1. 下载 mc: ```bash curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o 下载目录/mc ``` 2. 赋予权限: ```bash chmod +x 下载目录/mc export PATH=$PATH:下载目录/ ``` #### 数据迁移 1. 设置旧 MinIO 地址: ```bash mc alias set minio1 http://旧ip:port minioadmin minioadmin ``` 2. 设置新 MinIO 地址: ```bash mc alias set minio2 http://新ip:port minioadmin minioadmin ``` 3. 查看已经添加的 MinIO 信息: ```bash mc config host ls ``` 4. 全量迁移,重名文件不覆盖,bucket 不存在会自动创建: ```bash mc mirror minio1 minio2 ``` 5. 需要覆盖重名文件,加 `--overwrite`: ```bash mc mirror --overwrite minio1 minio2 ``` 6. 只是迁移某个 bucket,以 astar 为例,目标的 bucket 需要提前建好: ```bash mc mirror minio1/astar minio2/astar ``` ### 使用 rclone 工具迁移数据 #### 配置 rclone 编辑配置文件(通常为 `~/.config/rclone/rclone.conf`),添加以下内容: ```plaintext [old] type = s3 provider = Minio env_auth = false access_key_id = minio secret_access_key = minio region = endpoint = http://旧ip:9000 [new] type = s3 provider = Minio env_auth = false access_key_id = minio secret_access_key = minio region = endpoint = http://新ip:9000 ``` #### 迁移数据 ```bash rclone sync -P old:bucket new:bucket ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值