mongodb集群的常用配置

集群的常用配置

查看分片信息状态

在mongos节点中查询整个集群的状态,包括副本集、分片集、mongs数量、数据库分布在哪个分片上、有无开启平衡器等

db.printShardingStatus()

image-20210523100537596

分片状态属性说明

属性 说明
shards 记录副本集、分片集群说明
active mongos mongos的版本及数量
autosplit chunk自动切割的功能是否启动,默认为启动
balancer 平衡器的相关信息
databases 数据库存放的相关信息

调整副本集

登录数据节点的主节点

/mongodb/mongodb-linux-x86_64-enterprise-rhel70-4.4.5/bin/mongo --port 27019

副本创建超级管理员

db.createUser(
	{
		user:"superadmin",
		pwd:"superadmin",
		roles:[{role:"root",db:"admin"}]
	}
);

登录

use admin
db.auth('superadmin','superadmin')

查看副本集节点的配置信息

rs.conf()
{
    
    
        "_id" : "repl_0",
        "version" : 2,
        "term" : 5,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [
                {
    
    
                        "_id" : 0,
                        "host" : "node1:27019",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
    
    
                                
                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
    
    
                        "_id" : 1,
                        "host" : "node2:27019",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
    
    
                                
                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
    
    
                        "_id" : 2,
                        "host" : "node3:27019",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
    
    
                                
                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
    
    
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "catchUpTimeoutMillis" : -1,
                "catchUpTakeoverDelayMillis" : 30000,
                "getLastErrorModes" : {
    
    
                        
                },
                "getLastErrorDefaults" : {
    
    
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("60a8c54c3688ad95075d34cc")
        }
}

有多少个副本节点,members里就会记录多少笔host数据,从members的属性值中可以了解每个副本集的状态及配置

members的相关属性及说明

属性 说明
arbiterOnly 是否为仲裁节点,默认为false
buildIndexes 是否会同步建立索引,默认为true,一旦加入节点后便无法更改。若要为false,须要在一开始加入节点时就进行设定
hidden 是否为隐藏节点,默认为false
priority 成为主节点的优先权,默认为1
tags 用作功能隔离的读优先
slaveDelay 设定节点同步数据延迟的时间,单位为秒。若要设定延迟,则priority须设定为0
votes 选举主节点时的投票权

更新副本集的成员配置

cfg=rs.conf()
# 副本集成员的位置,从0开始
cfg.members[1].priority=2
rs.reconfig(cfg)

若在副节点修改,则须加上"force"

rs.reconfig(cfg,{froce:true})

加入新节点

# 若仅输入IP地址及端口号,则其余配置都采用默认值rs.add('10.10.10.10:27019')# 若要自定义参数值,则在添加节点时可以加入设定rs.add({_id:4,host:'10.10.10.10:27019',priority:0,votes:0})

加入仲裁节点

rs.addArb('10.10.10.10:27019')

删除节点

rs.remove('10.10.10.10:27019')

使用副节点查询数据(需登录副本节点)

rs.slaveOK()

在特定时间内使其节点不成为主节点

rs.freeze(<秒数>)

使主节点降级为副节点

re.stepDown()

查看Oplog相关信息(包含Oplog大小、头尾数据时间)

rs.printReplicationInfo()

显示主节点的副本集及同步状态

rs.printSlaveReplicationInfo()

查看副本集中的节点有哪些指令可使用

rs.help()

查看当前节点是否为主节点

db.isMaster()

指定副节点成员同步的对象(需登录副节点)

rs.syncFrom('10.10.10.10:27019')

调整分片集群

登录mongos节点

扫描二维码关注公众号,回复: 13558551 查看本文章

新增分片

db.runCommand({addShard:"Shard3/10.10.10.10:27017,10.10.10.11:27017,10.10.10.12:27017"})

移除分片

db.runCommand({removeShard:"Shard3"})

禁用chunk的自动切割功能

sh.disableAutoSplit()

启用chunk的自动切割功能

sh.enableAutoSplit()

用指定的分片键值拆分chunk

大多数情况下,MongoDB会自动拆分,无须自动执行

sh.splitAt("database.collection",{"<字段>":"<值>"})

将拥有特定键值的chunk均分拆开

大多数情况下,MongoDB会自动拆分,无须自动执行

sh.splitFind("database.collection",{"<字段>":"<值>"})

查看分片的状态(与db.printShardingStatus()相同)

sh.status()

查看分片集的可用指令

sh.help()

管理平衡器

平衡器使得分片之间的chunk数可以平衡,并不是使chunk数完全一致,而是在一定范围内的平衡

查看平衡器是否启用

sh.getBalancerState()

启用平衡器

sh.startBalancerState()sh.setBalancerState(true)

禁用平衡器

sh.stopBalancer()sh.setBalancerState(false)

禁用特定分片集合的平衡器

sh.disableBalancing('<数据库名>.<集合名>')

启用特定分片集合的平衡器

sh.enableBalancing('<数据库名>.<集合名>')

查看平衡器是否正在运行

sh.isBalancerRunning()

让数据在分片间迁移

对于做了分片的数据集合,MongoDB会将数据块( chunk )储存在不同的分片上。对于没有做数据 分片的数据库,MongoDB会将数据块( chunk )整个储存在一个分片上。原始储存在哪个分片上不是我 们可以设置的,但是我们可以通过指令将数据块( chunk )或整个数据库搬迁到另一一个分片上。

将指定的数据块(chunk)搬迁到目标分片上

sh.moveChunk("<数据库名>.<集合名>",{"<字段名>":"<内容>"},"<分片名>")

将数据库的主分片(Primary)迁移到目标分片上

db.adminCommand({movePrimary:"<数据库名>",to:"<分片名>"})

猜你喜欢

转载自blog.csdn.net/qq_36213352/article/details/117197580