[20220517] ShardingTest 객체 생성 에러

ShardingTest 객체를 생성할 때, mongo 기본 폴더(/data/db)가 없어 발생한 문제를 해결합니다.

샤딩을 테스트하기 위해서 ShardingTest 객체를 사용할 수 있다.

이 때, ShardingTest 객체는 데이터 폴더로 mongo의 기본 폴더인 /data/db를 사용하게 된다.

하지만, 나는 mongo shell에 접속할 때, 기본 폴더 위치인 /data/db 폴더를 사용하지 않고 다른 위치에 존재하는 /{otherPath}/data/db를 사용하고 있었는데, 이게 문제를 발생시켰다.

기본 폴더 위치를 사용하지 않았던 이유는 접근 권한 문제 때문이다.. 해결하지 못해서 권한이 있는 폴더를 사요하고 있었다.

// terminal에서 mongo shell에 접속
-> mongo --nodb --norc

// mongo shell에 접속 후, ShardingTest 객체 생성
> st = ShardingTest({
... name:"one-min-shards",
... chunkSize:1,
... shards:2,
... rs:{
...   nodes:3,
...   oplogSize:10
... },
... other:{
...   enableBalancer:true
... }});
// Error: Caught std::exception of type boost::filesystem::filesystem_error: boost::filesystem::create_directory: No such file or directory: "/data/db/one-min-shards-rs0-0"

발생한 에러를 살펴보면 /data/db/{shard 폴더}를 찾을 수 없다고 한다.

/data/db는 mongo가 사용하는 기본 폴더로 ShardingTest 객체를 생성할 때 기본 폴더를 참고하고 있었다.

그래서 현재 기본폴더로 /data/db가 설정되어 있는 값을 변경해주면 된다.

> MongoRunner.dataPath = '/{myDataPath}/data/db'

그러면 에러 없이 샤딩이 구성되는 과정을 터미널에서 볼 수 있게 된다.