### 实验:分片集群搭建及扩容#### 实验目标及流程 * 目标:学习如何搭建一个两分片的分片集群 * 环境:3台Linux虚拟机器,4Core 8GB * 步骤: * 配置域名解析 * 准备分片目录 * 创建第一个分片复制集并初始化 * 初始化分片集群,加入第一个分片 * 创建分片表 * 加入第二个分片#### 实验架构 ``` demo1 shard1(Primary|27017) shard2(Primary|27011) Config1(27019) mongos(27017) ``` ``` demo2 Secondary|27010 Secondary|27011 Config2(27019) ``` ``` demo3 Secondary|27010 Secondary|27011 Config3(27019) ``` | | member1 | member2 | member3 | member4 | member5 | member6 ||-------|---------|---------|---------|---------|---------|---------|| shard1 | ● | | ● | | ● | || shard2 | | ● | | ● | | ● || config | ● | | ● | | ● | || mongos | | ● | | ● | | ● | demo1 member1.example.com member2.example.com demo2 member3.example.com member4.example.com demo3 member5.example.com member6.example.com 1. 配置域名解析 在3台虚拟器上分别执行以下3条命令,注意替换实际IP地址 ```echo "192.168.1.1 demo1 member1.example.com member2.example.com" >> /etc/hostsecho "192.168.1.2 demo2 member3.example.com member4.example.com" >> /etc/hostsecho "192.168.1.3 demo3 member5.example.com member6.example.com" >> /etc/hosts```2. 准备分片目录 在各服务器上创建数据目录,我们用`/data`,请按自己需要修改为其他目录: - 在member1/member3/member5上执行以下命令: mkdir -p /data/shard1/ mkdir -p /data/config/ _ 在member2/member4/member6上执行以下命令: mkdir -p /data/shard2/ mkdir -p /data/mongos/3. 创建第一个分片用的复制集 在member1/member3/member5上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1```4. 初始化第一个分片复制集```mongo --host member1.example.com:27010rs.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" }, ]})```5. 创建config server复制集 在member1/member3/member5上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1```6. 初始化config server复制集```mongo --host member1.example.com:27010rs.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" }, ]})```7. 在第一台机器上搭建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:27017mongos>sh.addShard("shard1/member1.example.com:27010,member3.example.com:27010,member5.example.com:27010");```8. 创建分片表```# 连接到mongos,创建分片集合# mongo --host member1.example.com:27017mongos > sh.status();mongos > sh.enableSharding("foo");mongos > sh.shardCollection("foo.bar", {_id:‘hashed‘});mongos > sh.status();插入测试数据use foofor (var i = 0; i < 10000; i++) { db.bar.insert({i:i});}```9. 创建第2个分片复制集在 member2/member4/member6上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard2 --dbpath /data/shard2 --logpath /data/shard2/mongod.log --port 27011 --fork --shardsvr --wiredTigerCacheSizeGB 1```10. 初始化第二个分片的复制集```# mongo --host member2.example.com:27011rs.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" }, ]})```11. 加入第2个分片```# 连接到mongos,添加分片# mongo --host member1.example.com:27017mongos> sh.addShard("shard2/member2.example.com:27011,member4.example.com:27011,member6.example.com:27011");mongos>sh.status()```
原文地址:https://www.cnblogs.com/w3liu/p/12520431.html
时间: 2025-01-04 13:41:44