Изменение каталога хранилища данных MongoDB

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

Я просто закончил пространство и добавил новый жесткий диск. Как я могу перенести свои данные (это, по-видимому, в /var/lib/mongodb/) и настроить MongoDB, чтобы все закончилось с нового диска, не затрагивая мою существующую установку?

Ответ 1

Короткий ответ заключается в том, что параметр --dbpath в MongoDB позволит вам контролировать, какой каталог MongoDB считывает и записывает данные.

mongod --dbpath/usr/local/mongodb-data​​p >

Запустит mongodb и поместит файлы в /usr/local/mongodb-data.

В зависимости от вашего дистрибутива и установки MongoDB вы также можете настроить файл mongod.conf для этого автоматически:

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

Официальные пакеты Linux 10gen (Ubuntu/Debian или CentOS/Fedora) поставляются с базовым конфигурационным файлом, который помещается в /etc/mongodb.conf, и служба MongoDB читает это при запуске. Здесь вы можете внести изменения.

Ответ 2

Разрешил его за 2 минуты простоя:)
Просто переместите свою папку, добавьте символическую ссылку, затем настройте разрешения.

sudo service mongod stop
sudo mv mongodb /new/disk/mongodb/
sudo ln -s /new/disk/mongodb/ /var/lib/mongodb
sudo chown mongodb:mongodb /new/disk/mongodb/
sudo service mongod start

# test if mongodb user can access new location:
sudo -u mongodb -s cd /new/disk/mongodb/
# resolve other permissions issues if necessary
sudo usermod -a -G <newdisk_grp> mongodb

Ответ 3

Создайте файл mongod.cfg в папке MongoDB, если у вас его нет. В моем случае: C:\Users\ivanbtrujillo\MongoDB

Затем отредактируйте mongod.cfg с помощью блокнота и добавьте строку со следующим (наш пользовательский dbpath):

dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

В этом файле вы также должны указать logpath. Мой файл mongod.cfg:

logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log
dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

Если вы используете mongoDB в качестве службы Windows, вам нужно изменить этот ключ и указать файл mongod.cfg.

Чтобы установить mongodb в качестве службы Windows, выполните следующую команду:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" –install**

Откройте regedit.exe и перейдите по следующему маршруту:

HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB

Служба MongoDB не работает, нам нужно отредактировать ключ ImagePath, удалить его содержимое и поместить следующее:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" 
--logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" –service**

Мы указываем mongo его файл конфигурации и его путь к журналу.

Затем, когда вы запускаете службу mongodb, она работает.

Вот полный учебник по установке mongoDB в windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

Надеюсь, что это поможет,

Ответ 4

Следующая команда будет работать для вас, если вы хотите изменить путь по умолчанию. Просто введите это в каталог bin mongodb.

mongod --dbpath=yourdirectory\data\db

Если вы тоже хотите переместить существующие данные, просто скопируйте все папки из существующего каталога data\db в новый каталог перед выполнением команды.

А также остановите существующие службы mongodb, которые работают.

Ответ 5

Скопируйте содержимое /var/lib/mongodb в /data/db. Файлы, которые вы должны искать, должны иметь имена типа your_db_name.ns и your_dbname.n, где n - число, начинающееся с 0. Если вы не видите такие файлы в /var/lib/mongodb, найдите их в своей файловой системе.

После копирования используйте --dbpath=/data/db при запуске MongoDB с помощью команды mongod.

Ответ 6

Вот что я сделал, надеюсь, это пригодится кому-то еще:

Этапы:

  1. Остановите свои услуги, которые используют mongodb
  2. Остановите mongod - мой способ сделать это был с моим rc файлом /etc/rc.d/rc.mongod stop, если вы используете что-то другое, например, systemd, вам следует проверить документацию, как это сделать
  3. Создайте новый каталог на новом жестком диске - mkdir /mnt/database
  4. Убедитесь, что у mongodb есть права на чтение/запись из этого каталога (обычно chown mongodb:mongodb -R /mnt/database/mongodb) - спасибо @DanailGabenski.
  5. Скопируйте папку данных вашего mongodb в новое место - cp -R /var/lib/mongodb/ /mnt/database/
  6. Удалить старую папку базы данных - rm -rf /var/lib/mongodb/
  7. Создать символическую ссылку на новую папку базы данных - ln -s /mnt/database/mongodb /var/lib/mongodb
  8. Начать Mongod - /etc/rc.d/rc.mongod start
  9. Проверьте журнал вашего mongod и выполните некоторую проверку работоспособности (попробуйте mongo подключиться к вашей базе данных, чтобы проверить, все ли в порядке)
  10. Запустите свои услуги, которые вы остановили в пункте 1

Нет необходимости говорить, что вы должны быть осторожны, когда делаете это, особенно с rm -rf, но я думаю, что это лучший способ сделать это.

Никогда не пытайтесь копировать каталог базы данных во время работы mongod, потому что могут быть службы, которые пишут/читают из него, что изменит содержимое вашей базы данных.

Ответ 7

Если он установлен через apt-get в Ubuntu 12.04, не забудьте chown -R mongodb:nogroup /path/to/new/directory. Также измените конфигурацию на /etc/mongodb.conf.

В качестве напоминания пакет mongodb-10gen теперь запускается с помощью выскочки, поэтому config script находится в /etc/init/mongodb.conf

Я просто прошел через это, надеюсь, googlers найдут это полезным:)

Ответ 8

пользователь является mongod вместо mongodb

sudo chown mongod: mongod/newlocation

Вы можете просмотреть журналы ошибок, если сбой службы: -

/var/log/mongodb/mongod.log

Ответ 9

В debian/ubuntu вам нужно отредактировать файл /etc/init.d/mongodb script. Действительно, этот файл должен извлекать настройки из /etc/mongodb.conf но, похоже, не тянет каталог по умолчанию (вероятно, ошибка).

Это немного взломать, но добавив их в script, он начал правильно:

добавить:

DBDIR=/database/mongodb

изменения:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"}

в

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}