До сих пор я не указывал каталог данных MongoDB и имел только один основной раздел размером 30 ГБ.
Я просто закончил пространство и добавил новый жесткий диск. Как я могу перенести свои данные (это, по-видимому, в /var/lib/mongodb/
) и настроить MongoDB, чтобы все закончилось с нового диска, не затрагивая мою существующую установку?
Короткий ответ заключается в том, что параметр --dbpath
в MongoDB позволит вам контролировать, какой каталог MongoDB считывает и записывает данные.
mongod --dbpath/usr/local/mongodb-datap >
Запустит 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 минуты простоя:)
Просто переместите свою папку, добавьте символическую ссылку, затем настройте разрешения.
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
chmod -R o+x /<home>
. см .: stackoverflow.com/a/38193187/205049
Создайте файл 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/
Надеюсь, что это поможет,
Скопируйте содержимое /var/lib/mongodb
в /data/db
. Файлы, которые вы должны искать, должны иметь имена типа your_db_name.ns
и your_dbname.n
, где n
- число, начинающееся с 0. Если вы не видите такие файлы в /var/lib/mongodb
, найдите их в своей файловой системе.
После копирования используйте --dbpath=/data/db
при запуске MongoDB с помощью команды mongod
.
Вот что я сделал, надеюсь, что это полезно для всех:
Шаги:
/etc/rc.d/rc.mongod stop
, если вы используете что-то еще, например systemd, вы должны проверить свою документацию, как это сделатьmkdir /mnt/database
cp -R /var/lib/mongodb/ /mnt/database/
rm -rf /var/lib/mongodb/
ln -s /mnt/database/mongodb /var/lib/mongodb
/etc/rc.d/rc.mongod start
mongo
подключиться к вашей базе данных, чтобы убедиться, что все в порядке)Нет необходимости говорить, что вы должны быть осторожны, когда вы это делаете, особенно с помощью rm -rf
, но я думаю, что это лучший способ сделать это.
Вы никогда не должны пытаться копировать dir базы данных во время работы mongod, потому что могут быть службы, которые записывают/читают из него, которые изменят содержимое вашей базы данных.
chown mongodb:mongodb -R /mnt/database/mongodb
Если он установлен через 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, следующая команда будет работать для вас, если вы хотите изменить путь по умолчанию на следующий путь --- Просто введите это в каталог bin mongodb -
mongod --dbpath = yourdirectory\data\db
Если вы хотите также переместить существующие данные, просто скопируйте все папки из существующего каталога data\db в новый каталог перед выполнением команды. А также остановите существующие службы mongodb, которые запущены. Надеюсь, что это поможет.
пользователь является mongod вместо mongodb
sudo chown mongod: mongod/newlocation
Вы можете просмотреть журналы ошибок, если сбой службы: -
/var/log/mongodb/mongod.log
В 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"}
/etc/mongodb.conf
соответствии с этим решением. Затем, после запускаmongod
, я увидел, что был использован/data/db
. Почему обновление mongodb.conf не повлияло на то, где mongod хранил базу данных? (Обратите внимание, что использование аргумента--dbpath
сработало.