Centos下安装MongoDB复制集
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复制集相关推荐
- MongoDB 复制集的选举原理
复制的原理 复制时基于啊哦做日志 oplog , 相当于 MySQL 中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog 日志同步并应用到其他从节点的过程. 选举的原理 ...
- Linux环境下安装软件合集【1】
Linux环境下安装软件合集[1] 1 Linux环境下安装Node.js 1.1 通过wget直接安装 (1)wget不是安装方式 他是一种下载软件类似与迅雷 如果要下载一个软件 我们可以直接 wg ...
- MongoDB复制集原理、搭建及复制集简单维护
##一.MongoDB复制集原理 ###(一)复制集简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Drive ...
- Centos下安装mysql 总结
一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...
- MongoDB复制集(Replication Sets)介绍
近年来,随着大数据越来越火,非关系型数据库的重要性被越来越多的人所认知,越来越多的开发者逐渐加入到NoSQL的阵营中.我们知道NoSQL是Not Only SQL的意思,既然如此,很多关系型数据库所支 ...
- MongoDB复制集与Raft协议异同点分析
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.日志复制流程: a.raft leader节点在接收client请求后,先将请求写到日志中,再将日志通过 ...
- 配置MongoDB复制集
什么是复制集? 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复. 复制集的优势如下: 让数据更安全 高数据可用性 ...
- Raft与MongoDB复制集协议比较
在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...
- Centos下安装X Window+GNOME Desktop+FreeNX
转:http://www.vpsyou.com/centos-to-install-x-window-gnome-desktop-freenx/ FreeNX是近年来继VNC之后新出现的远程控制解决方 ...
最新文章
- 《深入理解Java虚拟机》(二)Java虚拟机运行时数据区
- LL-verilog语法多位宽全加器
- 中采购订单批导的bapi_五:认识SAP SD销售模式之第三方销售和单独采购
- mysql删除表单挑数据_MySQL 删除数据表
- 索尼入局日本打车市场,联合6家出租车公司推AI打车软件
- 完整版身份证前6位判断归属地
- 常用编程语言介绍及特点
- 机器学习与分布式机器学习_机器学习-什么是机器学习?
- 记实现多racecar仿真过程中遇到的问题(一)
- 清华大学计算机系毕业论文 android,清华大学计算机科学与技术系
- Gsensor驱动调试
- 计算机网络base,计算机网络中的术语100Base-TX/FX指的是什么?
- 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
- Pycharm新手使用教程(详解)
- 卸载office后桌面上的word文件图标变成了白色
- linux驱动时间差引发的64位除法问题
- android studio添加繁体,Android (Android studio3.0.1)一篇可以实现app多语言的转换(简单操作)的教程-Go语言中文社区...
- 【JZOJ4896】【NOIP2016提高A组集训第16场11.15】兔子
- 如何解决ipad1升级没有响应的问题
- 如何做一个基于微信汽车维修保养小程序系统毕业设计毕设作品