تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش بکاپ، بازیابی و انتقال دیتابیس MongoDB در اوبونتو 20.04


۲۴ اردیبهشت ۱۴۰۴

MongoDB یکی از محبوب ترین موتورهای پایگاه داده NoSQL شناخته می‌شود. این سیستم به دلیل اینکه از مقیاس پذیری بالا، پایداری، قابلیت اطمینان و سهولت در استفاده برخوردار است، مورد توجه بسیاری از توسعه دهندگان و تمامی تیم‌های فنی قرار گرفته است.

در این آموزش از لیارا با روش‌های پشتیبان گیری، بازیابی و مهاجرت پایگاه داده MongoDB آشنا شوید. در این آموزش عملیات ایمپورت (import) و اکسپورت (export) داده‌ها با قالب‌هایی انجام می‌شود که قابل درک و خواندن و با سایر نرم‌افزار‌ها نیز سازگار است.

“برای راه اندازی سریع دیتابیس MongoDB از مستندات لیارا استفاده کنید.”

فقط با یک کلیک و در چند ثانیه، پایگاه‌داده MongoDB را روی سرور ابری خود راه‌اندازی کنید.
✅ منابع قابل ارتقا ✅ ترافیک نامحدود ✅ مناسب برای پروژه‌های مقیاس‌پذیر
راه‌اندازی MongoDB ابری لیارا

آنچه در ادامه خواهید خواند:

  • الزامات شروع کار با MongoDB در Ubuntu 24.04
  • کار با فرمت های JSON و BSON در MongoDB
  • اهمیت یکپارچگی داده‌ ها در پشتیبان‌ گیری از MongoDB
  • پشتیبان‌ گیری از پایگاه‌ داده MongoDB با استفاده از mongodump
  • بازیابی و انتقال MongoDB با mongorestore در اوبونتو 24.04
  • سوالات متداول
  • جمع بندی
دیتابیس MongoDB

فرآیند پشتیبان گیری و بازیابی در MongoDB به صورت داده‌های باینری (Binary) انجام می‌شود. این روش نه تنها انسجام و یکپارچگی اطلاعات را محفوظ نگه می‌دارد، بلکه ویژگی‌های خاص MongoDB را نیز به درستی در خود نگه می‌دارد. به همین دلیل، زمانی که سیستم مبدا و مقصد از نظر نسخه و ساختار با هم سازگار هستند، استفاده از روش‌های پشتیبان گیری و بازیابی برای مهاجرت توصیه می‌شود.

آموزش بکاپ‌گیری از دیتابیس MySQL در سرور مجازی اوبونتو 24.04
بکاپ‌گیری از دیتابیس MySQL در سرور مجازی اوبونتو

الزامات شروع کار با MongoDB در Ubuntu 24.04

قبل از آنکه این آموزش را شروع کنید، لازم است ابتدا مطمئن شوید که مراحل زیر را به درستی انجام داده‌اید یا خیر.

راه اندازی یک سرور با سیستم عامل Ubuntu 24.04 که دارای یک کاربر غیر روت (non-root) با دسترسی sudo که فایروال بر روی آن فعال باشد را در اختیار داشته باشید.

  • نصب و پیکربندی MongoDB روی Ubuntu 24.04
  • وارد کردن یک پایگاه داده نمونه MongoDB

نکته حائز اهمیت این است که باید تمام دستوراتی که به دسترسی روت (root) نیاز دارند، توسط کاربر غیر روت (non-root) و با استفاده از دستور sudo اجرا شود، مگر اینکه در مواردی به صورت خاص آن ذکر شده باشد. پس در نتیجه از کاربر روت (root) استفاده نکنید.

استفاده از Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو Ubuntu
Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو

کار با فرمت های JSON و BSON در MongoDB

پیش از آن که فرآیند خاصی را انجام دهید باید با برخی از مفاهیم خاص و پایه‌ای این آموزش آشنایی داشته باشید. اگر پیش از این با پایگاه داده‌های NoSQL مانند Redis کار کرده باشید، ممکن است متوجه شباهت‌های این دو بشوید.

