Я понимаю, что Percona Server для MongoDB (последняя версия) уже скомпилирован с помощью механизма rockdb. Тем не менее, когда я устанавливаю флаг для его использования, служба не запускается. Он выходит с кодом 100 (неперехваченное исключение), и нет выхода журнала. Кто-нибудь знает, что может быть причиной этого? Заранее спасибо.Percona Server для MongoDB не запускается, когда движок установлен в rockdb (MongoRocks)
ответ
Вы могли бы видеть что-то подобное в журналах:
2016-03-10T21:17:23.433-0600 I CONTROL ***** SERVER RESTARTED *****
2016-03-10T21:17:23.435-0600 I ACCESS Initialized External Auth Session
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] MongoDB starting : pid=1323 port=27017 dbpath=/var/lib/mongodb 64-bit host=ubuntu14
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] db version v3.0.8-1.3
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] git version: 354592f7850d8d113690f610049baec94812da2b
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] build info: Linux vps-trusty-x64-01 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 BOOST_LIB_VERSION=1_49
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] allocator: tcmalloc
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { pidFilePath: "/var/run/mongod.pid" }, storage: { dbPath: "/var/lib/mongodb", engine: "rocksdb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-03-10T21:17:23.503-0600 I STORAGE [initandlisten] exception in initAndListen: 28574 Cannot start server. Detected data files in /var/lib/mongodb created by storage engine 'mmapv1'. The configured storage engine is 'rocksdb'., terminating
2016-03-10T21:17:23.503-0600 I CONTROL [initandlisten] dbexit: rc: 100
Если да, то проблема заключается в том, что вы запустили сервер указав rocksdb двигатель с другим набором данных для хранения двигателя еще в DBPATH. Чтобы решить эту проблему, вам нужно будет удалить файлы с вашего dbpath, чтобы использовать новый движок.
Если у вас есть существующие данные в MongoDB, которые вы хотите сохранить, то вы будете первым хотите использовать mongodump инструмент для резервного копирования информации, которая может быть восстановлена с mongorestore после включения двигателей хранения и перезапустить сервер ,
Чтобы начать с чистым DBPATH после изменений двигателя хранения в /etc/mongod.conf, выполните следующие команды (в качестве суперпользователя):
ПРИМЕЧАНИЯ: Это навсегда удалят все данные хранится в базе данных MongoDB:
# service mongod stop
# rm -rf /var/lib/mongodb/*
# service mongod start
Через несколько секунд вы должны увидеть следующее сообщение в нижней части файла журнала.
# tail /var/log/mongodb/mongod.log
2016-03-10T21:25:30.398-0600 I CONTROL ***** SERVER RESTARTED *****
2016-03-10T21:25:30.400-0600 I ACCESS Initialized External Auth Session
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] MongoDB starting : pid=1530 port=27017 dbpath=/var/lib/mongodb 64-bit host=ubuntu14
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] db version v3.0.8-1.3
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] git version: 354592f7850d8d113690f610049baec94812da2b
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] build info: Linux vps-trusty-x64-01 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 BOOST_LIB_VERSION=1_49
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] allocator: tcmalloc
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { pidFilePath: "/var/run/mongod.pid" }, storage: { dbPath: "/var/lib/mongodb", engine: "rocksdb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-03-10T21:25:30.808-0600 I NETWORK [initandlisten] waiting for connections on port 27017
При редактировании /etc/mongod.conf, убедитесь, что вы не ставьте слишком много отступов (пробелов).
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine: mmapv1
# engine: PerconaFT
engine: rocksdb #---->only two spaces
# engine: wiredTiger
У меня такая же проблема, и мне потребовались дни, чтобы понять это.
Пожалуйста, укажите OS,/var/log/... если это systemd journalctl -xn, скрипт инициализации и дополнительная информация –