Установка и настройка MongoDB
Содержание
- 1 Установка и настройка MongoDB
- 1.1 1. Подготовка системы
- 1.2 2. Установка MongoDB =
- 1.3 3. Базовая конфигурация =
- 1.4 4. Управление MongoDB =
- 1.5 5. Работа с коллекциями =
- 1.6 6. Настройка репликации =
- 1.7 7. Настройка шардинга =
- 1.8 8. Мониторинг и оптимизация =
- 1.9 9. Резервное копирование =
- 1.10 10. Настройка файрвола =
- 1.11 11. Безопасность =
- 1.12 12. Устранение неполадок =
- 1.13 Заключение
Установка и настройка 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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных MongoDB кластеров
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой MongoDB и оптимизацией производительности ваших баз данных!