一、环境说明
1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明
2、各个角色的部署情况
角色
IP
端口
复制集名称
mongos
172.21.244.101,172.21.244.102,172.21.244.94
27000
无
config server
172.21.244.101,172.21.244.102,172.21.244.94
27100
repl_configsvr
存储节点(shard)
172.21.244.101,172.21.244.102,172.21.244.94
27101
shard1
3、MongoDB版本
mongos> db.version() 4.0.4-62-g7e345a7
二、基础信息准备
0、系统优化
echo "never" >/sys/kernel/mm/transparent_hugepage/enabled echo "never" >/sys/kernel/mm/transparent_hugepage/defrag
1、下载MongoDB二进制文件
cd /chj/app wget ops.chehejia.com:9090/pkg/chj_mongodb_4.0.4.tar.gz tar -zxvf chj_mongodb_4.0.4.tar.gz
2、相关目录建立
#建立base目录 mkdir /chj/data/mongodb/chj_db #把MongoDB二进制文件移动到base目录下的bin文件夹 mv chj_mongodb_4.0.4/bin /chj/data/mongodb/chj_db/bin #建立认证文件目录 mkdir /chj/data/mongodb/chj_db/auth #建立配置文件目录 mkdir /chj/data/mongodb/chj_db/conf #建立config server的data和日志目录 mkdir /chj/data/mongodb/chj_db/config/data -p mkdir /chj/data/mongodb/chj_db/config/log #建立mongos的日志目录 mkdir /chj/data/mongodb/chj_db/mongos/log -p #建立数据节点data和日志目录 mkdir /chj/data/mongodb/chj_db/shard1/data -p mkdir /chj/data/mongodb/chj_db/shard1/log
3、相关配置文件编写
A、mongos的配置文件编写
vim /chj/data/mongodb/chj_db/conf/mongos.conf systemLog: destination: file logAppend: true path: /chj/data/mongodb/chj_db/mongos/log/mongos.log processManagement: fork: true # fork and run in background pidFilePath: /chj/data/mongodb/chj_db/mongos/log/mongos.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo net: port: 27000 bindIpAll: true maxIncomingConnections: 1000 unixDomainSocket: enabled: true pathPrefix: /chj/data/mongodb/chj_db/mongos/log filePermissions: 0700 security: keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key # authorization: enabled #replication: sharding: configDB: repl_configsvr/172.21.244.101:27100,172.21.244.102:27100,172.21.244.94:27100
B、config server的配置文件编写
vim /chj/data/mongodb/chj_db/conf/config.conf systemLog: destination: file logAppend: true path: /chj/data/mongodb/chj_db/config/log/congigsrv.log storage: dbPath: /chj/data/mongodb/chj_db/config/data journal: enabled: true wiredTiger: engineConfig: directoryForIndexes: true processManagement: fork: true # fork and run in background pidFilePath: /chj/data/mongodb/chj_db/config/log/configsrv.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo net: port: 27100 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. #bindIpAll: true maxIncomingConnections: 1000 unixDomainSocket: enabled: true pathPrefix: /chj/data/mongodb/chj_db/config/data filePermissions: 0700 security: keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key authorization: enabled replication: replSetName: repl_configsvr sharding: clusterRole: configsvr
C、存储节点的配置文件编写
vim /chj/data/mongodb/chj_db/conf/shard1.conf systemLog: destination: file logAppend: true path: /chj/data/mongodb/chj_db/shard1/log/shard1.log storage: dbPath: /chj/data/mongodb/chj_db/shard1/data journal: enabled: true wiredTiger: engineConfig: directoryForIndexes: true processManagement: fork: true # fork and run in background pidFilePath: /chj/data/mongodb/chj_db/shard1/log/shard1.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo net: port: 27101 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. #bindIpAll: true maxIncomingConnections: 1000 unixDomainSocket: enabled: true pathPrefix: /chj/data/mongodb/chj_db/shard1/data filePermissions: 0700 security: keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key authorization: enabled replication: replSetName: shard1 sharding: clusterRole: shardsvr
4、生产key认证文件
echo "chj123456" >/chj/data/mongodb/chj_db/auth/keyfile.key #设置文件的权限为400,不然服务无法启动 chmod 400 /chj/data/mongodb/chj_db/auth/keyfile.key
三、集群初始化
1、启动 config server 服务
/chj/data/mongodb/chj_db/bin/mongod -f /chj/data/mongodb/chj_db/conf/config.conf
2、初始化config server集群
#登录其中一个config server节点
/chj/data/mongodb/chj_db/bin/mongo --port 27100
#配置集群
config = { _id:"repl_configsvr",members:[ {_id:0,host:"172.21.244.101:27100"}, {_id:1,host:"172.21.244.102:27100"}, {_id:2,host:"172.21.244.94:27100"}] }
#初始化集群
rs.initiate(config)
PS:
结果输出如下,说明集群初始化成功,可以通过rs.status()命令查看集群状态
{
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(1557538260, 1),
"electionId" : ObjectId("000000000000000000000000")
},
"lastCommittedOpTime" : Timestamp(0, 0)
}
3、启动存储节点服务
/chj/data/mongodb/chj_db/bin/mongod -f /chj/data/mongodb/chj_db/conf/shard1.conf
4、初始化存储集群
#登录你希望是主节点的服务器
/chj/data/mongodb/chj_db/bin/mongo --port 27101
#配置集群
config = { _id:"shard1",members:[ {_id:0,host:"172.21.244.101:27101"}, {_id:1,host:"172.21.244.102:27101"},{_id:2,host:"172.21.244.94:27101",arbiterOnly:true}] }
#初始化集群
rs.initiate(config)
PS:
结果输出如下,说明集群初始化成功,可以通过rs.status()命令查看集群状态
{ "ok" : 1 }
5、添加存储集群的管理账号
登录主节点
/chj/data/mongodb/chj_db/bin/mongo --port 27101
use admin
db.createUser(
{
user: "root",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
}
)
6、启动mongos 服务
/chj/data/mongodb/chj_db/bin/mongos -f /chj/data/mongodb/chj_db/conf/mongos.conf
7、添加config server的管理账号
登录任意一个mongos节点
/chj/data/mongodb/chj_db/bin/mongo --port 27000
use admin
db.createUser(
{
user: "root",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
}
)
8、把存储节点添加到mongos
登录任意一个mongos节点(如果是在上一步的窗口,需要退出重新登录)
/chj/data/mongodb/chj_db/bin/mongo --port 27000
use admin
db.auth('root','123456')
#添加分片
sh.addShard('shard1/172.21.244.101:27101,172.21.244.102:27101,172.21.244.94:27101')
#查看分片状态
sh.status()
四、交付业务方
1、建立应用账号
登录任意一个mongos节点
/chj/data/mongodb/chj_db/bin/mongo --port 27000
use admin
db.auth('root','123456')
#切到业务数据库
use chj_db
#建立读写账号
db.createUser(
{
user: "chj_db_rw",
pwd: "123456",
roles: [
{ role: "readWrite", db: "chj_db" },
{ role: "dbOwner", db: "chj_db" }
]
}
)
#建立只读账号(根据业务需求确认是否需要)
db.createUser(
{
user: "chj_db_r",
pwd: "123456",
roles: [ { role: "read", db: "chj_db" } ]
}
)
2、交付开发人员信息
连接地址:172.21.244.101:27000,172.21.244.102:27000,172.21.244.94:27000 库名:chj_db 账号:chj_db_rw 密码:123456
五、数据库启用分片
如果后期业务量大,需要开启分片,配置如下
#指定需要分片的数据库
mongos> sh.enableSharding("chj_db")
{
"ok" : 1,
"operationTime" : Timestamp(1557546835, 3),
"$clusterTime" : {
"clusterTime" : Timestamp(1557546835, 3),
"signature" : {
"hash" : BinData(0,"bkrrr8Kxrr9j9udrDc/hURHld38="),
"keyId" : NumberLong("6689575940508352541")
}
}
}
#在chj_db数据库和users集合中创建了name和age为升序的片键
mongos> sh.shardCollection("chj_db.users",{name:1,age:1})
{
"collectionsharded" : "chj_db.users",
"collectionUUID" : UUID("59c0b99f-efff-4132-b489-f6c7e3d98f42"),
"ok" : 1,
"operationTime" : Timestamp(1557546861, 12),
"$clusterTime" : {
"clusterTime" : Timestamp(1557546861, 12),
"signature" : {
"hash" : BinData(0,"UBB1A/YODnmXwG5eAhgNLcKVzug="),
"keyId" : NumberLong("6689575940508352541")
}
}
}
#查看分片情况
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("5cd625e0da695346d740f749")
}
shards:
{ "_id" : "shard1", "host" : "shard1/172.21.244.101:27101,172.21.244.102:27101", "state" : 1 }
active mongoses:
"4.0.4-62-g7e345a7" : 3
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "chj_db", "primary" : "shard1", "partitioned" : true, "version" : { "uuid" : UUID("82088bc7-7b98-4033-843d-7058d8d959f6"), "lastMod" : 1 } }
chj_db.users
shard key: { "name" : 1, "age" : 1 }
unique: false
balancing: true
chunks:
shard1 1
{ "name" : { "$minKey" : 1 }, "age" : { "$minKey" : 1 } } -- { "name" : { "$maxKey" : 1 }, "age" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard1 1
{ "_id" : { "$minKey" : 1 } } -- { "_id" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]