ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB笔记02

2020-04-18 20:07:07  阅读:304  来源: 互联网

标签:02 rs MongoDB 27017 192.168 笔记 mongodb rs0 id


MongoDB副本集配置

一、安装MongoDB

部署说明:三台机器192.168.1.100,192.168.1.101,192.168.1.102
配置副本集(一个Master节点+两个个SECONDARY节点)+用户认证

每台机器安装好mongodb,mongodb.conf配置文件内容相同,如下

systemLog:
  destination: file
  path: /usr/local/mongodb/logs
  logAppend: true
storage:
  dbPath: /usr/local/mongodb/data
replication:
  replSetName: "rs0"
net:
  bindIp: 0.0.0.0
  port: 27017
processManagement:
  fork: true
setParameter:
  enableLocalhostAuthBypass: false
  maxTransactionLockRequestTimeoutMillis: 3600
  transactionLifetimeLimitSeconds: 600
#security:
#  authorization: enabled
#  clusterAuthMode: "keyFile"
#  keyFile: /usr/local/mongodb/keyfile

二、配置副本集

# 在192.168.1.100上执行rs.initiate() (也可以选择其他机器)

rs.initiate({id:'rs0',members:[{id:1,host:'192.168.1.100:27017'}]});

# 创建admin用户
use admin;
db.createUser({
	user:"root",pwd:"123456",
	roles: [{role:"userAdminAnyDatabase",db:"admin"},{role:"clusterAdmin",db:"admin"},{role:"root",db:"admin"}, "readWriteAnyDatabase" ]
});
db.auth("root","123456");

注意:副本集需要clusterAdmin角色权限,如果之前没有配置,可以后面追加授权db.grantRolesToUser("admin",[{role:"clusterAdmin",db:"admin"}]);


# 配置副本集keyFile认证文件
[root@localhost mongodb]# openssl rand -base64 666 > /usr/local/mongodb/keyfile
[root@localhost mongodb]# chmod 600 keyfile
[root@localhost mongodb]# scp keyfile root@192.168.1.101:/usr/local/mongodb
[root@localhost mongodb]# scp keyfile root@192.168.1.102:/usr/local/mongodb

# 关闭mongodb 修改配置文件mongodb.conf打开security认证,然后重启mongodb


# 通过rs.add增加SECONDARY节点 
(也可以通过rs.addArb()增加仲裁节点,主要区别是:仲裁节点不存储数据,可少了数据复制的压力)
rs0:PRIMARY> rs.add("192.168.1.101:27017");
rs0:PRIMARY> rs.add("192.168.1.102:27017");
rs0:PRIMARY> rs.isMaster() --查看状态
rs0:PRIMARY> rs.status() --查看状态

登录SECONDARY节点查看状态
rs0:SECONDARY> db.getMongo().setSlaveOk(); --或rs.slaveOk()
rs0:SECONDARY> rs.isMaster()

三、其他相关操作

# 查看复制集相关命令帮助
rs.help()

# 副本集也可以这样初始化
rs.initiate(
  {
    _id : 'rs0',
    members: [
      {_id:0, host:'192.168.1.100:27017',priority:6},
      {_id:1, host:'192.168.1.101:27017',priority:4},
      {_id:2, host:'192.168.1.102:27017',priority:2}
    ]
  }
)
或
rs.initiate(
  {
    _id : 'rs0',
    members: [
      {_id:0, host:'192.168.1.100:27017',priority:6},
      {_id:1, host:'192.168.1.101:27017',priority:4},
      {_id:2, host:'192.168.1.102:27017',arbiterOnly:true}
    ]
  }
)

# 移除节点
rs.remove("192.168.1.102:27017"); 

# 关闭当前示例
db.shutdownServer()

# 将当前主库“降级”
rs0:PRIMARY>rs.stepDown(30)
rs0:SECONDARY>

# 冻结Secondary节点(PRIMARY维护时,可让Secondary不参与PRIMARY选举)
rs0:SECONDARY> rs.freeze(100)

# 查看复制集情况
db.printSlaveReplicationInfo()

其中:
source:从库的ip和端口
syncedTo:目前的同步情况,以及最后一次同步的时间


# rs.add 所有参数
 {
   _id: <int>,
   host: <string>,        // required
   arbiterOnly: <boolean>,
   buildIndexes: <boolean>,
   hidden: <boolean>,
   priority: <number>,
   tags: <document>,
   slaveDelay: <int>,
   votes: <number>
}

hidden:这样设置后此机器在读写中都不可见,并且不会被选举为Primary,但是可以投票,一般用于备份数据。
slaveDelay:可以指定一个时间延迟从primary节点同步数据。主要用于处理误删除数据马上同步到从节点导致的不一致问题。

四、相关参考

标签:02,rs,MongoDB,27017,192.168,笔记,mongodb,rs0,id
来源: https://www.cnblogs.com/huligong1234/p/12727691.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有