mongodb分片搭建
服务器环境CentOS7.6
| 服务器配置 |
bdip副本(端口:27017) |
bdip1副本(端口:27018) |
配置configserver(端口27019) |
mongos路由(端口27020) |
| 192.168.0.69 |
主 |
备 |
主 |
1 |
| 192.168.0.70 |
备 |
主 |
备 |
|
| 192.168.0.71 |
仲裁 |
仲裁 |
备 |
|
架构
一路由(路由服务不需要数据目录,建议与应用服务器安装在一起),配置一主两备(配置服务器不允许又仲裁节点),两个分片副本集(一主一备一仲裁)
配置bdip副本集
| 服务器配置 |
bdip副本(端口:27017) |
| 192.168.0.69 |
主 |
| 192.168.0.70 |
备 |
| 192.168.0.71 |
仲裁 |
主服务器配置(192.168.0.69),备份服务器除了创建认证文件,其他得一样
配置yum仓库
[root@by mongodb-mongos]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
创建认证文件
openssl rand -base64 741 > /etc/mongo-key
chmod 600 /etc/mongo-key
主节点配置文件
[root@by mongodb-mongos]# grep -Ev "^$|^#" /etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-bdip/mongod.log
storage:
dbPath: /data/mongodb-bdip/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-bdip/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: bdip
sharding:
clusterRole: shardsvr
创建数据目录
mkdir /data/mongodb-bdip/ -p
chown -R mongod.mongod /data/mongodb-bdip/
授权文件分发到其他服务器
scp /etc/mongo-key 192.168.0.70:/etc/mongo-key
scp /etc/mongo-key 192.168.0.71:/etc/mongo-key
主节点创建用户
mongo 127.0.0.1:27017/admin --eval 'db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})'
或者
mongo 127.0.0.1:27017/admin
use admin
db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})
备份节点,仲裁节点配置
yum仓库
[root@by mongodb-mongos]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
配置文件
[root@by mongodb-mongos]# grep -Ev "^$|^#" /etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-bdip/mongod.log
storage:
dbPath: /data/mongodb-bdip/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-bdip/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: bdip
sharding:
clusterRole: shardsvr
创建数据目录
mkdir /data/mongodb-bdip/ -p
chown -R mongod.mongod /data/mongodb-bdip/
所有节点启动
[root@localhost ~]# mongod -f /etc/mongod.conf
主节点操作192.168.0.69
初始化副本集成员
mongo 127.0.0.1:27017/admin -u root -p BIMbim123
config = {_id : "bdip", members : [{_id : 0, host : " 192.168.0.69:27017",priority:2},{_id : 1, host : " 192.168.0.70:27017",priority:1},{_id : 2, host : "192.168.0.71:27017",arbiterOnly:true},] }
rs.initiate(config)
===============================================分割线,bdip分片已经搭建完成==============================================================
bdip1分片副本集搭建
| 服务器配置 |
bdip副本(端口:27018 |
| 192.168.0.69 |
备 |
| 192.168.0.70 |
主 |
| 192.168.0.71 |
仲裁 |
主服务器配置192.168.0.70
主节点配置文件
[root@by mongodb-mongos]# grep -Ev "^$|^#" /etc/mongod-bdip1.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-bdip1/mongod.log
storage:
dbPath: /data/mongodb-bdip1/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-bdip1/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27018
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: bdip1
sharding:
clusterRole: shardsvr
创建数据目录
mkdir /data/mongodb-bdip1/ -p
chown -R mongod.mongod /data/mongodb-bdip1/
主节点创建用户
mongo 127.0.0.1:27018/admin --eval 'db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})'
或者
mongo 127.0.0.1:27018/admin
use admin
db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})
备份节点,仲裁节点配置
配置文件
[root@by mongodb-mongos]# grep -Ev "^$|^#" /etc/mongod-bdip1.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-bdip1/mongod.log
storage:
dbPath: /data/mongodb-bdip1/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-bdip1/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27018
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: bdip1
sharding:
clusterRole: shardsvr
创建数据目录
mkdir /data/mongodb-bdip1/ -p
chown -R mongod.mongod /data/mongodb-bdip1/
所有节点启动
[root@localhost ~]# mongod -f /etc/mongod-bdip1.conf
主节点操作192.168.0.70
mongo 127.0.0.1:27018/admin -u root -p BIMbim123
config = {_id : "bdip1", members : [{_id : 0, host : " 192.168.0.70:27018",priority:2},{_id : 1, host : " 192.168.0.69:27018",priority:1},{_id : 2, host : " 192.168.0.71:27018",arbiterOnly:true},] }
>rs.initiate(config)
===============================================副本集bdip1搭建完成=================================================================
配置服务副本集搭建
配置服务器没有仲裁节点
| 服务器配置 |
配置configserver(端口27019) |
| 192.168.0.69 |
主 |
| 192.168.0.70 |
备 |
| 192.168.0.71 |
备 |
主节点配置文件192.168.0.69
创建数据目录和配置文件目录
mkdir /data/mongodb-config/config -p
chown -R mongod.mongod /data/mongodb-config
[root@localhost ~ ]# grep -Ev "^$|^#" /data/mongodb-config/config/mongod-config.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-config/mongod.log
storage:
dbPath: /data/mongodb-config/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-config/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27019
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: configset
sharding:
clusterRole: configsvr
可做可不做
#主节点创建用户
#mongo 127.0.0.1:27019/admin --eval 'db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})'
#或者
#mongo 127.0.0.1:27019/admin
#use admin
#db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})
备份节点
创建数据目录和配置文件目录
mkdir /data/mongodb-config/config -p
chown -R mongod.mongod /data/mongodb-config
配置文件
[root@localhost ~ ]# grep -Ev "^$|^#" /data/mongodb-config/config/mongod-config.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-config/mongod.log
storage:
dbPath: /data/mongodb-config/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb-config/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27019
bindIp: 0.0.0.0
security:
authorization: enabled
clusterAuthMode: keyFile
keyFile: /etc/mongo-key
replication:
replSetName: configset
sharding:
clusterRole: configsvr
所有节点启动
[root@localhost ~]# mongod -f /data/mongodb-config/config/mongod-config.conf
主节点操作192.168.0.69
mongo 127.0.0.1:27019/admin -u root -p BIMbim123
config = {_id : "configset", members : [{_id : 0, host : " 192.168.0.69:27019",priority:3},{_id : 1, host : " 192.168.0.70:27019",priority:2},{_id : 2, host : "192.168.0.71:27019",priority:1},] }
>rs.initiate(config)
mongos服务器搭建
建议与应用服务器配置在一起
| 服务器配置 |
mongos路由(端口27020) |
| 192.168.0.69 |
1 |
配置文件(路由用不到数据目录,所以去掉)
[root@by mongodb-mongos]# grep -Ev "^$|^#" /data/mongodb-mongos/config/mongod-mongos.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb-mongos/mongod.log
processManagement:
fork: true # fork and run in background
pidFilePath: /data/mongodb-mongos/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27020
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.
security:
keyFile: /etc/mongo-key
sharding:
configDB: configset/192.168.0.69:27019,192.168.0.70:27019,192.168.0.71:27019
启动mongos
mongos -f /data/mongodb-mongos/config/mongod-mongos.conf
创建用户
mongo 127.0.0.1:27020/admin --eval 'db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})'
或者
mongo 127.0.0.1:27020/admin
use admin
db.createUser( {user: "root",pwd: "BIMbim123",roles: [ { role: "root", db: "admin" } ]})
添加分片成员
mongo 127.0.0.1:27020/admin -u root -p BIMbim123
use admin
db.runCommand({addShard:'bdip/192.168.0.69:27017,192.168.0.70:27017,192.168.0.71:27017'})
db.runCommand({addShard:'bdip1/192.168.0.69:27018,192.168.0.70:27018,192.168.0.71:27018'})
查看分片信息
db.runCommand( { listshards : 1 } )
hash分片配置
数据库开启分片
mongo 127.0.0.1:27020/admin -u root -p BIMbim123
use admin
db.runCommand( { enablesharding : "oldboy" } )
##
db.runCommand( { enablesharding : "库名" } )
创建索引
use oldboy
db.hash.ensureIndex( { id: "hashed" } )
那张表的那个字段需要开启索引
db.表名.ensureIndex( { 字段: "hashed" } )
集合开启哈希分片
use admin
sh.shardCollection( "oldboy.hash", { id: "hashed" } )
那个库下面的那个表根据那个字段开启分片
sh.shardCollection( "库.表", { 字段: "分片方式" } )
参考链接