Установка и настройка MongoDB — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Установка и настройка MongoDB = == 1. Подготовка системы == * Войдите в систему под учетной за…»)
(нет различий)

Версия 08:35, 15 октября 2025

Содержание

Установка и настройка 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
  1. Где записывать логи

systemLog:

 destination: file
 logAppend: true
 path: /var/log/mongodb/mongod.log
  1. Сетевые интерфейсы

net:

 port: 27017
 bindIp: 127.0.0.1
  1. Процесс

processManagement:

 timeZoneInfo: /usr/share/zoneinfo
  1. Операционная система

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)

  1. Создание директории для бэкапа

mkdir -p $BACKUP_DIR

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

mongodump --host localhost:27017 --out $BACKUP_DIR/mongodb-$DATE

  1. Сжатие архива

tar -czf $BACKUP_DIR/mongodb-$DATE.tar.gz -C $BACKUP_DIR mongodb-$DATE

  1. Удаление несжатой директории

rm -rf $BACKUP_DIR/mongodb-$DATE

  1. Удаление старых бэкапов (старше 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 и оптимизацией производительности ваших баз данных!