답변:
짧은 대답은 --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 서비스는 시작할 때이를 읽습니다. 여기서 변경할 수 있습니다.
/etc/mongodb.conf
이 솔루션마다 업데이트했습니다 . 그런 다음 시작 후 사용 된 mongod
것을 보았습니다 /data/db
. mongodb.conf 업데이트가 mongod가 DB를 저장 한 위치에 영향을 미치지 않은 이유는 무엇입니까? ( --dbpath
논쟁 을 사용하여 작동합니다.
/etc/mongodb.conf
업데이트되어 저에게 잘 작동합니다.
chown
서비스 시작 스크립트를 위해 새 데이터 디렉토리를 mongod 사용자에게 제공해야합니다.
다운 타임으로 2 분 안에 해결 :)
폴더를 이동하고 symlink를 추가 한 다음 권한을 조정하십시오.
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
Permission denied: "/var/lib/mongodb"
다음과 같이 나타납니다. /home/../mongodb/mongodb/의 모습 : drwxrwxr-x 3 mongodb mongodb 4096 oct 13 09:32 ../ drwxr-xr-x 2 mongodb nogroup 4096 oct 13 09:29 journal/ -rw------x 1 mongodb nogroup 67108864 sep 23 14:44 local.0* -rw------x 1 mongodb nogroup 16777216 sep 23 14:44 local.ns* -rwxr-xr-x 1 mongodb mongodb 0 oct 13 09:29 mongod.lock*
mv
은 lib 디렉토리 내에서 MV 명령을 실행하면 명령을, 더 이상에 MongoDB를이 없습니다 ln
에
기본 경로를 변경하려는 경우 다음 명령이 적합합니다. mongodb의 bin 디렉토리에 이것을 입력하십시오.
mongod --dbpath=yourdirectory\data\db
기존 데이터를 이동하려는 경우 명령을 실행하기 전에 기존 data \ db 디렉토리의 모든 폴더를 새 디렉토리로 복사하십시오.
또한 실행중인 기존 mongodb 서비스를 중지하십시오.
없는 경우 MongoDB 폴더에 mongod.cfg라는 파일을 작성하십시오. 제 경우에는 : 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**
우리는 구성 파일과 해당 로그 경로를 mongo에 표시합니다.
그런 다음 mongodb 서비스를 초기화하면 작동합니다.
다음은 Windows에서 mongoDB를 설치하는 전체 자습서입니다. 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
는 mongod
명령을 통해 MongoDB를 시작할 때 사용 하십시오 .
여기 내가 한 일이 있습니다. 다른 사람에게 도움이되기를 바랍니다.
단계 :
/etc/rc.d/rc.mongod stop
을 사용하는 방법은 systemd와 같은 다른 것을 사용하는 경우 문서를 확인하는 방법을 확인해야합니다mkdir /mnt/database
chown mongodb:mongodb -R /mnt/database/mongodb
) 에서 읽기 / 쓰기 권한을 가지고 있는지 확인하십시오 . @DanailGabenski 덕분입니다.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
이것이 최선의 방법이라고 생각합니다.
mongod가 실행되는 동안 데이터베이스 디렉토리를 복사하려고 시도해서는 안됩니다. 데이터베이스의 내용을 변경하는 서비스가 쓰기 / 읽기 서비스가있을 수 있기 때문입니다.
chown mongodb:mongodb -R /mnt/database/mongodb
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"}
sudo chmod o+rx /media
예 : 마운트 지점이 인 경우)media
. r + x는 첫 번째 마운트 지점에서 '다른'그룹 및 사용자가 사용할 수 있어야합니다.