จะเปลี่ยนตำแหน่งที่ MongoDB ใช้เพื่อเก็บข้อมูลได้อย่างไร


13

ฉันแก้ไขไฟล์กำหนดค่า MongoDB เพื่อเก็บข้อมูล/home/user/data/mongodไว้

แต่ข้อมูลยังถูกเขียนไปยังไดเรกทอรีเก่าตามที่คาดคะเนเนื่องจากสิทธิ์ในโฟลเดอร์ใหม่ไม่ได้รับอนุญาตฉันจะให้สิทธิ์ MongoDB ที่จำเป็นสำหรับไดเรกทอรีนั้นได้อย่างไร


1
คุณแก้ไขการกำหนดค่าของคุณอย่างไร ทำไมคุณคิดว่ามันมีปัญหากับสิทธิ์? เหตุใดคุณคิดว่า Mongo ใช้ไดเรกทอรีเริ่มต้นแทนที่จะทิ้งข้อผิดพลาด (นี่เป็นวิธีการถาม: คุณตรวจสอบไฟล์บันทึกข้อผิดพลาดแล้วหรือยัง)
Andrea Corbellini

คำตอบ:


29

ในการเปลี่ยนตำแหน่งที่ MongoDB ใช้ในการจัดเก็บข้อมูลคุณต้อง:

  1. แก้ไข/etc/mongodb.confและเปลี่ยนบรรทัดdbpath=/var/lib/mongodbให้เป็นเส้นทางที่คุณต้องการเช่นdbpath=/home/user/data/mongodb
  2. อัปเดตการอนุญาตของเส้นทางที่คุณเลือกเพื่อให้mongodbผู้ใช้สามารถเขียนได้เช่นchown $USER -R /home/user/data/mongodb
  3. เริ่มบริการ MongoDB โดยการเรียกใช้ sudo service mongodb restart

โปรดทราบว่าหากคุณมีข้อมูลใด ๆ ในตำแหน่งเดิมที่คุณต้องการเก็บไว้คุณจะต้องหยุดบริการ MongoDB ก่อนย้ายไฟล์ด้วยตนเองจากนั้นเริ่มบริการอีกครั้ง

เพื่อหยุดการใช้เซิร์ฟเวอร์ MongoDB sudo service mongodb stop


ฉันต้องย้ายไฟล์ใด
chovy

@chovy ไฟล์ในไดเรกทอรีจัดเก็บข้อมูล
David Edwards

ฉันลบทุกอย่างใน/var/lib/mongodb
chovy

@chovy จากนั้นคุณอาจลบข้อมูลทั้งหมดของคุณถ้าคุณมีและไม่มีไฟล์ที่คุณสามารถย้ายได้
David Edwards

ใช่มันก็ดี ฉันไม่ต้องการบันทึก ไม่แน่ใจว่ามีไฟล์ที่ไม่ใช่ข้อมูลที่ฉันต้องการหรือไม่ เห็นได้ชัดว่าไม่ได้เพราะมันดูเหมือนว่าจะยังคงทำงาน
chovy

1

คุณต้องรีสตาร์ท daemon เพื่อให้การเปลี่ยนแปลงมีผล

sudo service mongodb restart

Ti รีสตาร์ท deamon ฉันให้คุณด้วยวิธี วิธีเก่า: "etc / init.d / mongodb restart", วิธีใหม่: "sudo service mongodb restart"
Cyril ALFARO

1
ฉันขอแนะนำให้แก้ไขคำตอบของคุณเพื่อรวมข้อมูลนั้น
Eliah Kagan

1

หากคุณเริ่มต้น MongoDB จากบรรทัดคำสั่งคุณสามารถใช้--dbpathอาร์กิวเมนต์: mkdir mydata && mongod --dbpath mydata คุณอาจทำงานเป็นปัญหาบางอย่างที่เกี่ยวข้องกับ "แฟ้มที่มีอยู่" หรือบางสิ่งบางอย่างมันเป็นข้อ จำกัด ที่รู้จักกันดีของ MongoDB มากขึ้นเกี่ยวกับเรื่องนี้ที่นี่ เพียงแค่เปลี่ยนดิสก์ไดรฟ์และทดสอบว่าตอนนี้คุณไม่มีปัญหานั้นอีกแล้ว


1

ฉันพบปัญหาเดียวกันวันนี้และฉันแก้ไขปัญหาโดยใช้ขั้นตอนต่อไปนี้

  1. แก้ไขไฟล์ mongod.conf และแก้ไขค่าตัวแปร dbPath

    sudo -H gedit /etc/mongod.conf
    
  2. จากนั้นใช้คำสั่งต่อไปนี้เพื่อเริ่มบริการ mongod

    sudo mongod --dbpath "your db path"
    

    ฉันพยายามเรียกใช้คำสั่งด้านบนโดยไม่มีsudoและฉันพบข้อผิดพลาด ดังนั้นใช้sudoเพื่อเรียกใช้คำสั่ง


0

mv / var / lib / mongodb (ไดเรกทอรีที่คุณบันทึกข้อมูล) ไปที่ / path และ chown mondodb: mongodb / path (ไดเรกทอรีที่คุณต้องการบันทึกข้อมูล)

แก้ไข /etc/mongod.conf

บริการ mongod เริ่มต้นใหม่ (หากไม่สามารถเชื่อมต่อตรวจสอบ / เส้นทางหากไม่มี mongod.lock ถ้ามีอยู่ให้ลบออกแล้วเริ่มใหม่อีกครั้ง)


MongoDB ของมัน: MongoDB ฉันเดา .. !!
Lakshman Pilaka
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.