这篇博客介绍下在Windows上使用Docker 创建MongoDB 三节点副本集的最简单的方法。以下命令需要Docker for Windows并使用Linux 容器。

1: 为每个节点创建数据卷

docker volume create --name mongodb_repl_data1 -d local
docker volume create --name mongodb_repl_data2 -d local
docker volume create --name mongodb_repl_data3 -d local

2:创建一个docker-compose.yml 文件。

version: "3"

services:
mongo0:
hostname: mongo0
container_name: mongo0
image: mongo:latest
expose:
- 27017
ports:
- 27017:27017
volumes:
- 'mongodb_repl_data1:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27017"
mongo1:
hostname: mongo1
container_name: mongo1
image: mongo:latest
expose:
- 27018
ports:
- 27018:27017
volumes:
- 'mongodb_repl_data2:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27018"
mongo2:
hostname: mongo2
container_name: mongo2
image: mongo:latest
expose:
- 27019
ports:
- 27019:27017
volumes:
- 'mongodb_repl_data3:/data/db:z'
restart: always
command: "--bind_ip_all --replSet rs0 --port 27019" volumes:
mongodb_repl_data1:
external: true
mongodb_repl_data2:
external: true
mongodb_repl_data3:
external: true

3: 开启容器。

docker-compose up -d

4: 进入Mongodb Shell

docker exec -it mongo0 mongo --port 27017

5:配置副本集

在mongodb shell 中执行以下语句。

config={"_id":"rs0","members":[{"_id":0,"host":"mongo0:27017"},{"_id":1,"host":"mongo1:27018"},{"_id":2,"host":"mongo2:27019"}]}

注:

需要修改Hosts文件

C:\Windows\System32\drivers\etc\hosts

添加以下内容:

127.0.0.1 mongo0 mongo1 mongo2

6:初始化副本集

rs.initiate(config);

7:添加mongodb 用户

你会看到上面命令执行完,mongodb shell 切换到了SECONDARY,

键入回车后,mongodb shell 会切换到PRIMARY 。

之后创建用户

use admin
db.createUser({user: "admin", pwd: "admin123456", roles: [{ role: "root", db: "admin" }], mechanisms: ["SCRAM-SHA-1"]})

8: 最后

使用quit或者 ctrl+c 退出mongodb shell

现在可以使用以下链接去连接mongodb了:

mongodb://admin:admin123456@localhost:27017,localhost:27018,localhost:27019/skyee-cards-db?replicaSet=rs0&authSource=admin

英文原文地址: https://bytemares.com/mongodb/docker/2019/10/01/simple-mongodb-replica-set-with-docker.html

注:我在原文基础上添加了创建用户步骤。

在Windows上使用Docker 创建MongoDB 副本集的极简方法(翻译)的更多相关文章

  1. 创建MongoDB副本集教程

    今天有时间搞了一下mongoDB的副本集,遇到好多坑,写下此文,方便日后查阅! 本教程是在windows环境下安装测试的(我是本机一台 + 两台虚拟机) 本机:10.53.8.159 虚拟机一:10. ...

  2. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

  3. nodejs+mongoose操作mongodb副本集实例

    继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目     express 项目名称 2:npm install mongoose    安装mongo ...

  4. windows版本 MongoDB副本集搭建及开启身份验证

    ------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...

  5. Docker下搭建mongodb副本集

    背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...

  6. 在Windows上使用Docker运行.NetCore

    今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker. 在Windows安装 docker 有两种选择 :1 ...

  7. 在centos7上搭建mongodb副本集

    1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...

  8. 004.Create a web app with ASP.NET Core MVC using Visual Studio on Windows --【在 windows上用VS创建mvc web app】

    Create a web app with ASP.NET Core MVC using Visual Studio on Windows 在 windows上用VS创建mvc web app 201 ...

  9. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...

随机推荐

  1. C#多线程开发-线程池03

    你好,我是阿辉. 前面2篇文章介绍了线程的基础知识和线程同步,下面我们来一起认识学习下,线程池的使用. 线程池 创建线程是昂贵的操作,所以为每个短暂的异步操作创建线程会产生显著的开销.一般情况下,都会 ...

  2. python获取邮件信息

    在项目的Terminal中注册模块pypiwin32 python -m pip install pypiwin32 import win32com.client outlook = win32com ...

  3. Identity基于角色的访问授权

    详情访问官方文档 例如,以下代码将访问权限限制为属于角色成员的用户的任何操作 AdministrationController Administrator : [Authorize(Roles = & ...

  4. Servlet体系结构

    一.使用HttpServlet 其中,HttpServlet在重写的service()方法中对http请求的共7中提交方式进行了判断,所以只要我们只要重写对应的请求方式处理逻辑方法 doGet()和d ...

  5. C# MVC 实现 ajax 跨域

    dataup.js$(function() {    $.ajax({        url: "http://localhost:1266/test/t",        dat ...

  6. 关于连接服务器redis的教程

    第一步:下载RedisDesktopManager 这个百度一搜就有了,但是现在的版本ssh用不了 建议找可以用的版本,这个百度,懂得都懂. 第二步:服务器宝塔redis设置 在配置文件将bind 1 ...

  7. javascript 实现php str_pad

    * 查看php.net官方手册 string str_pad ( string $input , int $pad_length [, string $pad_string = " &quo ...

  8. python的列表和java的数组有何异同

    今天面试被问到,自己学习一下. python的列表是可变长的,定义时不需要指定长度:pyhton是弱对象类型,python的列表存储的数据类型可以不相同:python的列表更加灵活,如可以通过''命令 ...

  9. Windows下nginx报错解决:CreateFile() "xxx/logs/nginx.pid" failed

    写在前面 本文给出Windows下nginx报错:CreateFile() "xxx/logs/nginx.pid" failed 的解决方法并分析了出错原因,其中 xxx 表示n ...

  10. YbtOJ#493-最大分数【斜率优化dp,分治】

    正题 题目链接:http://www.ybtoj.com.cn/contest/117/problem/1 题目大意 \(n\)个数的一个序列,给其中的一些数打上标记. 一个标记方案的贡献为\(s_1 ...