QQ群:465614686
- 1. 环境构建步骤
(1)线上环境
都是副本集模式 3个业务访问节点+1个隐藏节点 (隐藏节点做hadoop、spark数据同步使用以及数据报表查询等)
(2)主机以及配置说明
- 10.21.18.21 primary节点 优先级为100
- 10.21.18.22 secondary节点 优先级为90
- 10.21.18.23 secondary节点 优先级为80
- 10.21.18.24 隐藏节点 优先级为0
系统配置:128G内存,64Core CPU,2TB SSD硬盘
(3)MongoDB版本
percona-server-mongodb-3.0.12-1.8
(4)数据量
目前该副本集数据量为1.3TB;
单个集合最大数据量目前为6.7亿+,超过5亿+的集合有11张,超过2亿+的集合有27个;
没有做sharding集群,副本集支撑现有业务;
(5)参数配置
几台服务器配置完全一样
vim mguserinfo.conf
# fordocumentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to writelogging data.
systemLog:
destination: file
logAppend: true
logRotate: reopen
path: /data/users/mgousr01/mongodb/logs/userinfo01.log
# Where and howto store data.
storage:
dbPath: /data/users/mgousr01/mongodb/dbdata
journal:
enabled: true
directoryPerDB: true
engine: wiredTiger
#########storage.wiredTigerOptions
wiredTiger:
engineConfig:
cacheSizeGB: 64
directoryForIndexes: true
indexConfig:
prefixCompression: true
##########operationProfilingOptions
operationProfiling:
slowOpThresholdMs: 50
mode: "all"
########ProcessManagementOptions
processManagement:
fork: true
pidFilePath:/data/users/mgousr01/mongodb/dbdata/userinfo01.pid
# networkinterfaces
net:
port: 28010
#bindIp:
maxIncomingConnections: 27600
security:
keyFile:/data/users/mgousr01/mongodb/etc/keyFile/keyFilers0.key
#operationProfiling:
##########replicationOptions
replication:
replSetName: userRS
oplogSizeMB: 95360
secondaryIndexPrefetch: all
#sharding:
#clusterRole: shardsvr #configsvr or shardsvr
##Enterprise-Only Options
#auditLog:
#snmp:
setParameter:
enableLocalhostAuthBypass: true
#replWriterThreadCount: 32
#wiredTigerConcurrentReadTransactions: 1000
#wiredTigerConcurrentWriteTransactions: 1000
注意说明:
keyFilers0.key表示认证文件,需要自己生成;权限为 600 否则启动失败,几台key也都是一样。
先将security和keyFile参数注释,待如下(6)(7)(8)操作完毕后,在将security和keyFile参数注释去掉即可。
(6)启动
mongod –f mguserinfo.conf
(7)配置副本集的方法
a. 登陆10.21.18.21主机操作
>config={_id:"userRS",members:[{_id:1,host:"10.21.18.21:28010",priority:100,tags:{'use':'usersinfo-01-312'}}]}
> rs.initiate(config)
b. 添加节点
userRS:PRIMARY> rs.add({_id:2,host:"10.21.18.22:28010", priority:90,tags:{'use':'usersinfo-02-312'}})
userRS:PRIMARY>rs.add({_id:3, host:"10.21.18.23:28010", priority:80,tags:{'use':'usersinfo-03-312'}})
userRS:PRIMARY>rs.add({_id:5, host:"10.21.18.24:28010", priority:0,hidden:true,tags:{'use':'usersinfo-03-312-hidden'}})
(8)创建用户
use admin
db.createUser(
{
user: "admin",
pwd: "123456",
roles:
[
{role: "userAdminAnyDatabase",db: "admin"},
{ role: "readAnyDatabase", db:"admin" },
{ role: "dbOwner", db:"admin" },
{ role: "userAdmin", db:"admin" },
{ role: "root", db: "admin"},
{ role: "clusterMonitor", db:"admin" },
{ role: "dbAdmin", db:"admin" },
]
}
)
用户名为admin,密码为123456
- 2. 如何实现增量备份
(1)上述环境是我们线上的生产环境
(2)将其中一个secondary节点关闭
我选择了10.21.18.22:28010主机节点
a. 登陆主节点操作如下
rs.remove("10.21.18.22:28010");
从现有集群中移除该节点
b. shutdownmongod进程
登陆10.21.18.22主机将mongod进程shutdown
mongod –f mguserinfo.conf --shutdown
(3)参数调整
将10.21.18.22:28010该节点参数中的replSetName和keyfile以及security注释,并启动到单节点模式(以减少应用业务访问或者链接没有释放的线程,选择了业务最低峰凌晨3点操作,如果不及时操作的话,将该节点设置为隐藏节点即可,然后在进行后续操作)
启动:
mongod –f mguserinfo.conf
(4)登陆到该节点做如下操作
a. mongo10.21.18.22:28010
> use admin
>db.system.version.find()
{ "_id" : "authSchema", "currentVersion" :5 }
b. 当前认证级别为5,将其修改为3
>db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })
c. 重启
将10.21.18.22:28010该节点参数中的replSetName和keyfile以及security注释去掉;启动即可
mongod –f mguserinfo.conf –shutdown
mongod–f mguserinfo.conf
这样该节点又加入到该集群中
(5)切换primary节点
切换现有primary节点到10.21.18.22secondary主机
a. 调整优先级
将10.21.18.21主机mongodb primary节点的优先级修改为85即可
b. 操作命令
cfg =rs.conf()
cfg.members[1].priority= 85
rs.reconfig(cfg)