Docker mongoDB容器备份与恢复
admin
2024-03-19 12:43:48
0

Docker mongoDB容器备份与恢复

文章目录

  • Docker mongoDB容器备份与恢复
    • 单词:
    • 1.数据备份:
      • 1. 1 基本语法:
      • 1. 2 实例:
      • 1. 3 注意!!
    • 2. 恢复数据:
      • 2.1 基本语法:
      • 2.2 实例:
    • 3. 示例:
      • 3. 1 主机与容器内结构目录
        • 3.1.1 主机目录
        • 3.1.2 mongoDB容器内目录:
      • 3. 2 步骤:
        • 3. 2.1 创建目录

单词:

音标翻译
dump[dʌmp]:[dang’ mu’ pu]转储;倾倒;抛弃;甩
deny | denied[dɪˈnaɪ] :[di’ nai]否认;否定;拒绝承认
directory[dəˈrektəri] :[di’ ruai 'ke ‘ te 'rui]目录

1.数据备份:

1. 1 基本语法:

>mongodump -h dbhost -d dbname -o dbdirectory

实例:

1. 2 实例:

docker exec -it mymongo mongodump -h localhost -u root -p 123456 -o /tmp/test
参数作用备注
mongodump备份命令
**-h **MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d需要备份的数据库实例,例如:test
-o备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据

1. 3 注意!!

备份的内容是在容器中;

**不要尝试在主机目录中寻找备份的内容, **

需要docker exec -it [container] bash 进入容器内查找

2. 恢复数据:

2.1 基本语法:

>mongorestore -h <:port> -d dbname 
参数作用备注
**mongorestore **恢复命令
-hMongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test不能同时指定 和 --dir 选项,–dir也可以设置备份目录
–dir指定备份的目录不能同时指定 和 --dir 选项。

2.2 实例:

docker exec -it mymongo mongorestore -h localhost -u root -p 123456 --dir /tmp/test

不能同时指定 和 --dir 选项

docker exec -it mymongo mongorestore -h localhost -u root -p 123456 /tmp/test

3. 示例:

3. 1 主机与容器内结构目录

3.1.1 主机目录

├── /
|   ├── mongoDB
|       ├── sh
|            ├── dump.sh
|            ├── dump [文件夹]
|            	   ├── admin_202211041423.tar.gz
|            	   ├── config_202211041435.tar.gz
|            	   ├── water_202211041423.tar.gz
|            	   ├── shop_202211041423.tar.gz

3.1.2 mongoDB容器内目录:

├── /
|   ├── dump
|       ├── list
|  			├── admin_202211041423.tar.gz
|            ├── config_202211041435.tar.gz
|            ├── water_202211041423.tar.gz
|       ├── tmp
|  			├── admin_202211041423
|            ├── config_202211041435
|            ├── water_202211041423

3. 2 步骤:

3. 2.1 创建目录

提前搭建 3.1 中主机、容器内目录树; 否则脚本执行输出:No such file or directory

dump.sh脚本说明:

dump.sh代码片段作用备注
date +%Y%m%d%H%M202211011749 [年月日几点几分]
for DBNAME in ${DB_NAME_ARR[@]}${DB_NAME_ARR[@]}数组中的所有数据库${arr1[@]} 或 ${arr1[*]} 表示的是数组的所有元素
# dump.sh 执行文件
MONGODB_CONTAINER_NAME=你的mongoDB容器名字
DUMP="docker exec -it ${MONGODB_CONTAINER_NAME} "
# 临时备份路径(注:docker 容器内的路径)
OUT_DIR=/dump/tmp
# 压缩后的备份存放路径(注:docker 容器内的路径)
TAR_DIR=/dump/list
# 当前系统时间 等价:DATE=$(date +%Y%m%d%H%M)
DATE=`date +%Y%m%d%H%M`
# 数据库账号
DB_USER=user
# 数据库密码
DB_PASS=password
# 数据库名称,多个用空格隔开
DB_NAME_ARR=("admin config") 
# 代表24小时内的保留
DAYS=1# 最终保存的数据库备份文件
for DBNAME in ${DB_NAME_ARR[@]}
do# 删除临时目录内容rm -rf $OUT_DIR/*# 文件名称:数据库名_时间FILE_NAME="${DBNAME}_${DATE}"# 导出数据的临时目录TARGET_DIR="$OUT_DIR/$FILE_NAME"mkdir -p $TARGET_DIR# 临时目录打包压缩后的文件TARGZ_FILE="${FILE_NAME}.tar.gz"# 存放压缩后文件的目录TARGET_FILE="$TAR_DIR/$TARGZ_FILE"# 执行导出命令# $DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS -d $DBNAME -o $OUT_DIR/$DATE$DUMP mongodump -h 43.143.147.51:27017 -d $DBNAME -o $TARGET_DIR# 判断导出结果flag=`echo $?`if [ $flag == "0" ];thenecho "database $DBNAME success backup to $TARGET_DIR"elseecho "database $DBNAME backup fail!"fi# 压缩格式为 .tar.gz 格式# -P tar 默认采用相对路径压缩打包,需要(-P)允许使用绝对路径 # -v 输出 verbose 日志 $DUMP tar -zcPf $TARGET_FILE $TARGET_DIR/$DBNAME# 将容器内的压缩文件,复制到宿主机与备份脚本dump.sh同级的dump目录下docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE $PWD/dumpdone# 删除 $DAYS 天前的备份文件 ; [ 删除从容器拷贝到主机dump.sh脚本执行同目录下的dump文件夹中的过期文件 ]
find $PWD/dump -mtime $DAYS -delete

相关内容

热门资讯

原创 詹... 今天,詹天文更新了她的社交媒体动态,拉开了话题的序幕。她在上海迪士尼的旅行写真照中,展现出她靓丽的打...
原创 筱... 在一次直播中,筱梅收到了霖霖和玥儿送来的生日蛋糕,脸上洋溢着满满的幸福,迫不及待地与大家分享。这个粉...
原创 广... 这里是刘小顺的旅行和生活研究所。 广州,作为稳居中国“一线城市”之列的南方都会,向来以澎湃的经济活...
原创 汪... 在汪峰与章子怡离婚不到一年的时间里,他便找到了比自己小19岁的女友森林北,这位颜值与气质兼具的网红引...
原创 汪... 昨天,一位网友在日本撞见了汪峰和森林北,正悠闲地逛药妆店。两人都穿着休闲的短裤和运动鞋,森林北的身材...
红薯与糯米的完美结合,湖南糯米... 湖南红薯糯米饼是一道充满乡土气息的传统小吃,以其软糯香甜的口感深受人们喜爱。这种家常美食制作简单,原...
三伏天给爸妈的“养生菜谱”!九... 三伏天,骄阳似火,酷热难耐,空气里都弥漫着湿热的气息。在这个时节,人体很容易受到暑湿的侵袭,出现食欲...
“三伏”养生有“五宜” 眼下已进入“三伏天”。俗话说,“热在三伏”。每年的“三伏”,都是一年当中气温最高、湿气最重、最潮湿闷...
今日最佳:再见了,妈妈。 来源抖音:@一瓶酸酸乳 再饿一会儿,孩子自己划出国了。