既然使用Mongodb,就不得不用他的安全备份机制:副本集。

Mongodb副本集是什么东西?

  通俗的讲就是用多台机器进行同一数据的异步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动切换其他备份服务器做主库。而且还可以利用副本服务器做只读服务器,实现读写分离,提高负载。

需要指数的是:Mongodb的主从复制模式官方已经不在推荐使用了。

 

那么该如何实现呢?

 我用一台的机器的不同文件夹来做下模拟(生产环境下最好用不同的服务器来做物理隔绝)。

我的文件目录是:

F:\mongodb1\

F:\mongodb2\

F:\mongodb3\

那现在开始操作。

mongodb 副本集 切换primary_副本集

以上就是启动命令。

参数:port: Mongodb的监听端口

         dbpath:数据文件存储路径

     logpath:系统日志存放路径

         replSet :副本集名称,我用的是test,其他的节点必须使用这个名字做副本集名称。

        logappend:日志的写入模式是追加,不是默认的覆盖模式。

同样对目录mongodb2,mongodb3使用以上命令,端口号分别是:2222,3333,如下:

mongodb 副本集 切换primary_服务器_02

mongodb 副本集 切换primary_服务器_03

 

各个Mongodb启动以后,就只剩下一步了,把他们串在一起。(此处新打开一个cmd来操作,所有的命令都在这里执行,不要把这个关闭了)

mongodb 副本集 切换primary_副本集_04

首先通过执行:mongo --port 1111连接到Mongodb1的实例上

然后定义配置信息:config_test,

最后通过rs.initiate(config_test)启动副本集

至此整个副本集的配置已经完成。完成情况可通过rs.status()命令查看

mongodb 副本集 切换primary_副本集_05

这里面的几个参数说明下:

health:1   //1表明状态是正常,0表明异常

state:1     // 1表明是primary,2表明是slave,即做备份的机器

从结果看现在是一台主库,两台备份。

当一台服务器当掉会怎么样呢?

我们把mongodb1停掉,然后再运行rs.status(),如下

mongodb 副本集 切换primary_数据库_06

可以看到Mongodb已经当掉,这时候Mongodb3成为了主库。

配置完成后就免不了要做维护,关于维护请看我下篇文章