3.0 upgrade์์ edge case
AuthSchemaIncompatible
์ํฉ
3.0 instance๋ฅผ ์๋ก ์ ์ ํ๋ฉด์ auth disable
db.adminCommand({copydb:1}) ์ ์ฌ์ฉํ์ฌ 2.4 ์ธ์คํด์ค์์ 3.0 ์ธ์คํด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌ
auth enable๋ก ์ค์ ์ ๋ณ๊ฒฝํ์ฌ 3.0 ์ฌ๊ธฐ๋
'Old 2.4 style user index identified' ์๋ฌ์ ํจ๊ป ์๋ฒ๊ฐ ์ข ๋ฃ๋จ
์์ธ
3.0.4 ์์ค์ฝ๋์์ ํ์ธํ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ system.users ์ปฌ๋ ์ ์ด ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํจ. wiredTiger ์์ง์ ์ปฌ๋ ์ ์ด๋ฆ ๋์ ๋ด๋ถ ๋ฒํธ๋ก ๋ฐ์ดํฐ ํ์ผ ์ด๋ฆ์ ๋ถ์ด๋ฏ๋ก mmap ๋์ฒ๋ผ ์ค๋ฅ๊ฐ ์๋ ์ปฌ๋ ์ ๋ฐ์ดํฐ ํ์ผ๋ง ์ญ์ ํ๋ ์์ ๋ฐฉ๋ฒ์ ์ธ ์ ์์. ์๋ฒ๋ฅผ ๋์ฐ์ง ๋ชปํ๋ฉด ์๋ฌด๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์.
workaround
๋ค์๊ณผ ๊ฐ์ด ๋ณต์ฌ ํ์ ๋ฐ๋ก system.users ์ปฌ๋ ์ ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ค. system.users ์ปฌ๋ ์ ์ system namespace์ด๋ฏ๋ก ๋ฐ๋ก ์ญ์ ํ ์ ์์.
db.getMongo().getDBNames().forEach(function(n) { db.getSisterDB(n).getCollection('system.users').renameCollection('_users'); });
node-mongodb-native ์ธ์ฆ ๋ฒ๊ทธ
์ํฉ
node.js version 0.8
mongoose 3.8.25 (node-mongodb-native 1.4.32)
mongodb 3.0.4 w/ SCRAM-SHA-1 enabled (authSchema v.5)
์์ DB ์ ์์ ์คํจํจ.
์์ธ
node-mongodb-native driver ๋ฒ๊ทธ. (NODE-382 & NODE-459) changelog์ ๋ฐ๋ฅด๋ฉด ๋ฒ์ 1.4.36์์ ๋ฌธ์ ๊ฐ ์์ ๋์์ผ๋ฉฐ, ๊ด๋ จ ์ปค๋ฐ ๋ก๊ทธ๋ ์ฌ๊ธฐ์์ ๋ณผ ์ ์์.
mongoose ์ต์ ๋ฒ์ (3.8.32)๋ native driver 1.4.33์ ์ฐ๋ฏ๋ก ์ํฅ์ ๋ฐ๋๋ค.
workaround
node.js 0.10.x์์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค
mongoose 4.0.x๋ฅผ ์ฌ์ฉํ๋ค
mongodb ๊ตฌ ๋ฒ์ ์ ์ฌ์ฉํ๋ค (2.4 or 2.6)
SCRAM-SHA-1 ๋์ MONGODB-CR ์ธ์ฆ์ ์ฌ์ฉํ๋ค















