docker安装mongodb并备份

安装

官方镜像地址: https://hub.docker.com/_/mongo?tab=description

可以查看对应的dockerfile, 通过观察docker-entrypoint.sh可以看出,docker版的mongo移除了默认的/etc/mongo.conf, 修改了db数据存储路径为 /data/db.

 docker run  --name mongod -p 27017:27017  -v /data/opt/mongodb/data/configdb:/data/configdb/ -v /data/opt/mongodb/data/db/:/data/db/ -d mongo:4 --auth 

设置账号和密码

登陆镜像,设置admin

 docker exec -it mongod mongo admin

 >db.createUser({ user: ‘admin‘, pwd: ‘admin123456‘, roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

设置一个其他用户

 db.auth("admin", "admin123456")
 db.createUser({ user: ‘yapi‘, pwd: ‘yapi123456‘, roles: [ { role: "readWrite", db: "yapi" } ] });
 

远程登陆

我们从一个其他的服务器去登陆刚才创建的mongo。

先来获取刚才创建的mongo的host,可以通过docker inspect,也可以

 docker exec -it mongod cat /etc/hosts

先用docker创建另一个mongo_client并连接我们的mongo

 docker run -it --name mongo mongo:4 mongo -host 172.17.0.5 -u yapi -p yapi123456

 > db
test
> use yapi
switched to db yapi
> show collections
test
>  db.test.find();
{ "_id" : ObjectId("5c9dca2b4d225a0ca0fb29c9"), "name" : "ryan" }

备份

创建mongodb服务的时候已经导出了我们的数据文件,现在干掉docker,重新跑,看我们的数据是否丢失。

 docker kill mongod
 docker rm mongod
  docker run  --name mongod -p 27017:27017  -v /data/opt/mongodb/data/configdb:/data/configdb/ -v /data/opt/mongodb/data/db/:/data/db/ -d mongo:4 --auth 

去登陆查看数据,发现没有丢失

接下来就是备份我们的/data/opt/mongodb/data 目录即可。当然,这是全量备份,想要增量备份,参照官方文档进行备份。

全量备份/data/opt/mongodb/data

创建备份目录/data/opt/mongodb/backup/data

创建备份日志目录: /data/log/backup/mongodb

创建备份脚本backup-mongodb.sh

 source /etc/profile

LOG_DIR=/data/log/backup/mongodb
SOURCE_DIR=/data/opt/mongodb/data
BACKUP_DIR=/data/opt/mongodb/backup/data

REMOTE_IP=192.168.1.98
REMOTE_USER=root
REMOTE_DIR=/data/opt/backup/mongodb

function log()
{
  echo "[ `date ‘+%Y-%m-%d %H:%M:%S‘` ] $1"
}

# 备份
function main(){
    d=`date "+%Y%m%d%H%M%S"`
    fname=${BACKUP_DIR}/backup_${d}.tgz
    log "开始备份 ${fname}"
    tar -zcf ${fname} ${SOURCE_DIR}

    scp ${fname} [email protected]$REMOTE_IP:$REMOTE_DIR
    log "备份到远程成功"

    log "开始删除7天前的备份"
    find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
    log "删除完毕"
}

main >> ${LOG_DIR}/backup.log  2>&1

创建定时任务,每天2点全量备份

 0 2 * * * sh /data/opt/mongodb/backup/backup-mongodb.sh

同时,远程备份服务器的定时清理脚本

source /etc/profile

BACKUP_DIR=/data/opt/backup
LOG_DIR=/data/log/backup

function log()
{
  echo "[ `date ‘+%Y-%m-%d %H:%M:%S‘` ] $1"
}

#
function main(){

    log "开始删除7天前的备份"
    find ${BACKUP_DIR} -type f  -atime +7 |xargs -t -i rm {}
    log "删除完毕"
}

main >> ${LOG_DIR}/clean_backup.log 2>&1

原文地址:https://www.cnblogs.com/adjk/p/11077530.html

时间: 2024-08-28 19:09:09

docker安装mongodb并备份的相关文章

Docker 安装 MongoDB

Docker 安装 MongoDB 方法一.docker pull mongo 查找 Docker Hub 上的 mongo 镜像: docker search mongo 这里我们拉取官方的镜像 mongo:3.2: docker pull mongo:3.2 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 mongo,标签为 3.2 的镜像: docker images | grep mongo 方法二.通过 Dockerfile 构建 创建Dockerfile 首

docker 安装MongoDB以及设置用户

docker pull mongo (拉取镜像 默认最新版本) docker images (查看镜像) docker run -p 27017:27017 -td mongo (启动镜像) docker ps (查看启动的镜像) docker exec -it 镜像id /bin/bash (进入容器) mongo (进入mongodb) 下面是安装完之后,正确的执行步骤,创建管理账户用户和普通用户的步骤, 创建管理账户,然后退出. use admindb.createUser( { user

01.Docker安装MongoDB

查询MongoDB镜像 docker search mongo 拉取MongoDB镜像 docker pull mongo # 拉取指定版本镜像 docker pull mongo:3.4 启动MongoDB容器 docker run -p 27017:27017 --name mymongo -d mongo 进入MongoDB交互模式 docker exec -it <CONTAINER NAME> mongo admin 原文地址:https://www.cnblogs.com/Jcon

32.Docker安装MongoDb

从hub.docker.com上去找镜像 阿里云的国内的镜像地址 填上去之后,然后重启下docker就可以了 docker images列出本地的镜像 拉取mango的镜像 运行这个镜像 docker logs mymango:查看镜像名称为mymango的镜像的日志 docker start mymango:启动名称为mymango的镜像 错误可能是27016这个端口被占用了 netstat -aon查看本地运行的端口 查看运行端口的8025的:netstat -aon|findstr "80

Docker安装MySQL Tomcat Python Redis MongoDB Apache

Docker 安装 MySQL 方法一.docker pull mysql 查找Docker Hub上的mysql镜像 [email protected]:/mysql$ docker search mysql NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED mysql                    MySQL is a wide

docker 部署 mongodb 并且开启远程连接

mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显示 mongo latest 7177e01e8c01 2 months ago 393MB > 2 months ago 和 393MB 取决于镜像的拉取时间和对应版本的大小. 使用 docker 安装 mongodb docker run --name mongodb -v ~/docker/m

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

ubuntu下docker安装与版本升级

ubuntu 下docker安装与版本升级 一.系统环境 系统:ubuntu-server 14.04 x86_64 内核:3.13.0-32-generic 二.Docker安装 --------------------------------------------------------------------------------- 要想安装最新版本的Docker需要使用Docker源来安装 $ sudo su - root # apt-get -y installapt-transp

Docker实践9:备份方案

1 两个文件系统 先提一下两个重要的文件系统概念,一个是aufs,一个是vfs. aufs是一个类似于Unionfs的可堆叠联合文件系统.它将多个目录整合成单一的目录.ubuntu对其有良好的支持,因此docker的镜像就存储在aufs文件系统下. vfs是linux的内核中一个重要概念,这个虚拟文件系统可以让open().read().write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层. 2 docker镜像与容器的存储 docker的层次结构如上图. docker