在mongodb主节点上导入数据集时报错

img


在mongodb主节点上导入数据集时,提示如下报错。
can't create user databases on a --configsvr instance
执行的语句为:./mongorestore --host x.x --port 200 -d cs -u root -p 1234 --authenticationDatabase admin /home/cs

引用new bing部分回答作答:
这个错误提示表示你正在尝试在一个配置服务器(config server)实例上创建用户数据库,但是配置服务器实例不支持创建用户数据库,它只能存储和管理配置信息。

可能出现这个错误的原因是你在连接 MongoDB 集群时指定了一个配置服务器的主机名或 IP 地址,而不是一个实际的数据节点。配置服务器的主要作用是存储分片集群的元数据,它不包含实际的用户数据,因此不能作为一个数据节点来使用。

解决这个问题的方法是指定一个实际的数据节点作为目标主机,并使用正确的端口号和认证信息来连接。你可以通过运行 rs.status() 命令来查看当前集群的状态,并确定哪个节点是主节点,然后将其作为导入数据的目标主机。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据报错信息,你正在尝试在一个配置服务器实例上创建用户数据库。然而,配置服务器通常用于支持分片群集,并不存储用户数据。因此,你需要将mongorestore命令行工具发送到Shard节点上,而非配置服务器实例上。

下面是mongorestore命令行工具的示例代码:

mongorestore --host x.x.x.x:27017 -d dbname /path/to/bson/files

其中,参数说明如下:

  • --host:主节点的IP地址和端口号。
  • -d:要恢复的数据库名称。
  • /path/to/bson/files:你要导入的数据集路径。

如果你的数据集是一个压缩文件,可以使用以下命令来解压:

tar -zxvf yourfile.tar.gz

如果数据集在mongodump期间被导出,则可以使用以下命令将其导入:

mongorestore --host x.x.x.x:27017 /path/to/dump/files

最后,需要注意的是,你需要在Shard节点上进行身份验证,而不是在配置服务器实例上进行身份验证。因此,你需要提供正确的身份验证数据库,即Shard节点上的数据库名称。例如,如果您在Shard节点上使用--authenticationDatabase admin参数进行身份验证,则需要在mongorestore命令中提供相同的身份验证数据库。
如果我的回答解决了您的问题,请采纳!

以下内容引用CHATGPT:

这个错误提示是因为你正在将数据导入到一个配置服务器实例中,而配置服务器实例不能创建用户数据库。你需要将数据导入到一个数据节点实例中,例如:

./mongorestore --host x.x --port 200 -d cs -u root -p 1234 --authenticationDatabase admin /home/cs --dir=/path/to/your/backup/folder

其中,--dir参数指定你的备份文件夹的路径。另外,--host参数需要指定一个数据节点实例的地址,而不是配置服务器实例的地址。

引用chatGPT作答,根据报错提示,您正在尝试在一个配置服务器实例上创建用户数据库。配置服务器不支持创建用户数据库,因为它们是用于存储分片集群的元数据。因此,您需要在不同的节点上运行mongorestore命令来导入数据。

如果您的MongoDB部署使用了分片集群,请确保您正在连接到一个分片节点或mongos实例,而不是配置服务器实例。您可以使用以下命令检查mongos的状态:

db.runCommand({whatsmyuri: 1})

如果您使用的是副本集,而不是分片集群,则可以连接到主节点并导入数据,就像您所做的那样。