Бег Percona Server для версии сервера MongoDB: v3.6.8-2.0. Я пытаюсь включить шифрование в состоянии покоя, используя процедуру, описанную ниже:
После создания ключа шифрования и обновления файла /etc/mongod.confg следующим образом я перезапускаю процесс mongod:
security:
authorization: enabled
enableEncryption: true
encryptionKeyFile: /deezNutz/mongodb.key
Процесс немедленно завершается, и я вижу в своем журнале ошибок следующее:
2018-11-14T23:09:18.057+0000 E STORAGE [initandlisten] WiredTiger error (-31802) [1542236958:57406][17352:0x7f8037b14dc0], file:WiredTiger.wt, connection: unable to read root page from file:WiredTiger.wt: WT_ERROR: non-specific WiredTiger error
2018-11-14T23:09:18.057+0000 E STORAGE [initandlisten] WiredTiger error (0) [1542236958:57447][17352:0x7f8037b14dc0], file:WiredTiger.wt, connection: WiredTiger has failed to open its metadata
2018-11-14T23:09:18.057+0000 E STORAGE [initandlisten] WiredTiger error (0) [1542236958:57460][17352:0x7f8037b14dc0], file:WiredTiger.wt, connection: This may be due to the database files being encrypted, being from an older version or due to corruption on disk
2018-11-14T23:09:18.057+0000 E STORAGE [initandlisten] WiredTiger error (0) [1542236958:57473][17352:0x7f8037b14dc0], file:WiredTiger.wt, connection: You should confirm that you have opened the database with the correct options including all encryption and compression options
2018-11-14T23:09:18.058+0000 E - [initandlisten] Assertion: 28595:-31802: WT_ERROR: non-specific WiredTiger error src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 437
2018-11-14T23:09:18.064+0000 I STORAGE [initandlisten] exception in initAndListen: Location28595: -31802: WT_ERROR: non-specific WiredTiger error, terminating
Если я изменю enableEncryption
на «ложь», двигатель запускается сразу и без ошибок.
Не похоже, что я пропустил шаг.
В замешательстве, Адам
Собственный ответ OP по существу правильный. Но на всякий случай есть вариант:
Теоретически миграция может происходить без простоя: если вы сначала выполните эти шаги на вторичных серверах, уменьшите первичный, а затем обновите прежний первичный, это практически не повлияет. Будет выполнено несколько попыток чтения / записи по мере перемешивания узлов, но драйверы этого ожидают.
Первоначальная синхронизация от первичного перепишет зашифрованные данные, если узел настроен для шифрования. Однако первоначальная синхронизация добавит некоторую нагрузку на систему.
То же самое и с ротацией ключей: если у вас уже включено шифрование, вы можете поочередно чередовать все элементы набора реплик, задавая новый ключ.
Есть несколько полезных сообщений о репликации MongoDB в блоге Percona, если такой подход возможен. https://www.percona.com/blog/2018/03/22/the-anatomy-of-a-mongodb-replica-set/ а также расширенный ответ на ОП на форуме https://www.percona.com/forums/questions-discussions/percona-server-for-mongodb/52876-enables-encryption-at-rest-in-percona-server-for-mongodb-3-6-8
Раскрытие информации: я работаю в Percona, техническая группа MongoDB помогла с этим ответом, надеюсь, это поможет.
Percona Server для MongoDB 3.6.8-2 не может шифровать существующие базы данных. Вы должны завершить работу экземпляра, очистить каталог файлов данных, настроить экземпляр для шифрования и запустить экземпляр.