MongoDB 副本集配置

2019-03-04  本文已影响0人  会九卦的兔子

一.什么是MongoDB副本集?

副本集是一组mongod维护相同数据集的实例,它提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性;还允许您从硬件故障和服务中断中恢复数据;实现自动故障转移,还可以采用分布式方式读取数据。

二.MongoDB副本集的原理?

mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。mongodb各个节点常见的搭配方式为:一主一从、一主多从。

主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
通过在不同数据库服务器上提供多个数据副本,复制可提供一定级别的容错功能,以防止丢失单个数据库服务器。

三.MongoDB副本集同步?

  1. 克隆除本地数据库之外的所有数据库。要克隆mongod扫描每个源数据库中的每个集合,并将所有数据插入到这些集合的自己的副本中。版本3.4中已更改:初始同步会在为每个集合复制文档时构建所有集合索引。在早期版本的MongoDB中,仅_id在此阶段构建索引。初始同步在数据复制期间提取新添加的oplog记录。确保目标成员在local 数据库中有足够的磁盘空间,以便在此数据复制阶段的持续时间内临时存储这些oplog记录。

  2. 将所有更改应用于数据集。使用源中的oplog,mongod更新其数据集以反映副本集的当前状态。

    初始同步完成后,成员从转换 STARTUP2SECONDARY

四.部署MongoDB副本集的注意事项

五.MongoDB副本集的需要哪些资源配置?

一台安装好MongoDB 的服务器 192.168.1.1
或者
三台安装好MongoDB 的服务器 192.168.1.1 192.168.1.2 192.168.1.3
网络处于可使用状态

六.部署MongoDB副本集

1. 设置配置文件
通过 --replSet --bind_ip 命令行选项指定副本集名称和ip绑定
语法:mongod --replSet "rs0" -- bind_ip localhost,<hostname ( s )| ip address ( es ) >
或者使用配置文件指定 replica set name 和 ip addresses

systemLog
    path: /var/log/mongodb/mongodb.log

storage
    dbPath: /var/lib/mongo-res1
    journal: 
        enabled: true
replication:
   replSetName : rs0
net :
   bindIp : localhost,<hostname(s)| ip address(es)>

配置参数含义:
replSet:设置Replica Set的name,在各个配置文件中,其值必须相同。
dbpath:MongoDB用于存储数据的目录,默认值是C:\data\db
bind_ip 指定ip
path:用于记录mongod的日志数据
port:指定MongoDB监听的端口,默认值是27017

然后要使用配置文件启动MongoDB实例 ,使用 --config 选项指定配置文件的路径。

mongod --config <path-to-config>

三个实例启动完毕后,查看 ps -ef|grep mongo


我这里是一台服务配置的三个实例

2.使用 mongoDB shell 连接到其中一个 mongod 实例
mongo --host 192.168.1.1 --port 27017

3.启动副本集
使用 rs.initiate() 来指定副本集的所有成员

rs.initiate({
   _id : "rs0",
   members :[
      {  _id : 0 , host: "192.168.1.1:27017"},
      {  _id : 1 , host: "192.168.1.1:27019"},
      {  _id : 2 , host: "192.168.1.1:27019"} 
   ] 
})
image.png

4.查看副本集配置

rs.conf()

5.查看副本集主副本信息

rs.status()

七.应用MongoDB副本集

尝试关闭主节点
db.shutdownServer();
或者使用kill 端口的方式

image.png
然后再查看剩下的两个副节点是否有一个成为新的节点
stateStr : "PRIMARY" 就是主节点
上一篇 下一篇

猜你喜欢

热点阅读