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

Материал из ARK-HOSTER.RU | Документация хостинга
Версия от 10:43, 15 октября 2025; Admin (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

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

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка MongoDB

Обновление системы

1. Обновите систему:

sudo apt update

2. Установите необходимые пакеты:

sudo apt install -y wget curl gnupg2 software-properties-common

Установка MongoDB Community Edition

1. Импортируйте публичный ключ MongoDB:

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

2. Добавьте репозиторий MongoDB:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

3. Обновите список пакетов:

sudo apt update

4. Установите MongoDB:

sudo apt install -y mongodb-org

5. Проверьте версию:

mongod --version

Запуск MongoDB

1. Запустите и включите автозапуск:

sudo systemctl start mongod
sudo systemctl enable mongod

2. Проверьте статус:

sudo systemctl status mongod

3. Проверьте подключение:

mongosh

3. Базовая конфигурация

Создание резервной копии

1. Создайте резервную копию оригинального файла:

sudo cp /etc/mongod.conf /etc/mongod.conf.backup

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

1. Отредактируйте конфигурационный файл:

sudo nano /etc/mongod.conf

2. Настройте основные параметры:

\# Где хранить данные
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

\# Где записывать логи
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

\# Сетевые интерфейсы
net:
  port: 27017
  bindIp: 127.0.0.1

\# Процесс
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

\# Операционная система
operationProfiling:
  slowOpThresholdMs: 100
  mode: slowOp

Настройка безопасности

1. Создайте администратора:

mongosh

2. В MongoDB shell выполните:

use admin
db.createUser({
  user: "admin",
  pwd: "your_password",
  roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]
})

3. Включите аутентификацию в конфигурации:

security:
  authorization: enabled

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

sudo systemctl restart mongod

4. Управление MongoDB

Основные команды

1. Запуск MongoDB:

sudo systemctl start mongod

2. Остановка MongoDB:

sudo systemctl stop mongod

3. Перезапуск MongoDB:

sudo systemctl restart mongod

4. Проверка статуса:

sudo systemctl status mongod

5. Подключение к MongoDB:

mongosh

Управление базами данных

1. Создание базы данных:

use mydatabase

2. Просмотр баз данных:

show dbs

3. Переключение на базу данных:

use mydatabase

4. Удаление базы данных:

db.dropDatabase()

5. Работа с коллекциями

Создание и управление коллекциями

1. Создание коллекции:

db.createCollection("users")

2. Просмотр коллекций:

show collections

3. Вставка документов:

db.users.insertOne({
  name: "John Doe",
  email: "john@example.com",
  age: 30
})

4. Вставка нескольких документов:

db.users.insertMany([
  { name: "Jane Smith", email: "jane@example.com", age: 25 },
  { name: "Bob Johnson", email: "bob@example.com", age: 35 }
])

Поиск и обновление данных

1. Поиск всех документов:

db.users.find()

2. Поиск с условием:

db.users.find({ age: { $gt: 30 } })

3. Обновление документа:

db.users.updateOne(
  { name: "John Doe" },
  { $set: { age: 31 } }
)

4. Удаление документа:

db.users.deleteOne({ name: "John Doe" })

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

Создание реплика-сета

1. Остановите MongoDB:

sudo systemctl stop mongod

2. Обновите конфигурацию для реплика-сета:

sudo nano /etc/mongod.conf

3. Добавьте настройки репликации:

replication:
  replSetName: "rs0"

4. Запустите MongoDB:

sudo systemctl start mongod

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

mongosh

6. В MongoDB shell выполните:

rs.initiate()

7. Добавьте вторичные серверы:

rs.add("secondary-server:27017")

Настройка вторичного сервера

1. На вторичном сервере настройте конфигурацию:

replication:
  replSetName: "rs0"

2. Запустите MongoDB:

sudo systemctl start mongod

7. Настройка шардинга

Настройка конфиг-серверов

1. Создайте конфигурацию для конфиг-сервера:

sudo nano /etc/mongod.conf

2. Добавьте настройки:

sharding:
  clusterRole: configsvr
replication:
  replSetName: "configReplSet"

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

1. Настройте шард-сервер:

sharding:
  clusterRole: shardsvr
replication:
  replSetName: "shardReplSet"

Настройка mongos

1. Установите mongos:

sudo apt install -y mongodb-mongosh

2. Создайте конфигурацию mongos:

sudo nano /etc/mongos.conf

3. Добавьте настройки:

sharding:
  configDB: configReplSet/config1:27017,config2:27017,config3:27017
net:
  port: 27017
  bindIp: 0.0.0.0

4. Запустите mongos:

sudo mongos --config /etc/mongos.conf

8. Мониторинг и оптимизация

Настройка мониторинга

1. Просмотр статистики:

db.serverStatus()

2. Просмотр статистики базы данных:

db.stats()

3. Просмотр статистики коллекции:

db.users.stats()

4. Просмотр активных операций:

db.currentOp()

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