MongoDB از دو فرمت JSON و BSON (نسخه‌ی باینری JSON) برای ذخیره‌سازی داده‌ها استفاده می‌کند. JSON فرمتی است که برای انسان قابل خواندن است و گزینه‌ی مناسبی ایمپورت (import) و اکسپورت (export) داده‌ها به حساب می‌آید. این داده‌ها با ابزارهای مختلفی که از JSON پشتیبانی می‌کنند، از جمله ویرایشگرهای متنی ساده، قابل مدیریت هستند.

در ادامه یک نمونه سند با فرمت JSON را به شما نشان خواهیم داد.

{"address":[
    {"building":"1007", "street":"Park Ave"},
    {"building":"1008", "street":"New Ave"}
]}

اهمیت یکپارچگی داده‌ ها در پشتیبان‌ گیری از MongoDB

هرچند که کار کردن با JSON بسیار ساده است، اما این فرمت از تمام انواع داده‌ای که در BSON پشتیبانی می‌شود، پشتیبانی نمی‌کند. این مسئله باعث از دست رفتن دقت و جزئیات داده‌ها در زمان استفاده از JSON می‌شود. بنابراین برای عملیات پشتیبان گیری و بازیابی، استفاده از BSON (فرمت باینری MongoDB) به شما پیشنهاد خواهیم کرد.

نکته دوم این است که دیگر نیازی به ساخت پایگاه داده به روش دستی در MongoDB نخواهد بود. اگر نام پایگاه داده که قصد دارید اطلاعات را در آن وارد کنید وجود نداشته باشد، MongoDB یه صورت خودکار خودش این فرآیند را انجام می‌دهد. ساختار مجموعه‌ها (collections) نیز در MongoDB با وارد شدن اولین سند (row) خودکار شکل می‌گیرد، بر خلاف بسیاری از موتورهای پایگاه‌داده‌ی دیگر این کار را انجام می‌دهد.

نکته سومی که باید آن را در نظر گرفت، خواندن یا وارد کردن حجم زیادی از داده‌ها مانند کاری که در این آموزش انجام می‌دهیم می‌تواند منابع زیادی را از CPU، حافظه و فضای دیسک سرور را مصرف کند. از آنجایی که MongoDB در بیشتر مواقع برای پایگاه‌های داده بزرگ و یبگ دیتاها (Big Data) استفاده می‌شود از اهمیت بیشتری بر خوردار است . این نکته اهمیت بسیاری دارد. بهترین راه حل برای حل این مشکل، اجرا کردن فرآیند‌های مانند export و backup در ساعات کم‌ترافیک، مانند شب، است.

یکی از نکات بسیار مهم، حفظ یکپارچگی داده‌ها (Data Consistency) است. اگر سرور MongoDB شما زیر بار ترافیک بالا باشد و در حین عملیات پشتیبان‌گیری یا اکسپورت (export)، داده‌ها تغییر کنند، ممکن است نسخه پشتیبان نهایی دچار ناسازگاری شود.

برای جلوگیری از این مشکل، یکی از راهکارها استفاده از قابلیت تکثیر داده‌ها (Replication) است. البته راه‌اندازی Replication به دانش و مراحل بالایی نیاز دارد.

اگرچه می‌توان از ابزارهای mongoimport و mongoexport برای ساخت نسخه پشتیبان استفاده کرد، اما این ابزارها بیشتر برای جابجایی یا انتقال داده‌ها مناسب‌اند و نه برای پشتیبان‌گیری کامل و دقیق. برای پشتیبان‌گیری اصولی و حفظ یکپارچگی داده‌ها، باید از ابزار‌های زیر استفاده کنید:

  • mongodump: برای ساخت نسخه پشتیبان از پایگاه داده
  • mongorestore: برای بازیابی نسخه پشتیبان

در ادامه، نحوه استفاده از این ابزارها را به‌صورت گام‌به‌گام بررسی خواهیم کرد.

با سرور ابونتو لیارا، بدون دردسر سرور خود را تنها با چند کلیک مدیریت کنید.
✅ منابع کاملاً اختصاصی و پایدار✅ سرعت بالا و ترافیک نامحدود✅ امنیت پیشرفته و پشتیبانی 24/7
خرید و راه‌اندازی سرور اوبونتو ساعتی لیارا

