当前位置: 首页>数据库>正文

mongo 副本集添加成员 This node is not a member of the config mongodb副本集读写分离

1.去官网下载安装包
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz
2.解压安装包  
tar -zxvf mongodb-linux-x86_64-3.2.5.tgz
3.创建mongodb数据数据以及日志文件的储存位置
mkdir data 
mkdir logs
两个文件夹
4.mongo安装包解压过后的文件中 bin文件夹下面添加 的 mongodb.conf文件 
 
5.keyfile生成
openssl rand -base64 90 -out ./keyfile
chmod  600  keyfile
mv  keyfile  /yiyang/soft/mongo3.2.5/rs/ 如果没有装openssl,请先安装openssl。
6.启动
cd /yiyang/soft/mongo3.2.5/bin
./mongod -f mongodb.conf
7.在部署三个mongodb,放在不同的服务器上面或者同一个服务器上,但是mongodb的端口号改成不同的。每一个数据库的配置文件改一下,要求keyfile用同一个,replSet的值一样。然后都启动。
8.进入mongodb
./mongo 116.62.50.184:27017
如果原来已经存在的数据库,账号什么的已经有了先登录管理员账号
use admin
db.auth("account",“psw”);
没有的话就不用管。
9.设置config
config = {_id: 'replSet', members: [{_id: 0, host: 'ip:port',priority:100},{_id: 1, host: 'ip:port'},{_id: 2, host:'ip:port','arbiterOnly':true}]}
 
config:名字 随便取;
_id:值是mongodb的配置文件中的replSet的值。
priority:优先级 100最大,0最小,为是不能成为为主节点,也可以不设置默认为1.
arbiterOnly:true 为仲裁节点,不能复制数据,成为复制集。当主节点宕机时,此节点会从 从节点中选举出一个当做主节点。当复制集中所有的节点为奇数时,仲裁节点也可以不设置,但是如果都宕机了,只剩一个从节点,该从节点不能成为主节点。
10.rs.initiate(config);
11.查看复制集的状态。
rs.status();
{
     "set" : "replSet",
     "date" : ISODate("2019-07-16T07:11:05.374Z"),
     "myState" : 1,
     "term" : NumberLong(1),
     "heartbeatIntervalMillis" : NumberLong(2000),
     "members" : [
         {
             "_id" : 0,
             "name" : "116.62.50.184:27017",
             "health" : 1,
             "state" : 1,
             "stateStr" : "PRIMARY",
             "uptime" : 6513,
             "optime" : {
                 "ts" : Timestamp(1563261064, 3),
                 "t" : NumberLong(1)
             },
             "optimeDate" : ISODate("2019-07-16T07:11:04Z"),
             "electionTime" : Timestamp(1563254620, 1),
             "electionDate" : ISODate("2019-07-16T05:23:40Z"),
             "configVersion" : 1,
             "self" : true
         },
         {
             "_id" : 1,
             "name" : "101.37.20.117:27018",
             "health" : 1,
             "state" : 2,
             "stateStr" : "SECONDARY",
             "uptime" : 6454,
             "optime" : {
                 "ts" : Timestamp(1563261064, 3),
                 "t" : NumberLong(1)
             },
             "optimeDate" : ISODate("2019-07-16T07:11:04Z"),
             "lastHeartbeat" : ISODate("2019-07-16T07:11:05.023Z"),
             "lastHeartbeatRecv" : ISODate("2019-07-16T07:11:05.033Z"),
             "pingMs" : NumberLong(0),
             "syncingTo" : "116.62.50.184:27017",
             "configVersion" : 1
         },
         {
             "_id" : 2,
             "name" : "101.37.20.117:27019",
             "health" : 1,
             "state" : 2,
             "stateStr" : "SECONDARY",
             "uptime" : 6454,
             "optime" : {
                 "ts" : Timestamp(1563261064, 3),
                 "t" : NumberLong(1)
             },
             "optimeDate" : ISODate("2019-07-16T07:11:04Z"),
             "lastHeartbeat" : ISODate("2019-07-16T07:11:04.756Z"),
             "lastHeartbeatRecv" : ISODate("2019-07-16T07:11:05.052Z"),
             "pingMs" : NumberLong(0),
             "syncingTo" : "116.62.50.184:27017",
             "configVersion" : 1
         },
         {
             "_id" : 3,
             "name" : "101.37.20.117:27020",
             "health" : 1,
             "state" : 7,
             "stateStr" : "ARBITER",
             "uptime" : 6454,
             "lastHeartbeat" : ISODate("2019-07-16T07:11:05.020Z"),
             "lastHeartbeatRecv" : ISODate("2019-07-16T07:11:03.798Z"),
             "pingMs" : NumberLong(0),
             "configVersion" : 1
         }
     ],
     "ok" : 1
 }字段解释:
