我有mongo设置与自制。
$ brew services start mongodb-community
$ mongosh
我可以在蒙戈罗盘上看到我的数据。
我想在副本集中运行此数据库。但我不知道如何运行。
我试着用run-rs软件包,但是没有用。
我安装了软件包。
$ npm install run-rs -g
然后我运行run-rs,
,但它失败了:
$ run-rs --mongod
Purging database...
Running 'mongod' [ 27017, 27018, 27019 ]
Starting replica set...
Error: failed to start mongod with options [
'--port=27017',
'--dbpath=/Users/projectpath/backend/data/27017',
'--bind_ip=localhost',
'--replSet=rs'
]
于是我停止了MongoDB。
$ brew services stop mongodb-community
我再次运行run-rs
。
$ run-rs --mongod
Purging database...
Running 'mongod' [ 27017, 27018, 27019 ]
Starting replica set...
Started replica set on "mongodb://localhost:27017,localhost:27018,localhost:27019?replicaSet=rs"
Connected to oplog
(node:28395) [MONGODB DRIVER] DeprecationWarning: collection.find option [oplogReplay] is deprecated and will be removed in a later version.
(Use `node --trace-deprecation ...` to show where the warning was created)
但是这在我的项目目录中创建了一个data
文件夹,里面有很多文件。我不想在我的目录中有一堆项目文件。这些文件是预期的吗?如果是,这些文件应该放在哪里?我如何将它们放入正确的目录?为什么它的行为不像我的其他mongo安装程序?
现在我以前在mongo compass中拥有的所有DB都消失了。如果我杀死所有mongo进程,我可以回到它们
$ ps wuax | grep mongo
$ kill (pid number)
和运行:
$ brew services start mongodb-community
但是我怎样才能让我的常规mongo社区使用副本集呢?为什么当我运行run-rs
时我的mongo DB不见了呢?为什么run-rs
在我的项目目录下放了很多文件呢?
我是不是忘了该怎么做了?
更新
我尝试添加自制路径。
$ run-rs 5.0.6 --dbpath '/opt/homebrew/var/mongodb'
数据文件夹现在没有添加到我的项目中。但是我在第一张图片中显示的旧数据库已经不在Mongo Compass中了。现在当我切换到brew services start mongodb-community
时,我所有的dev数据库似乎都被删除了。
1条答案
按热度按时间gcuhipw91#
看起来一旦你让
run-rs
工作,它会清除你的数据库数据,所以你不能用你的旧数据库数据运行一个副本集,而不把它保存在某个地方并复制回来。看起来你还必须关闭你的自制mongo。我真的不知道我在说什么,但这就是我如何让它工作的。我设置了
run-rs
,并且必须重新设定我的开发数据库。以下是我设置本地副本集的方法:
1.已关闭
mongo-community
:1.使用我的data directory path(
'/opt/homebrew/var/mongodb'
)和我的mongo版本(5.0.6
)安装并运行run-rs
。当我运行run-rs --mongod
而不是run-rs 5.0.6
时,Mongo Compass给了我一个错误,尽管两者的版本都是5.0.6。然后我运行种子文件并在uri处填充一个新的数据库:
mongodb://127.0.0.1:27017/wtdev-local?replicaSet=rs
确保将
replicaSet=rs
添加到URI。注意事项
我总是遇到一些问题,比如以前错误地运行
run-rs
或者其他mongo示例,然后在旧的mongo还在运行的时候尝试再次运行mongo。我的终端会告诉我mongo已经在27017端口上运行了。每当这种情况发生时,我都会找到PID并杀死任何mongo的PID。