1. Создание индекса:

db.users.createIndex({ email: 1 })

2. Создание составного индекса:

db.users.createIndex({ name: 1, age: -1 })

3. Просмотр индексов:

db.users.getIndexes()

4. Удаление индекса:

db.users.dropIndex({ email: 1 })

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

1. Анализ медленных запросов:

db.setProfilingLevel(2, { slowms: 100 })
db.system.profile.find().sort({ ts: -1 }).limit(5)

2. Настройка кэша:

\# В конфигурации MongoDB
storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

9. Резервное копирование

Создание резервной копии

1. Полное резервное копирование:

mongodump --host localhost:27017 --db mydatabase --out /backup/mongodb/

2. Резервное копирование всех баз данных:

mongodump --host localhost:27017 --out /backup/mongodb/

3. Сжатое резервное копирование:

mongodump --host localhost:27017 --db mydatabase --gzip --archive=/backup/mongodb/mydatabase.gz

4. Резервное копирование с аутентификацией:

mongodump --host localhost:27017 --username admin --password your_password --authenticationDatabase admin --db mydatabase --out /backup/mongodb/

Восстановление из резервной копии

1. Восстановление базы данных:

mongorestore --host localhost:27017 --db mydatabase /backup/mongodb/mydatabase/

2. Восстановление из сжатого архива:

mongorestore --host localhost:27017 --gzip --archive=/backup/mongodb/mydatabase.gz

3. Восстановление с заменой:

mongorestore --host localhost:27017 --db mydatabase --drop /backup/mongodb/mydatabase/

Автоматическое резервное копирование

1. Создайте скрипт резервного копирования:

sudo nano /usr/local/bin/mongodb-backup.sh

2. Добавьте содержимое:

\#!/bin/bash

BACKUP_DIR="/backup/mongodb"
DATE=$(date +%Y%m%d_%H%M%S)

\# Создание директории для бэкапа
mkdir -p $BACKUP_DIR

\# Резервное копирование всех баз данных
mongodump --host localhost:27017 --out $BACKUP_DIR/mongodb-$DATE

\# Сжатие архива
tar -czf $BACKUP_DIR/mongodb-$DATE.tar.gz -C $BACKUP_DIR mongodb-$DATE

\# Удаление несжатой директории
rm -rf $BACKUP_DIR/mongodb-$DATE

\# Удаление старых бэкапов (старше 7 дней)
find $BACKUP_DIR -name "mongodb-*.tar.gz" -mtime +7 -delete

echo "MongoDB backup completed: $DATE"

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/mongodb-backup.sh

4. Добавьте в crontab:

sudo crontab -e

5. Добавьте задачу:

0 2 * * * /usr/local/bin/mongodb-backup.sh

10. Настройка файрвола

Настройка UFW

1. Разрешите порт MongoDB:

sudo ufw allow 27017/tcp

2. Проверьте статус:

sudo ufw status

Настройка iptables

1. Разрешите порт через iptables:

sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT

2. Сохраните правила:

sudo iptables-save > /etc/iptables/rules.v4

11. Безопасность

Настройка SSL/TLS

1. Создайте SSL сертификаты:

sudo mkdir -p /etc/mongodb/ssl
sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/mongodb/ssl/mongodb.key -out /etc/mongodb/ssl/mongodb.crt -subj "/CN=mongodb-server"

2. Настройте SSL в конфигурации:

net:
  port: 27017
  bindIp: 0.0.0.0
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/mongodb/ssl/mongodb.crt
    PEMKeyFile: /etc/mongodb/ssl/mongodb.key

Настройка аутентификации

1. Создайте пользователей с ограниченными правами:

use mydatabase
db.createUser({
  user: "readonly",
  pwd: "password",
  roles: ["read"]
})

db.createUser({
  user: "readwrite",
  pwd: "password",
  roles: ["readWrite"]
})

12. Устранение неполадок

Частые проблемы

1. MongoDB не запускается:

  • Проверьте логи:
    sudo journalctl -u mongod
  • Проверьте права доступа к директориям
  • Проверьте конфигурацию:
    mongod --config /etc/mongod.conf --configExpand rest

2. Проблемы с подключением:

  • Проверьте файрвол
  • Проверьте настройки bindIp
  • Проверьте аутентификацию

3. Проблемы с производительностью:

  • Проверьте индексы
  • Проверьте настройки кэша
  • Проанализируйте медленные запросы

Диагностика

1. Проверка статуса:

sudo systemctl status mongod

2. Проверка портов:

sudo netstat -tlnp | grep :27017

3. Проверка логов:

sudo tail -f /var/log/mongodb/mongod.log

4. Проверка подключения:

mongosh --host localhost:27017

Заключение

MongoDB успешно установлен и настроен! Теперь у вас есть мощная NoSQL база данных с возможностями репликации, шардинга и мониторинга.

Для размещения ваших MongoDB баз данных на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой MongoDB и оптимизацией производительности ваших баз данных!