无法将数据库从一个 mongodb 帐户复制到另一个帐户
Unable to copy a database from one mongodb account to another
我通常像这样在同一个帐户的同一个集群中创建一个数据库的副本:
- 转储原始数据库
mongodump --uri
'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan
- 从转储文件恢复数据库
mongorestore --uri
'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME'
--archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'
而且效果很好。
现在,我创建了一个新的 MongoDB atlas 帐户,我正在尝试将原始数据库复制到新帐户中。
所以第一步类似:
- 转储原始数据库
mongodump --uri
'mongodb+srv://ORIGINAL_ACC_USER_NAME:ORIGINAL_ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan
- 从转储文件恢复数据库
在这里我找不到要使用的参数。
第一个例子,第二步,URI是这样的:
mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME
所以我显然应该更换
ACC_USER_NAME:ACC_USER_PASSWORD
和
NEW_ACC_USER_NAME:NEW_ACC_USER_PASSWORD
但是,ORIGINAL_DATABASE_NAME
呢,我找不到可以放在那里的等效项。
其余参数:
--archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'
应该保持不变。
第 1 步
首先,你应该mongodump
。你已经做对了。
mongodump --uri mongodb+srv://<USER>:<PASSWORD>@cluster.xxx.mongodb.net/<DATABASE>
此命令将创建一个 BSON 文件,我们将在下一步中使用它来恢复数据库。
第 2 步
现在,您可以将 mongorestore
与新的集群连接字符串一起使用,并与上一步中的 BSON 文件一起使用。
mongorestore --uri mongodb+srv://<USER>:<PASSWORD>@new_cluster.xxx.mongodb.net <BSON_FILE_PATH>
注意:您不需要使用 mongorestore 指定 ORIGINAL_DATABASE_NAME
。您应该只指定新集群的基本连接字符串。 BSON 文件包含恢复数据库所需的所有数据。因此,数据库将在新集群中创建,并且与旧集群中的名称相同。
我通常像这样在同一个帐户的同一个集群中创建一个数据库的副本:
- 转储原始数据库
mongodump --uri 'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan
- 从转储文件恢复数据库
mongorestore --uri 'mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'
而且效果很好。
现在,我创建了一个新的 MongoDB atlas 帐户,我正在尝试将原始数据库复制到新帐户中。
所以第一步类似:
- 转储原始数据库
mongodump --uri 'mongodb+srv://ORIGINAL_ACC_USER_NAME:ORIGINAL_ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME' --archive="DUMP_FILE_NAME" --forceTableScan
- 从转储文件恢复数据库
在这里我找不到要使用的参数。
第一个例子,第二步,URI是这样的:
mongodb+srv://ACC_USER_NAME:ACC_USER_PASSWORD@cluster0.fklgt.mongodb.net/ORIGINAL_DATABASE_NAME
所以我显然应该更换
ACC_USER_NAME:ACC_USER_PASSWORD
和
NEW_ACC_USER_NAME:NEW_ACC_USER_PASSWORD
但是,ORIGINAL_DATABASE_NAME
呢,我找不到可以放在那里的等效项。
其余参数:
--archive="DUMP_FILE_NAME" --nsFrom='ORIGINAL_DATABASE_NAME.' --nsTo='NEW_DATABASE_NAME.'
应该保持不变。
第 1 步
首先,你应该mongodump
。你已经做对了。
mongodump --uri mongodb+srv://<USER>:<PASSWORD>@cluster.xxx.mongodb.net/<DATABASE>
此命令将创建一个 BSON 文件,我们将在下一步中使用它来恢复数据库。
第 2 步
现在,您可以将 mongorestore
与新的集群连接字符串一起使用,并与上一步中的 BSON 文件一起使用。
mongorestore --uri mongodb+srv://<USER>:<PASSWORD>@new_cluster.xxx.mongodb.net <BSON_FILE_PATH>
注意:您不需要使用 mongorestore 指定 ORIGINAL_DATABASE_NAME
。您应该只指定新集群的基本连接字符串。 BSON 文件包含恢复数据库所需的所有数据。因此,数据库将在新集群中创建,并且与旧集群中的名称相同。