安装

官方镜像地址: 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} $REMOTE_USER@$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

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

  1. Linux平台安装MongoDB及使用Docker安装MongoDB

    一.Linux平台安装MongoDB MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/downlo ...

  2. Docker 安装 mongoDB(五)

    Docker 安装 mongoDB 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search mongo 2.拉取docker的mongo镜像 ...

  3. Docker01 centos系统安装、centos安装docker、docker安装mongoDB

    1 centos系统安装 本博文是基于 centos6.5 的,利用VMware 虚拟机搭建 centos6.5 系统 1.1 centos6.5资源获取 1.2 安装 1.2.1 新建虚拟机 1.2 ...

  4. MongoDB学习笔记二:使用Docker安装MongoDB

    目录 Docker安装MongoDB Docker给MongoDB设置用户密码 NoSQL Manager for MongoDB连接 为admin赋权限 上一个笔记介绍了Windows下安装Mong ...

  5. Docker安装MongoDB、MySQL、Jenkins、Gitlab、Nginx

    Docker安装MongoDB.MySQL.Jenkins.Gitlab.Nginx 安装MongoDB 1. 拉取镜像 $ sudo docker pull mongo 2. 运行镜像 $ sudo ...

  6. docker安装mongodb和redis

    一.安装mongodb docker pull mongo docker run -p 27017:27017 -d --name mongodb01 mongo docker run -p 2701 ...

  7. docker安装MongoDB创建用户,并用工具Robo连接简单CRUD

    搜索mongo docker search mongo 拉取mongo[这里默认为latest] docker pull mongo 查看本地镜像 启动容器[就是安装,-v后面的参数表示把数据文件挂载 ...

  8. docker 安装MongoDB以及设置用户

    MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序. 1.查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/ ...

  9. Docker安装MongoDb

    1.下载镜像 docker pull mongo 2.运行mongo docker run --name mongo -v /data/mongodb:/data/db -p : -d mongo - ...

随机推荐

  1. Codeforces 965E Short Code 启发式合并 (看题解)

    Short Code 我的想法是建出字典树, 然后让后面节点最多的点优先向上移到不能移为止, 然后gg. 正确做法是对于当前的节点如果没有被占, 那么从它的子树中选出一个深度最大的点换到当前位置. 用 ...

  2. Centos7创建CA和申请证书

    转载:http://rackie386.blog.51cto.com/11279229/1947999 Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/op ...

  3. fillder--信息面板展示serverIP

    1.Ctrl+R打开面板 2.如上图的位置,加上一句后,重启Fillder即可 FiddlerObject.UI.lvSessions.AddBoundColumn(, "X-HostIP& ...

  4. web发展阶段简介

     web1.0.web2.0和web3.0的区别前言: 其实并没有什么所谓的2.0.3.0,因为你没法准确的界定它是什么样的应用,也没法界定它是什么时候开始的,什么时候结束,它只是互联网本身发展的一种 ...

  5. day 67 orm初识 {code_first/db_first}

    1,我们是先创建一个django项目,要同时把app带上, 然后再django项目里面把settings部分设置好,按照我们一开始创建django项目的时候设置的那些,csrf以及templates还 ...

  6. Leading and Trailing(巧妙利用log解决次方问题)

    Sample Input 5 123456 1 123456 2 2 31 2 32 29 8751919 Sample Output Case 1: 123 456 Case 2: 152 936 ...

  7. JVM五大知识点

    1 JVM的基本特性 1.1 基于栈(Stack-based): 不同于Intel x86和ARM等比较流行的计算机处理器都是基于寄存器(register)架构,JVM是基于栈执行的. 1.2 符号引 ...

  8. Mybatis之延迟加载机制

    1.  延迟加载的含义: 用到的时候才会去进行相关操作 2.  延迟加载的例子: 2.1 spring的BeanFactory,在getBean()的时候才创建Bean 2.2 物理分页查询,只有点击 ...

  9. linux基础权限管理

    1.linux系统中的文件类型:-   一般文件 存放数据d  目录文件 存放其他文件l  链接文件 类似于windows系统中的快捷方式b  区块设备文件 可以随时读取c  字符设备文件 需要顺序读 ...

  10. JavaScript—异步提交表单的6种方式

    FormData的详细介绍及使用请点击此处,那里对FormData的方法和事件已经表述的非常清楚,这里就不再浪费时间在介绍一遍了.本文主要针对FormData对象的使用以及异步文件上传进行详细的说明. ...