پشتیبان‌ گیری از پایگاه‌ داده MongoDB با استفاده از mongodump

در این بخش، ابتدا نحوه گرفتن نسخه پشتیبان را از پایگاه داده MongoDB بررسی خواهیم کرد. پارامتر مهم در دستور mongodump، گزینه‌ی --db است که نام پایگاه‌داده‌ای که می‌خواهید از آن پشتیبان بگیرید را مشخص می‌کند. اگر این گزینه را مشخص نکنید، mongodump از تمام پایگاه‌داده‌ها نسخه‌ی پشتیبان را برای شما تهیه می‌کند. گزینه‌ی مهم دیگر --out است که مسیر ذخیره‌ی نسخه‌ی پشتیبان را مشخص می‌کند. پس این مرحله را جدی بگیرید و به درستی آن را انجام دهید.

برای مثال، فرض کنیم می‌خواهید از پایگاه‌داده‌ی newdb پشتیبان بگیرید و آن را در مسیر /var/backups/mongobackups ذخیره کنید. بهتر است برای نظم بیشتر، از تاریخ روز در نام پوشه استفاده شود. به مثال زیر دقت کنید:

sudo mkdir /var/backups/mongobackups
sudo mongodump --db newdb --out /var/backups/mongobackups/$(date +'%m-%d-%y')

خروجی شما مشابه زیر خواهد بود.

2020-10-29T19:22:36.886+0000    writing newdb.restaurants to
2020-10-29T19:22:36.969+0000    done dumping newdb.restaurants (25359 documents)

در مسیر زیر، با استفاده از date +'%m-%d-%y'، تاریخ جاری به صورت پیش فرض به مسیر اضافه شده است. این کار باعث می‌شود تا ساختار پوشه‌ها مرتب بشوند و نسخه‌برداری به‌صورت خودکار انجام شود.

توصیه می‌کنیم که به صورت منظم در زمان‌هایی که بار سرور کمتر است، از پایگاه‌داده نسخه‌ی پشتیبان استفاده کنید. برای این کار می‌توانید دستور mongodump را به‌صورت یک cron job تنظیم کنید تا به عنوان مثال هر روز رأس ساعت 02:02 بامداد اجرا شود.

برای تنظیم کران (cron)، ویرایش‌گر کران (cron) را باز کنید و دستور زیر را در آن وارد کنید.

sudo crontab -e

در این حالت وظایف زمان بندی شده برای کاربر روت (root) ویرایش می‌شود که به دلیل سطح دسترسی، به شما پیشنهاد می‌شود این قسمت را نادیده بگیرید. در فایل باز شده، خط زیر را اضافه کنید.

3 3 * * * mongodump --out /var/backups/mongobackups/$(date +'\%m-\%d-\%y')

در این خط، گزینه --db حذف کنید تا از تمام پایگاه‌داده‌ها نسخه‌ی پشتیبان گرفته شود. همچنین علامت % برای سازگاری با دستور cron و escape است.

اگر اندازه‌ی پایگاه‌داده بزرگ باشد، ممکن است فضای دیسک به‌سرعت پر شود. بنابراین، به شما پیشنهاد خواهیم کرد که نسخه‌های پشتیبان قدیمی را به‌صورت منظم حذف یا فشرده‌سازی کنید.

به عنوان مثال، اگر بخواهید نسخه‌های پشتیبان قدیمی‌تر از 7 روز را حذف کنید باید از دستور زیر کمک بگیرید.

find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

این دستور را هم می‌توانید به صورت cron job تنظیم کنید تا قبل از اجرای پشتیبان‌گیری جدید اجرا شود. برای پشتیبان‌گیری در ساعت 02:02، این دستور در ساعت 02:01 تنظیم می‌شود.

sudo crontab -e

بعد از آن کد را وارد کنید.

1 3 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

با انجام تمامی مراحل بالا، یک راه‌کار کامل و قابل اعتماد برای پشتیبان گیری از پایگاه داده‌های MongoDB در Ubuntu 24.04 در اختیار خواهید داشت.

