Установка и настройка MongoDB

Добро пожаловать в подробное руководство по установке и настройке MongoDB в НАЙС ОС. В этом документе мы рассмотрим процесс установки, настройки и управления MongoDB, включая настройку репликации и шардирования, управление пользователями и правами доступа, а также оптимизацию производительности и создание резервных копий. MongoDB — это мощная документно-ориентированная база данных, которая широко используется для построения масштабируемых и высокопроизводительных приложений. Понимание её установки и конфигурации является важным навыком для системных администраторов и разработчиков.

Установка и конфигурация MongoDB

Установка MongoDB

Для установки MongoDB в НАЙС ОС используйте пакетный менеджер tdnf. Сначала добавьте репозиторий MongoDB и установите ключ GPG:

sudo rpm --import https://www.mongodb.org/static/pgp/server-4.4.asc

Создайте файл репозитория /etc/yum.repos.d/mongodb-org-4.4.repo со следующим содержимым:


[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  

Установите MongoDB с помощью следующей команды:

sudo tdnf install -y mongodb-org

Запуск и остановка MongoDB

После установки вы можете запустить MongoDB с помощью systemd:

sudo systemctl start mongod

Для автоматического запуска MongoDB при загрузке системы выполните команду:

sudo systemctl enable mongod

Для остановки MongoDB используйте команду:

sudo systemctl stop mongod

Основная конфигурация MongoDB

Основной файл конфигурации MongoDB находится в /etc/mongod.conf. Рассмотрим основные параметры конфигурации:


# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1
  

Эти параметры определяют путь к данным, параметры журналирования и сетевые настройки MongoDB.

Настройка репликации и шардирования

Настройка репликации

Репликация в MongoDB позволяет создавать отказоустойчивые и высокодоступные кластеры. Рассмотрим процесс настройки репликации.

Настройка конфигурации для репликации

Отредактируйте файл /etc/mongod.conf, добавив параметры репликации:


replication:
  replSetName: "rs0"
  

Запустите или перезапустите MongoDB для применения изменений:

sudo systemctl restart mongod

Инициализация репликационного набора

Подключитесь к MongoDB с помощью командной строки mongo и инициализируйте репликационный набор:

mongo

rs.initiate()
  

Добавьте вторичные узлы в репликационный набор:


rs.add("hostname:port")
  

Настройка шардирования

Шардирование позволяет распределять данные между несколькими серверами для улучшения производительности и масштабируемости. Рассмотрим процесс настройки шардирования.

Настройка конфигурационных серверов

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


sharding:
  clusterRole: "configsvr"
  

Запустите или перезапустите MongoDB для применения изменений:

sudo systemctl restart mongod

Настройка шардов

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


sharding:
  clusterRole: "shardsvr"
  

Запустите или перезапустите MongoDB для применения изменений:

sudo systemctl restart mongod

Настройка маршрутизаторов (mongos)

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


sharding:
  configDB: "configReplSet/hostname:port"
  

Запустите маршрутизатор с помощью команды:

mongos --config /etc/mongos.conf

Добавление шардов

Подключитесь к MongoDB с помощью командной строки mongo и добавьте шарды:

mongo

sh.addShard("shardReplSet/hostname:port")
  

Управление пользователями и правами доступа

Создание пользователей

Для управления доступом в MongoDB используйте команды для создания пользователей. Рассмотрим процесс создания пользователя с административными правами.


use admin
db.createUser({
  user: "admin",
  pwd: "password",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
  

Создание пользователей для базы данных

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


use mydb
db.createUser({
  user: "myuser",
  pwd: "mypassword",
  roles: [ { role: "readWrite", db: "mydb" } ]
})
  

Аутентификация пользователей

Для включения аутентификации отредактируйте файл /etc/mongod.conf, добавив следующие строки:


security:
  authorization: "enabled"
  

Запустите или перезапустите MongoDB для применения изменений:

sudo systemctl restart mongod

Оптимизация производительности и бэкапы

Оптимизация производительности

Рассмотрим несколько методов оптимизации производительности MongoDB:

  • Использование индексов для ускорения запросов.
  • Мониторинг производительности с помощью mongostat и mongotop.
  • Настройка параметров wiredTiger для оптимизации использования памяти и диска.
  • Использование шардирования для распределения нагрузки между серверами.

Создание индексов

Для создания индекса используйте следующую команду:


db.collection.createIndex({ field: 1 })
  

Мониторинг производительности

Для мониторинга производительности используйте команды mongostat и mongotop:

mongostat
mongotop

Настройка параметров WiredTiger

Отредактируйте файл /etc/mongod.conf для настройки параметров WiredTiger:


storage:
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2
  

Создание резервных копий (бэкапов)

Для создания резервных копий данных MongoDB используйте команды mongodump и mongorestore.

Создание бэкапа

Для создания бэкапа используйте следующую команду:

mongodump --out /path/to/backup

Восстановление данных из бэкапа

Для восстановления данных из бэкапа используйте следующую команду:

mongorestore /path/to/backup

Заключение

Мы рассмотрели основные аспекты установки, настройки и управления MongoDB в НАЙС ОС. MongoDB предоставляет мощные возможности для хранения и обработки данных, а понимание её настройки и оптимизации является важным навыком для системных администраторов и разработчиков. Продолжайте изучать и применять эти знания на практике для создания стабильных и эффективных систем управления данными.