mongodb集群搭建

mongodb版本:4.2.2

1.关闭系统防火墙

2.配置域名解析
在3台虚拟机上分别执行以下3条命令,注意替换实际IP地址
echo "192.168.119.137 geekdemo1 member1.example.com member2.example.com" >> /etc/hosts
echo "192.168.119.138 geekdemo2 member3.example.com member4.example.com" >> /etc/hosts
echo "192.168.119.139 geekdemo3 member5.example.com member6.example.com" >> /etc/hosts

3.准备分片目录
在各服务器上创建数据目录,我们使用/data,请按自己需要修改为其他目录:
在member1/member3/member5上执行以下命令:
mkdir -p /data/shard1/
mkdir -p /data/config/
在member2/member4/member6上执行以下命令:
mkdir -p /data/shard2/
mkdir -p /data/mongos/

4.创建第一个分片用的复制集
在member1/member3/member5上执行以下命令。
mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath /data/shard1/mongod.log --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1

5.初始化第一个分片复制集
mongo --host member1.example.com:27010
rs.initiate({
_id:"shard1",
"members":[
{
"_id":0,
"host":"member1.example.com:27010"
},
{
"_id":1,
"host":"member3.example.com:27010"
},
{
"_id":2,
"host":"member5.example.com:27010"
}
]
});

查看状态rs.status();

6.创建config server复制集
在member1/member3/member5上执行以下命令
mongod --bind_ip 0.0.0.0 --replSet config --dbpath /data/config --logpath /data/config/mongod.log --port 27019 --fork --configsvr --wiredTigerCacheSizeGB 1

7.初始化config server复制集

mongo --host member1.example.com:27019

rs.initiate({
_id:"config",
"members":[
{
"_id":0,
"host":"member1.example.com:27019"
},
{
"_id":1,
"host":"member3.example.com:27019"
},
{
"_id":2,
"host":"member5.example.com:27019"
}
]
});

8.在第一台机器上搭建mongos

mongos --bind_ip 0.0.0.0 --logpath /data/mongos/mongos.log --port 27017 --fork --configdb config/member1.example.com:27019,member3.example.com:27019,member5.example.com:27019

连接到mongos,添加分片

mongo --host member1.example.com:27017

sh.addShard("shard1/member1.example.com:27010,member3.example.com:27010,member5.example.com:27010");

9.创建分片表

连接到mongos,创建分片集合

mongo --host member1.example.com:27017

mongos>sh.status()
mongos>sh.enableSharding("foo");
mongos>sh.shardCollection("foo.bar",{_id:'hashed'});
mongos>sh.status();

插入测试数据

use foo
for(var i=0;i<10000;i++){
db.bar.insert({i:i});
}

10.创建第2个分片的复制集
在member2/member4/member6上执行以下命令。
mongod --bind_ip 0.0.0.0 --replSet shard2 --dbpath /data/shard2 --logpath /data/shard2/mongod.log --port 27011 --fork --shardsvr --wiredTigerCacheSizeGB 1

11.初始化第二个分片的复制集
mongo --host member2.example.com:27011
rs.initiate({
_id:"shard2",
"members":[
{
"_id":0,
"host":"member2.example.com:27011"
},
{
"_id":1,
"host":"member4.example.com:27011"
},
{
"_id":2,
"host":"member6.example.com:27011"
}
]
});

12.加入第2个分片

连接到mongos,添加分片

mongo --host member1.example.com:27017

sh.addShard("shard2/member2.example.com:27011,member4.example.com:27011,member6.example.com:27011");
sh.status();

测试:

连接mongos

mongo --host member1.example.com:27017

连接分片1

mongo --host member1.example.com:27010

连接分片2

mongo --host member2.example.com:27011

查询所有的文档:
use foo;
db.bar.find({});
db.bar.count();
db.bar.find({i:"10001"});
db.bar.insert({i:10001});

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

相关阅读更多精彩内容

友情链接更多精彩内容