Для корректной работы системы требуется MongoDB версии 3.6 – 6.0. В статье описаны:
- установка MongoDB 6.0 для ОС Ubuntu Linux 22.04;
- подготовка базы данных в MongoDB к восстановлению.
Вы также можете ознакомиться с кратким руководством в официальной документации MongoDB.
Если вы устанавливаете MongoDB 5.0, эта версия требует использования набора инструкций AVX. Предварительно проверьте их наличие следующей командой:
cat /proc/cpuinfo | grep avx
начало внимание
В рамках статьи используется имя базы elma365, пользователь elma365 и пароль SecretPassword.
При настройке задайте эти данные согласно политике безопасности, принятой в вашей организации.
конец внимание
Установка состоит из пяти этапов:
- Установка MongoDB.
- Настройка MongoDB.
- Настройка подключения к MongoDB.
- Инициализация реплики.
- Подключение к 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;
- Символы: -_.
Зарезервированные (недопустимые) символы:
! * ' ( ) ; : @ & = + $ , / ? % # [ ]
Конец внимание
mongosh
- Используйте базу ELMA365. Если база отсутствует, её необходимо создать:
use elma365
- Создайте отдельного пользователя elma365 для работы с БД с паролем SecretPassword. Имя пользователя и пароль приведены для примера:
db.createUser({user:'elma365', pwd:'SecretPassword', roles:[{role:"readWrite", db:"elma365"},{"role":"root", "db":"admin"}]})
- Убедитесь, что пользователь создан:
show users
- Для включения аутентификации создайте суперпользователя:
use admin
db.createUser({user:'superuser', pwd:'SecretPassword', roles: ["root"]})
- Убедитесь, что пользователь создан:
show users
- Выйдите из mongosh:
exit
- Создайте файл с общим ключом аутентификации, укажите права для файла:
openssl rand -base64 756 > /var/lib/mongodb/keyfile
chmod 400 /var/lib/mongodb/keyfile
chown mongodb:mongodb /var/lib/mongodb/keyfile
- Включите безопасный доступ к серверу MongoDB.
Настройте параметры безопасности в файле /etc/mongod.conf
следующим образом:
. . .
setParameter:
enableLocalhostAuthBypass: false
security:
authorization: "enabled"
keyFile: /var/lib/mongodb/keyfile
. . .
- Перезапустите 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
Чтобы включить поддержку TLS/SSL в MongoDB, выполните следующие действия:
cat your_domain.key > mongodb.pem
cat fullchain_your_domain.pem >> mongodb.pem
net: Подробнее о настройке TLS/SSL в MongoDB читайте в официальной документации MongoDB. |
Перезапустите MongoDB, чтобы изменение вступило в силу:
sudo systemctl restart mongod
Шаг 4: Инициализация реплики
- Откройте консоль mongosh для конфигурирования.
Для подключения к MongoDB:
sudo mongosh
Для подключения к MongoDB с включённым TLS/SSL:
sudo mongosh -u superuser --tls --host mongodb-server1.your_domain --tlsCAFile /etc/ssl/CA.pem
- Инициализируйте реплику:
rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "<mongodb-server-address>" }]})
- Проверьте конфигурацию replicaSet:
rs.conf()
- Проверьте состояние 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 к восстановлению
Если вам потребовалось восстановить базу данных из резервной копии, сначала подготовьте БД к восстановлению.
Подробнее про резервное копирование читайте в статьях:
- «Резервное копирование внешними средствами»;
- «Резервное копирование и восстановление баз данных: утилита Elma365-Backupper»;
- «Резервное копирование и восстановление данных ELMA365 Standard».
Начало внимание
Предварительно убедитесь, что у вас есть резервная копия удаляемой базы данных. Только после этого приступайте к удалению БД.
Конец внимание
- Откройте консоль mongosh для конфигурирования:
- для подключения к MongoDB:
sudo mongosh -u superuser
- для подключения к MongoDB с включённым TLS/SSL:
sudo mongosh -u superuser --tls --host mongodb-server1.your_domain --tlsCAFile /etc/ssl/CA.pem
- Удалите базу данных elma365:
use elma365
db.dropDatabase()
- Создайте пустую базу данных elma365 для последующего восстановления БД из резервной копии. Для этого выполните действия из шага 2 в настройках MongoDB.
- После этого выполните восстановление данных, в зависимости от вашей поставки ELMA365 On-Premises и способа резервного копирования:
- восстановление резервной копии с помощью утилиты Elma365-Backupper;
- восстановление для резервного копирования внешними средствами;
- восстановление резервной копии в поставке Standard.