您的位置:首页 > 数据库 > Mongodb

Centos7/Centos8 Mongodb4.2分片集群配置(同一主机)

2020-07-12 12:29 183 查看

本文为同一主机的示范,要调整多服务器可根据情况进行更改

服务 实例 端口
mongos路由 mongos 20000
config服务器1 config1 20001
config服务器2 config2 20002
config服务器3 config3 20003
shard分片主1 shard1-1 20011
shard分片备1 shard2-1 20012
shard分片主2 shard2-1 20021
shard分片备2 shard2-2 20022
shard分片主3 shard3-1 20031
shard分片备3 shard3-2 20032

安装mongos
添加源

vim /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org]
name = MongoDB Repository
baseurl = https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck = 1
enabled = 1
gpgkey = https://www.mongodb.org/static/pgp/server-4.0.asc
yum -y install mongodb-org
groupadd mongodb
useradd -g mongodb mongodb

1、创建数据目录

mkdir /data/mongodb
mkdir /data/mongodb/mongos
mkdir -p /data/mongodb/conf/db{1,2,3} /data/mongodb/conf/log
mkdir /data/mongodb/shard{1,2,3}
mkdir /data/mongodb/shard{1,2,3}/db{1,2,3}
mkdir /data/mongodb/shard{1,2,3}/log

2、目录权限

chown -R mongodb:mongodb /data/mongodb
chmod -R 777 /data/mongodb

查看是否有进程运行

ps aux|grep mongo

3、启动config服务器
分别启动三台服务器的配置服务

mongod -f /data/mongodb/conf/config1.yaml
mongod -f /data/mongodb/conf/config2.yaml
mongod -f /data/mongodb/conf/config3.yaml

相关配置文件内容:
config1.yaml

sharding:
clusterRole: configsvr
replication:
replSetName: config
net:
port: 20001
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/conf/log/config1.log
storage:
dbPath: /data/mongodb/conf/db1
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodconfig1.pid
timeZoneInfo: /usr/share/zoneinfo

config2.yaml

sharding:
clusterRole: configsvr
replication:
replSetName: config
net:
port: 20002
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/conf/log/config2.log
storage:
dbPath: /data/mongodb/conf/db2
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodconfig2.pid
timeZoneInfo: /usr/share/zoneinfo

config3.yaml

sharding:
clusterRole: configsvr
replication:
replSetName: config
net:
port: 20003
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/conf/log/config.log
storage:
dbPath: /data/mongodb/conf/db3
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodconfig3.pid
timeZoneInfo: /usr/share/zoneinfo

初始化配置服务器

rs.initiate(
{
_id: "config",
configsvr: true,
members: [
{ _id : 0, host : "127.0.0.1:20001" },
{ _id : 1, host : "127.0.0.1:20002" },
{ _id : 2, host : "127.0.0.1:20003" }
]
}
)

为conf集群添加root用户

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

4、启动分片

mongod -f /data/mongodb/conf/shard1-1.yaml
mongod -f /data/mongodb/conf/shard1-2.yaml
mongod -f /data/mongodb/conf/shard2-1.yaml
mongod -f /data/mongodb/conf/shard2-2.yaml
mongod -f /data/mongodb/conf/shard3-1.yaml
mongod -f /data/mongodb/conf/shard3-2.yaml

相关配置文件:
shard1-1.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
net:
port: 20011
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard1/log/shard1-1.log
storage:
dbPath: /data/mongodb/shard1/db1
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard1-1.pid
timeZoneInfo: /usr/share/zoneinfo

shard1-2.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard2
net:
port: 20012
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard1/log/shard1-2.log
storage:
dbPath: /data/mongodb/shard1/db2
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard1-2.pid
timeZoneInfo: /usr/share/zoneinfo

shard2-1.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
net:
port: 20021
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard2/log/shard1-1.log
storage:
dbPath: /data/mongodb/shard2/db1
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard2-1.pid
timeZoneInfo: /usr/share/zoneinfo

shard2-2.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard2
net:
port: 20022
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard2/log/shard2-2.log
storage:
dbPath: /data/mongodb/shard2/db2
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard2-2.pid
timeZoneInfo: /usr/share/zoneinfo

shard3-1.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
net:
port: 20031
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard3/log/shard3-1.log
storage:
dbPath: /data/mongodb/shard3/db1
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard3-1.pid
timeZoneInfo: /usr/share/zoneinfo

shard3-2.yaml

sharding:
clusterRole: shardsvr
replication:
replSetName: shard2
net:
port: 20032
bindIp: 0.0.0.0
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard3/log/shard3-2.log
storage:
dbPath: /data/mongodb/shard3/db2
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongodshard3-2.pid
timeZoneInfo: /usr/share/zoneinfo

启动分片副本集Ⅰ
登录20011初始化(一主一从一仲裁)

rs.initiate(
{
_id : "shard1",
members: [
{ _id : 0, host : "127.0.0.1:20011" ,priority : 2 },
{ _id : 1, host : "127.0.0.1:20021" ,priority : 1 },
{ _id : 2, host : "127.0.0.1:20031" ,arbiterOnly :true }
]
}
)

为share1添加root用户(必须在PRIMARY状态下,可以按回车键可以看到PRIMARY)

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

启动分片副本集Ⅱ
登录20012初始化(一主一从一仲裁)

rs.initiate(
{
_id : "shard2",
members: [
{ _id : 0, host : "127.0.0.1:20012" ,priority : 2 },
{ _id : 1, host : "127.0.0.1:20022" ,priority : 1 },
{ _id : 2, host : "127.0.0.1:20032" ,arbiterOnly :true }
]
}
)

为share2添加root用户(必须在PRIMARY状态下,可以按回车键可以看到PRIMARY)

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

5、启动路由服务器

mongos -f /data/mongodb/conf/mongos.yaml

mongos.yaml

sharding:
configDB: config/127.0.0.1:20001,127.0.0.1:20002,127.0.0.1:20003
net:
port: 20000
bindIp: 0.0.0.0

systemLog:
destination: file
logAppend: true
path: /data/mongodb/conf/log/mongos.log

processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongos.pid
timeZoneInfo: /usr/share/zoneinfo

连接到mongo路由: 这里的登录密码就是config集群配置的用户名和密码;端口为定义的20000,使用root账户登陆

use admin;
db.auth('root','root');

查看登陆是否成功

添加shard分片集群
把shard1、shard2分片集群都添加进去,每个分片添加一个节点即可,主 从都可以;

sh.addShard( "shard1/127.0.0.1:20011");
sh.addShard( "shard2/127.0.0.1:20012");

查看集群状态

sh.status()

6、开启均衡器和分片功能

开启均衡器:

sh.startBalancer()

查看结果:

sh.status()

开启文档分片并测试

use admin;
show dbs;
db.runCommand({enablesharding:"mydb"})
sh.enableSharding("mydb"); //设置world为分片
use world
sh.enableSharding("world"); //设置world为分片
sh.shardCollection("world.tiles",{name:"hashed"}); //设置分片集**
for (var i=0;i<100000;i++) db.world.insert({name:"zs"+i,age:i}); //插入数据
db.teacher.find();//查看数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: