mongodb分片搭建

mongodb分片搭建

服务器环境CentOS7.6

服务器配置 bdip副本(端口:27017) bdip1副本(端口:27018) 配置configserver(端口27019) mongos路由(端口27020)
192.168.0.69 1
192.168.0.70
192.168.0.71 仲裁 仲裁

架构

一路由(路由服务不需要数据目录,建议与应用服务器安装在一起),配置一主两备(配置服务器不允许又仲裁节点),两个分片副本集(一主一备一仲裁)
分片.png

配置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( "库.表", { 字段: "分片方式" } )

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容