نحوه نصب و استفاده از PostgreSQL در سرور مجازی اوبونتو 22.04
نصب و استفاده از PostgreSQL در سرور مجازی اوبونتو

بازیابی و انتقال MongoDB با mongorestore در اوبونتو 24.04

در زمان بازیابی پایگاه داده MongoDB از نسخه پشتیبان، در واقع یک نسخه دقیق تر از اطلاعات پایگاه داده در زمان مشخص برگردانده می‌شود. این نسخه تمامی ایندکس‌ها (Index) و نوع داده‌ها را در احتیار دارد. این قابلیت زمانی به کار می‌آید که شما قصد مهاجرت پایگاه داده MongoDB را به سرور دیگری داشته باشید. برای این کار از دستور mongorestore استفاده کنید. این دستور با فایل‌های پشتیبانی دودویی (binary) تولیدشده و با mongodump کار می‌کند.

در ادامه، مانند مثال‌های قبلی از پایگاه داده‌ای به نام newdb استفاده خواهید کرد تا بتوانیم نحوه بازیابی آن از نسخه پشتیبان را بررسی کنیم. برای اینکار ابتدا باید نام پایگاه داده موردنظر با استفاده از آرگومان --nsInclude مشخص کنید. برای بازیابی تمام مجموعه‌ها (Collections) از مقدار newdb.* استفاده کنید و اگر به بازیابی تنها یک مجموعه مانند restaurants نیاز داشتید، باید مقدار newdb.restaurants را وارد کنید.

سپس با استفاده از گزینه --drop، مطمئن شوید که پایگاه داده قبل از بازیابی، کاملا حذف شود و بازیابی در یک محیط بدون هیچ گونه داده‌ای انجام شود. مسیر نسخه پشتیبان مورد نظر به صورت زیر خواهد بود.

/var/backups/mongobackups/10-29-20/newdb/

برای بازیابی نسخه پشتیبان در اوبونتو 24.04، می‌توانید از دستور زیر استفاده کنید (تاریخ را مطابق با فایل پشتیبان خود تغییر دهید).

sudo mongorestore --db newdb --drop /var/backups/mongobackups/10-29-20/newdb/

خروجی دستوری که وارد کرده‌اید به صورت زیر خواهد بود.

2020-10-29T19:25:45.825+0000    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2020-10-29T19:25:45.826+0000    building a list of collections to restore from /var/backups/mongobackups/10-29-20/newdb dir
2020-10-29T19:25:45.829+0000    reading metadata for newdb.restaurants from /var/backups/mongobackups/10-29-20/newdb/restaurants.metadata.json
2020-10-29T19:25:45.834+0000    restoring newdb.restaurants from /var/backups/mongobackups/10-29-20/newdb/restaurants.bson
2020-10-29T19:25:46.130+0000    no indexes to restore
2020-10-29T19:25:46.130+0000    finished restoring newdb.restaurants (25359 documents)
2020-10-29T19:25:46.130+0000    done

در این مثال، داده‌ها روی همان سروری که نسخه پشتیبان تهیه شده بود بازیابی می‌شوند. اگر هدف، مهاجرت اطلاعات به سرور دیگر باشد، می‌توان دایرکتوری نسخه پشتیبان (در اینجا /var/backups/mongobackups/10-29-20/newdb/) را به سرور مقصد منتقل کرده و سپس از همان دستور mongorestore برای بازیابی اطلاعات استفاده کرد.

همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

سوالات متداول

در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جواب‌های کوتاه اما مفیدی داده‌ایم که با استفاده از آن می‌توانید به سوال خود پاسخ صحیحی را بدهید.

چطور از پایگاه‌ داده MongoDB در اوبونتو 24.04 نسخه پشتیبان تهیه کنیم؟

برای گرفتن نسخه پشتیبان از MongoDB در اوبونتو 24.04 از ابزار mongodump استفاده کنید. کافی است دستور زیر را اجرا کنید.

sudo mongodump --db yourdbname --out /var/backups/mongobackups/$(date +'%m-%d-%y')

 دستور mongodump در اوبونتو 24.04 چه کاربردی دارد؟