• self 这个信息出现在执行rs.status()函数的成员信息中
• stateStr用户描述服务器状态的字符串。有SECONDARY,PRIMARY,RECOVERING等
• uptime 从成员可到达一直到现在经历的时间,单位是秒。
• optimeDate 每个成员oplog最后一次操作发生的时间,这个时间是心跳报上来的,因此可能会存在延迟
• lastHeartbeat 当前服务器最后一次收到其他成员心跳的时间,如果网络故障等可能这个时间会大于2秒
• pinMs 心跳从当前服务器达到某个成员所花费的平均时间
• errmsg 成员在心跳请求中返回的状态信息,通过是一些状态信息,不全是错误信息。
state和stateStr是重复的,都表示成员状态,只是state是内部的叫法。
 health 为1表示server正常,0表示server宕.state 为1表明Primary,2表明secondary,3表示Recovering,7表示Arbiter,8表示Down.
 optime与optimeDate表达的信息也是一样的,只是表示的方式不同,一个是用新纪元开始的毫秒数表示的,一个是用一种更容易阅读的方式表示。
 syncingTo表示当前服务器从哪个节点在做同步。
 由于rs.status()是从执行命令成员本身的角度得出的,由于网路等故障,这份报告可能不准确或者有些过时。=================================部署完毕==================================================
 
================================spring 连接mongodb副本集=====================================
1.
 
db.replica-set=116.62.50.184:27017,101.37.20.117:27018,101.37.20.117:27019
 
<context:component-scan base-package="cn.yiyang.normalization.dao" />
   <context:property-placeholder location="classpath:/config/data/data.properties" />
   <util:properties id="properties" location="classpath:/config/data/data.properties" />
<!--host="${db.host}" port="${db.port}" credentials="${db.username}:${db.password}@icare_platform"-->

   <mongo:mongo-client id="mongo" replica-set="${db.replica-set}" credentials="${db.username}:${db.password}@icare_platform">
      <mongo:client-options min-connections-per-host="2"
                       connections-per-host="100" connect-timeout="10000" max-wait-time="120000"
                       heartbeat-frequency="2000" heartbeat-connect-timeout="10000"
                       max-connection-life-time="3000" socket-keep-alive="true"
                       socket-timeout="3000"
                       threads-allowed-to-block-for-connection-multiplier="10" write-concern="SAFE"/>
   </mongo:mongo-client>
   
   <mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" dbname="${db.database}"/>
   <bean id="secondaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryPreferredReadPreference"></bean>

   <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate" scope="prototype">
      <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
      <property name="readPreference" ref="secondaryPreferredReadPreference"></property>
   </bean>

   <!-- MongoDB GridFS Template 支持,操作mongodb存放的文件 -->
   <mongo:mapping-converter id="converter"
      db-factory-ref="mongoDbFactory" />
   <bean id="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
      <constructor-arg ref="mongoDbFactory" />
      <constructor-arg ref="converter" />
   </bean>

https://www.xamrdz.com/database/6r51939690.html

相关文章: