2019独角兽企业重金招聘Python工程师标准>>>

在一台Centos下模拟安装MongoDB的复制集

准备三份配置文件:

mongod.conf

bind_ip=0.0.0.0
port = 27017
dbpath = /usr/local/mongo/data/
logpath = /usr/local/mongo/log/mongod.log
fork=true
logappend=true
replSet=myMongoSet

mongod2.conf

bind_ip=0.0.0.0
port = 27018
dbpath = /usr/local/mongo/data2/
logpath = /usr/local/mongo/log2/mongod.log
fork=true
logappend=true
replSet=myMongoSet

mongod3.conf

bind_ip=0.0.0.0
port = 27019
dbpath = /usr/local/mongo/data3/
logpath = /usr/local/mongo/log3/mongod.log
fork=true
logappend=true
replSet=myMongoSet

进入bin目录下分别启动三台mongo实例

./mongod -f ../conf/mongod.conf
./mongod -f ../conf/mongod2.conf
./mongod -f ../conf/mongod3.conf

查看进程,验证三台MongoDB实例是否启动成功

[root@192 conf]# ps -ef | grep mongod
root        559 130632  0 14:53 pts/1    00:00:00 grep --color=auto mongod
root     130957      1  0 14:37 ?        00:00:04 ./mongod -f ../conf/mongod.conf
root     130986      1  0 14:37 ?        00:00:04 ./mongod -f ../conf/mongod2.conf
root     131014      1  0 14:37 ?        00:00:04 ./mongod -f ../conf/mongod3.conf

说明三台MongoDB实例已经启动成功

连接第一台mongo

./mongo 192.168.15.31:27017/admin

准备初始化实例

> config={_id:"myMongoSet",members:[{_id:0,host:"192.168.15.31:27017"},{_id:1,host:"192.168.15.31:27018"},{_id:2,host:"192.168.15.31:27019"}]}
{"_id" : "myMongoSet","members" : [{"_id" : 0,"host" : "192.168.15.31:27017"},{"_id" : 1,"host" : "192.168.15.31:27018"},{"_id" : 2,"host" : "192.168.15.31:27019"}]
}

定义config内容为集群的实例信息

> rs.initiate(config)

初始化复制集

执行后输出如下:

{"ok" : 1,"operationTime" : Timestamp(1517640358, 1),"$clusterTime" : {"clusterTime" : Timestamp(1517640358, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}}
}

说明MongoDB的复制集创建成功

查看复制集状态

myMongoSet:SECONDARY> rs.status()
{"set" : "myMongoSet","date" : ISODate("2018-02-03T06:46:09.449Z"),"myState" : 1,"term" : NumberLong(1),"heartbeatIntervalMillis" : NumberLong(2000),"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(0, 0),"t" : NumberLong(-1)},"appliedOpTime" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"durableOpTime" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)}},"members" : [{"_id" : 0,"name" : "192.168.15.31:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 546,"optime" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"optimeDate" : ISODate("2018-02-03T06:45:58Z"),"infoMessage" : "could not find member to sync from","electionTime" : Timestamp(1517640368, 1),"electionDate" : ISODate("2018-02-03T06:46:08Z"),"configVersion" : 1,"self" : true},{"_id" : 1,"name" : "192.168.15.31:27018","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 10,"optime" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"optimeDurable" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"optimeDate" : ISODate("2018-02-03T06:45:58Z"),"optimeDurableDate" : ISODate("2018-02-03T06:45:58Z"),"lastHeartbeat" : ISODate("2018-02-03T06:46:08.931Z"),"lastHeartbeatRecv" : ISODate("2018-02-03T06:46:05.733Z"),"pingMs" : NumberLong(0),"configVersion" : 1},{"_id" : 2,"name" : "192.168.15.31:27019","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 10,"optime" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"optimeDurable" : {"ts" : Timestamp(1517640358, 1),"t" : NumberLong(-1)},"optimeDate" : ISODate("2018-02-03T06:45:58Z"),"optimeDurableDate" : ISODate("2018-02-03T06:45:58Z"),"lastHeartbeat" : ISODate("2018-02-03T06:46:08.932Z"),"lastHeartbeatRecv" : ISODate("2018-02-03T06:46:05.734Z"),"pingMs" : NumberLong(0),"configVersion" : 1}],"ok" : 1,"operationTime" : Timestamp(1517640358, 1),"$clusterTime" : {"clusterTime" : Timestamp(1517640368, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}}
}

验证数据同步:

连接27017实例:

myMongoSet:PRIMARY>use stu
myMongoSet:PRIMARY> db.stuinfo.insert({"name":"张三","age":12,"address":"山东"})

查询添加的内容:

myMongoSet:PRIMARY> db.stuinfo.find()
{ "_id" : ObjectId("5a755b6a4dfb8ddaa17bad20"), "name" : "张三", "age" : 12, "address" : "山东" }

进入27018实例:

myMongoSet:SECONDARY> db.stuinfo.find()
Error: error: {"operationTime" : Timestamp(1517641210, 1),"ok" : 0,"errmsg" : "not master and slaveOk=false","code" : 13435,"codeName" : "NotMasterNoSlaveOk","$clusterTime" : {"clusterTime" : Timestamp(1517641210, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}}
}

查看信息,可能会报如上问题,这是因为MongoDB的salve默认是不允许读写的。 解决方法:

myMongoSet:SECONDARY> rs.slaveOk()

查看信息是否同步:

myMongoSet:SECONDARY> use stu
switched to db stu
myMongoSet:SECONDARY> db.stuinfo.find()
{ "_id" : ObjectId("5a755b6a4dfb8ddaa17bad20"), "name" : "张三", "age" : 12, "address" : "山东" }

连接实例27019,执行同样的操作。 由此可见,数据信息可以正确同步, 到此为止,MongoDB的复制集搭建成功

验证主从切换:

现在主节点是27017节点,我们杀掉该进程

[root@192 bin]# ps -ef | grep mongod
root        659 130632  0 15:05 pts/1    00:00:00 grep --color=auto mongod
root     130957      1  0 14:37 ?        00:00:08 ./mongod -f ../conf/mongod.conf
root     130986      1  0 14:37 ?        00:00:08 ./mongod -f ../conf/mongod2.conf
root     131014      1  0 14:37 ?        00:00:08 ./mongod -f ../conf/mongod3.conf
[root@192 bin]# kill 130957
[root@192 bin]# ps -ef | grep mongod
root        674 130632  0 15:05 pts/1    00:00:00 grep --color=auto mongod
root     130986      1  0 14:37 ?        00:00:08 ./mongod -f ../conf/mongod2.conf
root     131014      1  0 14:37 ?        00:00:08 ./mongod -f ../conf/mongod3.conf

该进程已经被杀掉

然后连接27018节点

[root@192 bin]# ./mongo 192.168.15.31:27018
MongoDB shell version v3.6.2
connecting to: mongodb://192.168.15.31:27018/test
MongoDB server version: 3.6.2
Server has startup warnings:
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten]
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten]
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten]
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten]
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-02-03T14:37:09.007+0800 I CONTROL  [initandlisten]
myMongoSet:PRIMARY>

可以看出,27018节点已经成为主节点

然后重新开启27017节点

[root@192 bin]# ./mongod -f ../conf/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 703
child process started successfully, parent exiting

连接27017节点

[root@192 bin]# ./mongo 192.168.15.31:27017
MongoDB shell version v3.6.2
connecting to: mongodb://192.168.15.31:27017/test
MongoDB server version: 3.6.2
Server has startup warnings:
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten]
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten]
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten]
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten]
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-02-03T15:07:54.488+0800 I CONTROL  [initandlisten]
myMongoSet:SECONDARY>

27017节点已经成为从节点

转载于:https://my.oschina.net/u/2477500/blog/1618002

Centos下安装MongoDB复制集相关推荐

  1. MongoDB 复制集的选举原理

    复制的原理         复制时基于啊哦做日志 oplog , 相当于 MySQL 中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog 日志同步并应用到其他从节点的过程. 选举的原理 ...

  2. Linux环境下安装软件合集【1】

    Linux环境下安装软件合集[1] 1 Linux环境下安装Node.js 1.1 通过wget直接安装 (1)wget不是安装方式 他是一种下载软件类似与迅雷 如果要下载一个软件 我们可以直接 wg ...

  3. MongoDB复制集原理、搭建及复制集简单维护

    ##一.MongoDB复制集原理 ###(一)复制集简介   Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Drive ...

  4. Centos下安装mysql 总结

    一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...

  5. MongoDB复制集(Replication Sets)介绍

    近年来,随着大数据越来越火,非关系型数据库的重要性被越来越多的人所认知,越来越多的开发者逐渐加入到NoSQL的阵营中.我们知道NoSQL是Not Only SQL的意思,既然如此,很多关系型数据库所支 ...

  6. MongoDB复制集与Raft协议异同点分析

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.日志复制流程: a.raft leader节点在接收client请求后,先将请求写到日志中,再将日志通过 ...

  7. 配置MongoDB复制集

    什么是复制集? 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复. 复制集的优势如下: 让数据更安全 高数据可用性 ...

  8. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...

  9. Centos下安装X Window+GNOME Desktop+FreeNX

    转:http://www.vpsyou.com/centos-to-install-x-window-gnome-desktop-freenx/ FreeNX是近年来继VNC之后新出现的远程控制解决方 ...

最新文章

  1. 《深入理解Java虚拟机》(二)Java虚拟机运行时数据区
  2. LL-verilog语法多位宽全加器
  3. 中采购订单批导的bapi_五:认识SAP SD销售模式之第三方销售和单独采购
  4. mysql删除表单挑数据_MySQL 删除数据表
  5. 索尼入局日本打车市场,联合6家出租车公司推AI打车软件
  6. 完整版身份证前6位判断归属地
  7. 常用编程语言介绍及特点
  8. 机器学习与分布式机器学习_机器学习-什么是机器学习?
  9. 记实现多racecar仿真过程中遇到的问题(一)
  10. 清华大学计算机系毕业论文 android,清华大学计算机科学与技术系
  11. Gsensor驱动调试
  12. 计算机网络base,计算机网络中的术语100Base-TX/FX指的是什么?
  13. 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
  14. Pycharm新手使用教程(详解)
  15. 卸载office后桌面上的word文件图标变成了白色
  16. linux驱动时间差引发的64位除法问题
  17. android studio添加繁体,Android (Android studio3.0.1)一篇可以实现app多语言的转换(简单操作)的教程-Go语言中文社区...
  18. 【JZOJ4896】【NOIP2016提高A组集训第16场11.15】兔子
  19. 如何解决ipad1升级没有响应的问题
  20. 如何做一个基于微信汽车维修保养小程序系统毕业设计毕设作品

热门文章

  1. iOS安全之RSA加密/生成公钥、秘钥 pem文件
  2. postman test 脚本
  3. php调用搜狗ocr接口,搜狗ocr识别接口
  4. 懒人必备:.NetCore快速搭建ELK分布式日志中心
  5. CentOS7.6离线安装JDK1.8
  6. 根据输入的日期计算你活了多少天(新手)
  7. easyui 中combogrid 实现多选,反选效果
  8. POSTGRESQL小玩
  9. C#引用C++ Dll 所有類型轉換的方式(转)
  10. mvc3 之三 符号列表