mongodump ابزاری است که برای تهیه نسخه پشتیبان از پایگاه‌داده MongoDB به‌کار می‌رود. این ابزار اطلاعات را به فرمت BSON ذخیره می‌کند که شامل داده‌ها، ساختار جداول (Collections) و ایندکس‌ها (Index) است.

چگونه پشتیبان‌ گیری روزانه از MongoDB را زمان‌ بندی کنیم؟

با استفاده از cron می‌توان زمان‌بندی مورد نظر را انجام داد. به عنوان مثال و درک بهتر، این خط را در crontab وارد کنید تا هر روز ساعت 03:03 بامداد پشتیبان‌گیری انجام شود.

3 3 * * * mongodump --out /var/backups/mongobackups/$(date +'\%m-\%d-\%y')

چطور پایگاه‌ داده MongoDB را از نسخه پشتیبان بازیابی کنیم؟

برای بازیابی از نسخه پشتیبان، از دستور mongorestore استفاده کنید. به‌عنوان مثال:

sudo mongorestore --db yourdbname --drop /var/backups/mongobackups/10-29-20/yourdbname/

گزینه –drop باعث حذف نسخه فعلی و جایگزینی آن با نسخه پشتیبان می‌شود.

آموزش نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو به زبان ساده
نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو

تفاوت export/import با backup/restore در MongoDB چیست؟

  • Export/Import داده‌ها را به فرمت JSON ذخیره می‌کند، کاملا خوانا برای انسان و قابل‌استفاده در سایر سیستم‌های دیگر است.
  • Backup/Restore از فرمت BSON استفاده می‌کند که ساختار دقیق داده‌ها و ایندکس‌ها را حفظ می‌کند؛ برای مهاجرت یا بازیابی دقیق، این روش بهتر و منطقی‌تر می‌باشد.

چگونه داده‌ های MongoDB را به یک سرور جدید در اوبونتو 24.04 منتقل کنیم؟

ابتدا با mongodump از پایگاه‌داده نسخه پشتیبان تهیه کنید، سپس فایل‌ها را به سرور مقصد منتقل کنید و با mongorestore بازیابی انجام دهید.

scp -r /var/backups/mongobackups/ user@remote:/path/

سپس روی سرور مقصد دستور زیر را وارد کنید.

mongorestore --db yourdbname /path/yourdbname/

آیا می‌ توان فقط یک Collection خاص را بازیابی کرد؟ چگونه؟

بله. می‌توانید با مشخص کردن نام Collection از –nsInclude استفاده کنید. برای درک بهتر مثال زیر را با دقت مطالعه کنید.

mongorestore --nsInclude yourdb.collectionname --drop /backup/path/

چطور فایل‌ های پشتیبان MongoDB را به‌ صورت خودکار حذف کنیم؟

برای حذف نسخه‌های قدیمی‌تر از 7 روز از این دستور استفاده کنید.

find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

و می‌توان آن را در cron زمان‌بندی کرد تا به‌طور خودکار اجرا شود.

1 3 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

استفاده از گزینه –drop در زمان بازیابی MongoDB چه مزیتی دارد؟

گزینه –drop باعث می‌شود پایگاه‌داده‌ی فعلی حذف و نسخه پشتیبان به‌صورت کامل جایگزین شود. این روش از تداخل داده‌ها و ساختارهای قبلی جلوگیری می‌کند و برای مهاجرت یا بازیابی دقیق توصیه می‌شود.

جمع بندی

در این آموزش از لیارا، با نحوه پشتیبان گیری، بازیابی و انتقال پایگاه داده MongoDB در اوبونتو 24.04 آشنا شدید. استفاده از ابزارهای mongodump و mongorestore این امکان را می‌دهد که داده‌ها را به‌صورت دقیق، کامل و بدون از دست رفتن اطلاعات منتقل یا بازیابی کنید. در نهایت، با رعایت اصول این آموزش، اطمینان خواهید داشت که پایگاه‌داده MongoDB شما در هر زمان قابل بازیابی و انتقال است.

راهنمای راه‌اندازی IDE ابری code server بر روی سرور مجازی اوبونتو 22.04
راه‌اندازی IDE ابری code server بر روی سرور مجازی اوبونتو

به اشتراک بگذارید

برچسب‌ها: