Изменение каталога хранилища данных MongoDB - PullRequest
163 голосов
/ 11 мая 2011

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

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

Ответы [ 9 ]

194 голосов
/ 11 мая 2011

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

mongod --dbpath / usr / local / mongodb-data

Запустит 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

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

91 голосов
/ 11 июля 2014

Устранено за 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
26 голосов
/ 14 августа 2014

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

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

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

В этомфайл, который вы должны указать лог-путь тоже.Мой файл 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**

Мы указываем монго, что это файл конфигурации и его лог-путь.

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

Вот полное руководство по установке mongoDB в Windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

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

24 голосов
/ 08 марта 2017

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

mongod --dbpath=yourdirectory\data\db

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

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

21 голосов
/ 11 мая 2011

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

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

18 голосов
/ 21 декабря 2014

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

Шаги:

  1. Остановите ваши услуги , которые используют mongodb
  2. Stop 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, потому что могут быть службы, которые пишут / читают с него, что изменит содержимое вашей базы данных.

10 голосов
/ 21 мая 2013

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

. Напоминаем, что пакет mongodb-10gen теперь запускается с помощью upstart, поэтому скрипт конфигурации находится в /etc/init/mongodb.conf

.надеюсь, гуглерам это будет полезно:)

1 голос
/ 16 января 2017

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

sudo chown mongod: mongod / newlocation

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

/ вар / Журнал / MongoDB / mongod.log

0 голосов
/ 30 июля 2014

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

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

добавить:

DBDIR=/database/mongodb

изменить:

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

на:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...