MongoDB에서는 기본적으로 Primary에서만 쿼리를 수행합니다.
하지만 Read Preference 설정에 따라 보조 데이터베이스 (Secondary)에서도 쿼리를 수행하도록 설정할 수 있습니다.
모드 | 설명 |
---|---|
primary | 주 데이터베이스 (Primary)에서만 읽기 권한 수행 (기본 값) |
primaryPreferred | 주 데이터베이스에서 읽기 권한을 수행하되 읽기가 불가능한 경우 (보조 데이터베이스 (Secondary)에서 읽기 권한 수행) |
secondary | 보조 데이터베이스에서만 읽기 권한 수행 |
secondaryPreferred | 보조 데이터베이스에서 읽기 권한을 수행하되 읽기가 불가능한 경우 (주 데이터베이스에서 읽기 권한 수행) |
nearest | Network Latency가 가장 낮은 데이터베이스에서 읽기 권한 수행 |
# Read Preference 설정 방법
> db.getMongo().setReadPref('모드')
# Secondary 노드 - Read Preference 설정 전 ("primary")
> db.book.find({})
MongoServerError: not primary and secondaryOk=false - consider using db.getMongo()
.setReadPref() or readPreference in the connection string
# Secondary 노드 - Read Preference 설정 후 ("primaryPreferred")
> db.getMongo().setReadPref('primaryPreferred') // Read Preference = "primaryPreferred"
> db.book.find({})
[
{
_id: ObjectId("64df2b0ed10006156ad507ff"),
name: 'book1',
author: 'john'
}
]