ELMA365 On-Premises > Подготовка инфраструктуры > Базы данных > Подготовка внешних баз данных / MongoDB

MongoDB

Для корректной работы системы требуется MongoDB версии 3.6 – 6.0. В статье описаны:

Вы также можете ознакомиться с кратким руководством в официальной документации MongoDB.

Если вы устанавливаете MongoDB 5.0, эта версия требует использования набора инструкций AVX. Предварительно проверьте их наличие следующей командой:

cat /proc/cpuinfo | grep avx

начало внимание 

В рамках статьи используется имя базы elma365, пользователь elma365 и пароль SecretPassword.

При настройке задайте эти данные согласно политике безопасности, принятой в вашей организации.

конец внимание

Установка состоит из пяти этапов:

  1. Установка MongoDB.
  2. Настройка MongoDB.
  3. Настройка подключения к MongoDB.
  4. Инициализация реплики.
  5. Подключение к MongoDB.

Шаг 1: Установка MongoDB

Для установки MongoDB добавьте официальный репозиторий:

sudo apt-get install gnupg
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update

Далее установите MongoDB:

sudo apt install mongodb-org

Запустите MongoDB:

sudo systemctl enable --now mongod

Шаг 2: Настройка MongoDB

Начало внимание

Для пароля разрешается применять следующие символы:

  • Заглавные латинские буквы: от A до Z;
  • Строчные латинские буквы: от a до z;
  • Цифры от 0 до 9;
  • Символы: -_.

Зарезервированные (недопустимые) символы:

! * ' ( ) ; : @ & = + $ , / ? % # [ ]

Конец внимание

  1. Зайдите в mongosh (Command Line Interface) и создайте базу данных:

mongosh

  1. Используйте базу ELMA365. Если база отсутствует, её необходимо создать:

use elma365

  1. Создайте отдельного пользователя elma365 для работы с БД с паролем SecretPassword. Имя пользователя и пароль приведены для примера:

db.createUser({user:'elma365', pwd:'SecretPassword', roles:[{role:"readWrite", db:"elma365"},{"role":"root", "db":"admin"}]})

  1. Убедитесь, что пользователь создан:

show users

  1. Для включения аутентификации создайте суперпользователя:

use admin
db.createUser({user:'superuser', pwd:'SecretPassword', roles: ["root"]})

  1. Убедитесь, что пользователь создан:

show users

  1. Выйдите из mongosh:

exit

  1. Создайте файл с общим ключом аутентификации, укажите права для файла:

openssl rand -base64 756 > /var/lib/mongodb/keyfile
chmod 400 /var/lib/mongodb/keyfile
chown mongodb:mongodb /var/lib/mongodb/keyfile

  1. Включите безопасный доступ к серверу MongoDB.

Настройте параметры безопасности в файле /etc/mongod.conf следующим образом:

. . .
setParameter:
  enableLocalhostAuthBypass: false
security:
  authorization: "enabled"
  keyFile: /var/lib/mongodb/keyfile
. . .

  1. Перезапустите MongoDB:

sudo systemctl restart mongod

Шаг 3: Настройка подключения к MongoDB

Внесите изменения в файл конфигурации /etc/mongod.conf:

sudo nano /etc/mongod.conf

Настройте значения переменных:

  • bindIp — список адресов, с которых можно принимать соединения по порту 27017 (в данном случае это делает доступным сервис MongoDB со всех внешних адресов);
  • replSetName — название реплики, по умолчанию "rs0".

. . .
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
. . .
replication:
  replSetName: "rs0"
  enableMajorityReadConcern: true
. . .

Настройка включения TLS/SSL в MongoDB

Перезапустите MongoDB, чтобы изменение вступило в силу:

sudo systemctl restart mongod

Шаг 4: Инициализация реплики

  1. Откройте консоль mongosh для конфигурирования.

Для подключения к MongoDB:

sudo mongosh

Для подключения к MongoDB с включённым TLS/SSL:

sudo mongosh -u superuser --tls --host mongodb-server1.your_domain --tlsCAFile /etc/ssl/CA.pem

  1. Инициализируйте реплику:

rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "<mongodb-server-address>" }]})

  1. Проверьте конфигурацию replicaSet:

rs.conf()

  1. Проверьте состояние MongoDB:

rs.status()

Шаг 5: Подключение к MongoDB

Строка для подключения к MongoDB:

mongodb://elma365:SecretPassword@<mongodb-server-address>:27017/elma365?ssl=false&replicaSet=rs0&readPreference=nearest

Строка для подключения к MongoDB c TLS/SSL:

mongodb://elma365:SecretPassword@mongodb-server.your_domain:27017/elma365?ssl=true&replicaSet=rs0&readPreference=nearest

Подготовка базы данных в MongoDB к восстановлению

Если вам потребовалось восстановить базу данных из резервной копии, сначала подготовьте БД к восстановлению.

Подробнее про резервное копирование читайте в статьях:

Начало внимание

Предварительно убедитесь, что у вас есть резервная копия удаляемой базы данных. Только после этого приступайте к удалению БД.

Конец внимание

  1. Откройте консоль mongosh для конфигурирования:
  • для подключения к MongoDB:

sudo mongosh -u superuser

  • для подключения к MongoDB с включённым TLS/SSL:

sudo mongosh -u superuser --tls --host mongodb-server1.your_domain --tlsCAFile /etc/ssl/CA.pem

  1. Удалите базу данных elma365:

use elma365
db.dropDatabase()

  1. Создайте пустую базу данных elma365 для последующего восстановления БД из резервной копии. Для этого выполните действия из шага 2 в настройках MongoDB.
  1. После этого выполните восстановление данных, в зависимости от вашей поставки ELMA365 On-Premises и способа резервного копирования: