温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongDB 副本集

发布时间:2020-04-08 13:19:22 来源:网络 阅读:234 作者:浮生凤年 栏目:MongoDB数据库

官方网站:https://docs.mongodb.com/v3.4/reference/replication/
中文网站:http://www.mongodb.org.cn/manual/method-replication/
权限表参考:https://blog.csdn.net/kk185800961/article/details/45619863
副本集搭建参考:https://www.cnblogs.com/ranjiewen/p/5928994.html

测试环境搭建mongo监控
监控mongodb使用的用户,在不指定数据库名称的情况下,一般是admin库,所以监控用户要在admin下创建,同时授权的权限为clusterMonitor,执行serverStatus

use admin
db.createUser({user:"monitor_mongo",pwd:"monitor_mongo@123",roles:[{role:"clusterMonitor",db:"admin"}]})

查看所有用户:

use admin;
db.system.users.find()

删除用户:

db.dropUser("")

删除数据库:

> use monitor_mongo;
switched to db monitor_mongo
> show users;
> db.dropDatabase()
{ "dropped" : "monitor_mongo", "ok" : 1 }

搭建副本集

===auth启动服务
保证所有节点使用相同的秘钥

echo "this is rs1 super secret key" > /opt/mongodb/keyFile
chmod 600 /opt/mongodb/keyFile

使用配置文件auth启动服务时,先进行集群初始化后,在设置密码

config={_id:"rs0",members:[{_id:0,host:"192.168.1.221:23183"}]}
rs.initiate(config)
db.createUser({user:"root",pwd:"ops2017!2#",roles:[{role:"root",db:"admin"}]})
rs.add("20.10.1.31:27018")

如果第一次config写错了,那么可以使用相应命令修改

config={_id:"rs0",members:[{_id:0,host:"192.168.1.221:11111"}]}
rs.reconfig(config)

查看集群状态:

rs.status()

查看配置情况:

db._adminCommand({getCmdLineOpts:1})

==========集群测试:节点数量必须>=3,在主库故障时才可以选举剩余节点为主;宕机节点数超过总数一半,也无法选举新的主。
Primary:

rs0:PRIMARY> use test
switched to db test
rs0:PRIMARY> db.test.insert({1:1})
WriteResult({ "nInserted" : 1 })
rs0:PRIMARY> db.test.find()
{ "_id" : ObjectId("5c80bfa19d287f61d98d24b5"), "1" : 1 }

SECONDARY:默认客户端不可以从Secondary成员获取数据,必须执行slaveOk后才可以读取数据。

rs0:SECONDARY> rs.slaveOk()
rs0:SECONDARY> db.test.find()
{ "_id" : ObjectId("5c80bfa19d287f61d98d24b5"), "1" : 1 }

==集群重要参数说明:

 rs.conf()
{
    "_id" : "rs0",
    "version" : 4,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.1.221:23183",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },

其中:
arbiterOnly:0或1,标识一个仲裁(arbiter),Arbiter的唯一作用是参与Primary的选举,Arbiter不保存数据,不会为client提供服务,它存在的意义就是为了选举Primary。
hidden:0或1,表示该成员是不是隐藏成员,Hidden成员的主要作用是备份数据,可以使用性能较差的服务器作为Hidden成员。Hidden成员不会接收Client的请求,也不会成为Primary。在设置Hidden成员时,必须设置members[n].priorty属性为0。
priority:数值类型,用于设置成员成为Primary的优先级。priority越高的成员,越有机会成为Primary。如果priority=0,那么该成员永远不会成为Primary。
votes:1或0,表示该成员的投票的数量,在每个Replica Set中,最多有7个成员,其votes属性值是1。votes 属性是1的成员(voting members)拥有选举Primary的权利。一个成员要想成为一个Primary,那么必须获得voting members的大多成员的支持。
在Replica Set中,如果voting members的数量是5,那么一个成员成为Primary的条件是:获得超过2个voting members的支持,并且没有任何voting members 反对。只要有任意一个voting member 反对该成员成为Primary,那么该成员就不能成为Primary。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI