মংগোডিবি ডেটা স্টোর ডিরেক্টরি পরিবর্তন করা হচ্ছে


183

এখন অবধি আমি কোনও মঙ্গোডিবি ডেটা ডিরেক্টরি উল্লেখ করছি না এবং কেবলমাত্র একটি 30 জিবি প্রাথমিক পার্টিশন ছিল।

আমি কেবল স্থান ছাড়িয়ে একটি নতুন হার্ড ডিস্ক যুক্ত করেছি। আমি কীভাবে আমার ডেটা স্থানান্তর করতে পারি (এটি স্পষ্টতই অন্তর্ভুক্ত /var/lib/mongodb/) এবং মঙ্গোডিবি কনফিগার করতে যাতে আমার বিদ্যমান ইনস্টলেশনটিকে প্রভাবিত না করেই সমস্ত কিছু নতুন ডিস্কের বাইরে চলে যায়?


নতুন মাউন্ট পয়েন্টে আপনার অনুমতিগুলিতে r + x রয়েছে কিনা তাও নিশ্চিত করা উচিত: sudo chmod o+rx /mediaউদাহরণস্বরূপ যদি আপনার মাউন্ট পয়েন্টটি হয় media। প্রথম মাউন্ট পয়েন্ট থেকে 'অন্যান্য' গ্রুপ এবং ব্যবহারকারীদের জন্য আর + এক্স উপলব্ধ থাকা দরকার।
শব্দসুখে

উত্তর:


219

সংক্ষিপ্ত উত্তরটি হ'ল --dbpathমঙ্গোডিবি- র পরামিতি আপনাকে মোংগোডিবি কী ডিরেক্টরি থেকে এটি ডেটা পড়বে এবং লিখবে তা নিয়ন্ত্রণ করতে দেয়।

মঙ্গোদ --ডিবিপাথ / ইউএসআর / স্থানীয় / মংডোব-ডেটা

মংডোব শুরু করে ফাইলগুলি putুকিয়ে দেবে /usr/local/mongodb-data

আপনার বিতরণ এবং মঙ্গোডিবি ইনস্টলেশনের উপর নির্ভর করে আপনি mongod.confস্বয়ংক্রিয়ভাবে এটি ফাইলটি কনফিগার করতে পারেন :

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

আনুষ্ঠানিক 10gen লিনাক্স প্যাকেজগুলি ( উবুন্টু / ডেবিয়ান বা সেন্টোস / ফেডোরা ) একটি বেসিক কনফিগারেশন ফাইল সহ জাহাজটি স্থাপন করা হয়েছে /etc/mongodb.confএবং মংগাডিবি পরিষেবাটি এটি পড়ার পরে পড়বে। আপনি এখানে আপনার পরিবর্তন করতে পারেন।


9
আমার ডেবিয়ান এটা mongodb.conf না mongod.conf বাক্স
UpTheCreek

12
আমি /etc/mongodb.confএই সমাধান প্রতি আপডেট । তারপরে, শুরু করার পরে mongod, আমি /data/dbএটি ব্যবহার করা দেখলাম । মোংডোড.কনফকে আপডেট করার ফলে কেন মোংডোড ডিবি সঞ্চয় করে সেখানে প্রভাব ফেলেনি? (নোট করুন যে --dbpathআর্গুমেন্টটি ব্যবহার করে কাজ হয়েছে
কেভিন মেরেডিথ

আমার ফেডোরা বাক্সে এটি /etc/mongodb.confআপডেট করা আমার পক্ষে ভাল কাজ করে।
tuxdna

4
chownপরিষেবা শুরুর স্ক্রিপ্টগুলির জন্য নতুন ডেটা ডিরেক্টরিটি মংড ব্যবহারকারীদের কাছে 'ডি হওয়া দরকার।
পিট গারফানো

আমি কিভাবে chown না?
chovy

102

এটি 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

3
আমি মনে করি এটির উত্তর হওয়া উচিত। আমি সর্বদা প্রতীকী লিঙ্কগুলি একটি খুব ভাল সমাধান হিসাবে খুঁজে পাই এবং কনফিগারেশন ইত্যাদি পরিবর্তনের জন্য যে কোনও সমাধান ব্যবহার করে তা প্রচার করি
লোক মোগরাবি

সম্ভবত ব্যবহারকারীর প্রয়োজন নেই। আপনি ডিবিপাথের গাছে থাকা "অন্যান্য" ব্যবহারকারীদের + x এক্সিকিউটেবল অনুমতিটি হারিয়েছেন chmod -R o+x /<home>। দেখুন: stackoverflow.com/a/38193187/205049
oori

আমি এই নির্দেশাবলী (অন্য ডিস্কে dbpath ব্যবহার করে) অনুসরণ আমি এখনও পেয়ে করছি 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*
Machinerium

1
আপনি যখন mvকমান্ডটি চালাবেন আপনি কোন ফোল্ডারে রয়েছেন তার স্পষ্টতা দরকার, আপনি যদি এমবি কমান্ডটি লাইবের মধ্যে থেকে চালান তবে আপনার আর মংডব লাগবে lnনা
অ্যান্ডি

1
আমি আপনার সমাধানটি চেষ্টা করেছি তবে আমি যখন অ্যাপ্লিকেশনটি পুনরায় চালু করব তখন এটি নীচের ত্রুটি দিচ্ছে - 2019-11-18T18: 58: 45.215 + 1100 I স্টোরেজ [initandlisten] ব্যতিক্রম ইনডিএলটিস্টে: 28596 ডেটা ডিরেক্টরিতে লক ফাইলের স্থিতি নির্ধারণ করতে অক্ষম / var / lib / mongo: boost :: ফাইলসিস্টেম :: স্থিতি: অনুমতি অস্বীকার করা হয়েছে: "/var/lib/mongo/mongod.lock", সমাপ্ত হচ্ছে
অরুণ চৌহান

32

আপনি যদি ডিফল্ট পাথ পরিবর্তন করতে চান তবে নীচের কমান্ডটি আপনার পক্ষে কাজ করবে। এটি কেবল মংডোবের বিন ডিরেক্টরিতে টাইপ করুন।

mongod --dbpath=yourdirectory\data\db

আপনি যদি বিদ্যমান ডেটাটি খুব সরিয়ে নিতে চান তবে কমান্ডটি কার্যকর করার আগে কেবলমাত্র বিদ্যমান ফোল্ডারগুলি data db ডিরেক্টরি থেকে নতুন ডিরেক্টরিতে অনুলিপি করুন।

এবং চলমান বিদ্যমান মঙ্গোদব পরিষেবাগুলি বন্ধ করুন।


1
এটি লিনাক্সেও কাজ করে। আমি মন্ডড স্ক্রিপ্টের পাশে "ডেটা" নামে একটি ডিরেক্টরি তৈরি করেছি এবং এটি এভাবে চালিত করব: ./mongod --dbpath = ডেটা
cagdasalagoz

29

মোংডোডিবি ফোল্ডারে মংডোড.এফজি নামে একটি ফাইল তৈরি করুন যদি তা না থাকে। আমার ক্ষেত্রে: সি: \ ব্যবহারকারীরা ivanbtrujillo \ মঙ্গোডিবি

তারপরে নোটপ্যাডের সাথে মংগড.এফজি সম্পাদনা করুন এবং নিম্নলিখিতগুলির সাথে একটি লাইন যুক্ত করুন (আমাদের কাস্টম ডিবিপাথ):

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

এই ফাইলে আপনার লগপথটিও স্পেসিফিক করা উচিত। আমার mongod.cfg ফাইলটি হ'ল:

logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log
dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db

আপনি যদি উইন্ডোজ পরিষেবা হিসাবে মঙ্গোডিবি ব্যবহার করেন, আপনাকে এই কীটি পরিবর্তন করতে হবে এবং মঙ্গোড সিএফজি ফাইলটি নির্দিষ্ট করতে হবে।

উইন্ডোজ পরিষেবা হিসাবে মোংডব ইনস্টল করতে এই কমান্ডটি চালান:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" install**

Regedit.exe খুলুন এবং নিম্নলিখিত রুটে যান:

HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB

মঙ্গোডিবি পরিষেবা কাজ করে না, আমাদের ইমেজপথ কীটি সম্পাদনা করতে হবে, এর সামগ্রীটি মুছতে হবে এবং নিম্নলিখিতটি লিখতে হবে:

**"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" 
--logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" service**

আমরা মঙ্গোতে এটির কনফিগার ফাইল এবং এর লগপথকে নির্দেশ করি।

তারপরে আপনি যখন মঙ্গোদব পরিষেবাটি শুরু করেন, এটি কার্যকর হয়।

উইন্ডোজগুলিতে মঙ্গোডিবি ইনস্টল করার জন্য এখানে একটি সম্পূর্ণ টিউটোরিয়াল দেওয়া হয়েছে: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

আশা করি এটা সাহায্য করবে,


1
মঙ্গোডিবি 2.6 এবং আরও নতুন YAML কনফিগারেশন ফাইলগুলি ব্যবহার করে। পুরানো ফর্ম্যাটটি এখনও পিছনের সামঞ্জস্যের জন্য সমর্থিত তবে আপনি নতুনটি ব্যবহার করতে পারেন। বিশদ এখানে
gronostaj

ডিবিপাথ ভেরিয়েবল লিনাক্সের জন্যও বিদ্যমান। /Etc/mongod.conf এ দেখুন।
এক্সপ্রেস

23

বিষয়বস্তু কপি /var/lib/mongodbকরার /data/db। আপনার যে ফাইলগুলির সন্ধান করা উচিত সেগুলির নাম হওয়া উচিত your_db_name.nsএবং your_dbname.nকোথা nথেকে 0 দিয়ে শুরু করা উচিত you আপনি যদি এই ধরণের ফাইলগুলি নীচে না দেখেন তবে /var/lib/mongodbআপনার ফাইল সিস্টেমে সেগুলি সন্ধান করুন।

একবার অনুলিপি করা হয়ে গেলে, কমান্ডের --dbpath=/data/dbমাধ্যমে মঙ্গোডিবি শুরু করার সময় ব্যবহার করুন mongod


সার্ভার পুনরায় চালু হওয়ার সাথে সাথে এটি হওয়ার কোনও উপায় আছে কি?
user4951

1
@ জিমটিও আপনি এই স্যুইচটি শেল স্ক্রিপ্টে যোগ করতে পারেন যা মংডব শুরু হয়। সাধারণত এটি /etc/init.d/mongod বা /etc/init.d/mongodb।
লবস্টার 1234

19

আমি যা করেছি তা এখানে, আশা করি এটি অন্য কারও পক্ষে সহায়ক:

পদক্ষেপ:

  1. আপনার পরিষেবাগুলি বন্ধ করুনমোংডব ব্যবহার করছে এমন
  2. মঙ্গোদ বন্ধ করুন - এটি করার আমার উপায়টি আমার আরসি ফাইলের সাথে ছিল/etc/rc.d/rc.mongod stop আপনি যদি মতো অন্য কিছু ব্যবহার করেন তবে কীভাবে এটি করবেন তা আপনার ডকুমেন্টেশন পরীক্ষা করা উচিত
  3. তাজা হার্ডডিস্কে একটি নতুন ডিরেক্টরি তৈরি করুন -mkdir /mnt/database
  4. নিশ্চিত হয়ে নিন যে মংডোডের সেই ডিরেক্টরি থেকে পড়ার / লেখার সুযোগ রয়েছে (সাধারণত সাধারণত)chown mongodb:mongodb -R /mnt/database/mongodb ) - ধন্যবাদ @ ড্যানেলগেনস্কি।
  5. আপনার মোংডব এর ডেটা ফোল্ডারটি নতুন স্থানে অনুলিপি করুন -cp -R /var/lib/mongodb/ /mnt/database/
  6. পুরানো ডাটাবেস ফোল্ডারটি সরান -rm -rf /var/lib/mongodb/
  7. নতুন ডাটাবেস ফোল্ডারে প্রতীকী লিঙ্ক তৈরি করুন -ln -s /mnt/database/mongodb /var/lib/mongodb
  8. মঙ্গোদ শুরু করুন -/etc/rc.d/rc.mongod start
  9. আপনার মঙ্গোডের লগটি পরীক্ষা করুন এবং কিছুটা সতর্কতা যাচাই করুন ( mongoসবকিছু ঠিক আছে কিনা তা দেখতে আপনার ডাটাবেসে সংযোগ দেওয়ার চেষ্টা করুন )
  10. আপনার পরিষেবাগুলি শুরু করুন যা আপনি পয়েন্ট 1 এ থামিয়েছেন

এটি করার দরকার নেই যে আপনি যখন এটি করেন তখন আপনার যত্নবান হওয়া উচিত, বিশেষত এর সাথে rm -rfতবে আমি মনে করি এটি এটি করার সেরা উপায়।

মোংড চলাকালীন আপনার কখনই ডাটাবেস দির অনুলিপি করার চেষ্টা করা উচিত নয়, কারণ এমন পরিষেবাগুলি হতে পারে যেগুলি সেখান থেকে লিখতে / পড়তে পারে যা আপনার ডাটাবেসের সামগ্রী পরিবর্তন করে।


1
যদিও একটি পুরানো উত্তর, এটি আমার জন্য আংশিকভাবে কাজ করেছিল। আপনার এটিও নিশ্চিত করতে হবে যে মংডোডব ব্যবহারকারী নতুন ডিরেক্টরি এবং সিমলিকের কাজ করার জন্য এটির মালিক। chown mongodb:mongodb -R /mnt/database/mongodb
ড্যানাইল গ্যাবেন্সকি

3
পঞ্চম স্থানে, সিপি -আরপি / ভেরি / লিবিব / মোংডোবি / / এমএনটি / ডাটাবেস / এর মতো দেখতে কমান্ড তৈরি করুন এটি ফোল্ডারের মালিকানা এবং অনুমতি অক্ষত রাখবে।
কেতন ঝুমটকরের

আমি আপনার সমাধানটি চেষ্টা করেছি তবে আমি যখন অ্যাপ্লিকেশনটি পুনরায় চালু করব তখন এটি নীচের ত্রুটি দিচ্ছে - 2019-11-18T18: 58: 45.215 + 1100 I স্টোরেজ [initandlisten] ব্যতিক্রম initAndListen: 28596 ডেটা ডিরেক্টরিতে লক ফাইলের স্থিতি নির্ধারণ করতে অক্ষম / var / lib / mongo: boost :: ফাইলসিস্টেম :: অবস্থা: অনুমতি অস্বীকার করা হয়েছে: "/var/lib/mongo/mongod.lock", সমাপ্ত হচ্ছে
অরুণ চৌহান

10

যদি apt-getউবুন্টু 12.04 এর মাধ্যমে ইনস্টল করা থাকে তবে ভুলে যাবেন না chown -R mongodb:nogroup /path/to/new/directory। এছাড়াও, কনফিগারেশন পরিবর্তন করুন /etc/mongodb.conf

অনুস্মারক হিসাবে, mongodb-10genপ্যাকেজটি এখন আপস্টার্টের মাধ্যমে শুরু হয়েছে, সুতরাং কনফিগার স্ক্রিপ্টটি ভিতরে রয়েছে/etc/init/mongodb.conf

আমি কেবল এটি পেরেছি, আশা করি গুগলরা এটি দরকারী বলে মনে করছেন :)


1

আমার জন্য, ব্যবহারকারী mongodপরিবর্তে ছিলmongodb

sudo chown mongod:mongod /newlocation

পরিষেবাটি ব্যর্থ হলে আপনি ত্রুটিগুলির জন্য লগগুলি দেখতে পারেন:

/var/log/mongodb/mongod.log


0

ডিবিয়ান / উবুন্টুতে আপনাকে /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"}

আপনি যদি আপনার হোম ডিরেক্টরিতে মূলের পরিবর্তে ডাটাবেস স্থাপন করতে চান?
জেসিবয়েড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.