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

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

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

4b9b3361

Короткий ответ заключается в том, что параметр --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 читает это при запуске. Здесь вы можете внести изменения.

148
ответ дан 11 мая '11 в 11:25
источник

Разрешил его за 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
76
ответ дан 11 июля '14 в 20:05
источник

Создайте файл 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/

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

21
ответ дан 14 авг. '14 в 11:25
источник

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

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

20
ответ дан 11 мая '11 в 11:24
источник

Вот что я сделал, надеюсь, что это полезно для всех:

Шаги:

  • Остановить службы, использующие mongodb
  • Остановить mongod - мой способ сделать это был с моим rc файлом /etc/rc.d/rc.mongod stop, если вы используете что-то еще, например systemd, вы должны проверить свою документацию, как это сделать
  • Создать новый каталог на новом жестком диске - mkdir /mnt/database
  • Скопировать папку данных вашего mongodb в новое место - cp -R /var/lib/mongodb/ /mnt/database/
  • Удалить старую папку базы данных - rm -rf /var/lib/mongodb/
  • Создать символическую ссылку на новую папку базы данных - ln -s /mnt/database/mongodb /var/lib/mongodb
  • Начать mongod - /etc/rc.d/rc.mongod start
  • Проверьте журнал вашего mongod и выполните некоторую проверку работоспособности (попробуйте mongo подключиться к вашей базе данных, чтобы убедиться, что все в порядке)
  • Запустите службы, которые вы остановили в пункте 1

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

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

11
ответ дан 21 дек. '14 в 14:31
источник

Если он установлен через 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 найдут это полезным:)

10
ответ дан 21 мая '13 в 4:26
источник

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

mongod --dbpath = yourdirectory\data\db

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

6
ответ дан 08 марта '17 в 7:34
источник

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

sudo chown mongod: mongod/newlocation

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

/var/log/mongodb/mongod.log

1
ответ дан 16 янв. '17 в 12:26
источник

В 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"}
0
ответ дан 30 июля '14 в 8:09
источник