can't create user databases on a --configsvr instance 怎么解决
时间: 2024-03-26 07:40:32 浏览: 22
错误提示 "can't create user databases on a --configsvr instance" 表明你在一个配置服务器实例上尝试创建用户数据库,但是配置服务器不能用来存储用户数据,因为它们被用于存储MongoDB分片集群的元数据。
要解决这个问题,你需要在MongoDB分片集群中创建一个或多个数据节点。数据节点将用于存储实际的用户数据。在创建数据节点之前,需要先启动至少一个配置服务器实例。
以下是创建MongoDB分片集群的基本步骤:
1. 启动至少一个配置服务器实例:
```
mongod --configsvr --replSet configReplSet --bind_ip localhost,<config-server-ip> --port <config-server-port> --dbpath <config-server-db-path>
```
其中,`configReplSet` 是配置服务器副本集的名称,`<config-server-ip>` 是配置服务器的IP地址,`<config-server-port>` 是配置服务器的端口号,`<config-server-db-path>` 是配置服务器的数据存储路径。
2. 初始化配置服务器副本集:
```
mongo --host localhost:<config-server-port>
rs.initiate({_id: "configReplSet", configsvr: true, members: [{_id: 0, host: "localhost:<config-server-port>"}]})
```
3. 启动一个或多个数据节点实例:
```
mongod --shardsvr --replSet shardReplSet --bind_ip localhost,<data-node-ip> --port <data-node-port> --dbpath <data-node-db-path>
```
其中,`shardReplSet` 是数据节点副本集的名称,`<data-node-ip>` 是数据节点的IP地址,`<data-node-port>` 是数据节点的端口号,`<data-node-db-path>` 是数据节点的数据存储路径。
4. 初始化数据节点副本集:
```
mongo --host localhost:<data-node-port>
rs.initiate({_id: "shardReplSet", members: [{_id: 0, host: "localhost:<data-node-port>"}]})
```
5. 启动分片路由器实例:
```
mongos --configdb configReplSet/localhost:<config-server-port> --bind_ip localhost --port <mongos-port>
```
其中,`configReplSet/localhost:<config-server-port>` 是配置服务器副本集的连接字符串,`<mongos-port>` 是分片路由器的端口号。
6. 将数据节点加入分片集群:
```
mongo --host localhost:<mongos-port>
sh.addShard("shardReplSet/localhost:<data-node-port>")
```
这样就完成了MongoDB分片集群的创建。现在,你可以使用MongoDB客户端连接到分片路由器实例,并创建用户数据库。注意,你应该只在数据节点上创建用户数据库,而不是在配置服务器实例上创建。