本文测试环境为 CentOS 7 和 MongoDB 最新版 (4.0.12)
使用 root 操作 (实际操作中使用非 root 账户启动报错)
零、服务器分配
| 服务器 102 | 服务器 103 | 服务器 104 |
|---|---|---|
| mongos | mongos | mongos |
| config server | config server | config server |
| shard server 1 主节点 | shard server 1 副节点 | shard server 1 仲裁 |
| shard server 2 仲裁 | shard server2 主节点 | shard server 2 副节点 |
| shard server 3 副节点 | shard server 3 仲裁 | shard server 3 主节点 |
端口:
1 | mongos:20000 |
一、MongoDB 安装
在 3 台服务器分别操作
1.1. 下载
1 | cd /usr/local |
1.2. 建立文件夹
1 | mkdir -p /usr/local/mongodb/conf |
1.3. 环境变量
1 | vim /etc/profile |
在文件末尾添加:
1 | export MONGODB_HOME=/usr/local/mongodb |
使配置立即生效:
1 | source /etc/profile |
二、config server 配置
在 3 台服务器分别操作
1 | vim /usr/local/mongodb/conf/config.conf |
内容:
1 | # where to write logging data. |
启动服务:
1 | mongod -f /usr/local/mongodb/conf/config.conf |
以下操作在任意一台服务器操作即可
1 | mongo --port 21000 |
1 | # config 变量 |
三、shard server 配置
在 3 台服务器分别操作
1 | vim /usr/local/mongodb/conf/shard1.conf |
内容:
1 | # where to write logging data. |
启动服务:
1 | mongod -f /usr/local/mongodb/conf/shard1.conf |
以下操作在任意一台服务器操作即可 (实际操作中需要在非裁判服务器操作)
1 | mongo --port 27001 |
1 | use admin |
重复上述操作配置 shard2 和 shard3, 注意修改名称、端口和对应的 arbiterOnly
四、mongos 配置
在 3 台服务器分别操作
1 | vim /usr/local/mongodb/conf/mongos.conf |
内容:
1 | # where to write logging data. |
启动服务:
1 | mongos -f /usr/local/mongodb/conf/mongos.conf |
以下操作在任意一台服务器操作即可
1 | mongo --port 20000 |
1 | use admin |
五、测试
在其中一台 mongos 继续操作:
1 | # 指定 test 数据库分片生效 |
六、在 Spring Boot 中使用
在其中一台 mongos 继续操作:
1 | # 创建账户 |
Spring Boot 连接字符串:
1 | spring: |
参考: