مقدمه
MongoDB یکی از محبوبترین موتورهای دیتابیس NoSQL است که به خاطر مقیاسپذیری، پایداری، قابلاعتماد بودن و سادگی استفاده شناخته میشود. در این مقاله یاد میگیرید چگونه از یک دیتابیس MongoDB بکاپ بگیرید، آن را بازیابی کنید و همچنین بین سرورها جابهجا (migrate) کنید.
ایمپورت و اکسپورت دیتابیس به معنی کار با دادهها در قالبی قابلخواندن برای انسان است که با نرمافزارهای دیگر سازگار باشد. اما عملیات بکاپ و ریستور در MongoDB از دادههای باینری اختصاصی استفاده میکند که علاوه بر حفظ یکپارچگی دادهها، ویژگیهای خاص MongoDB را نیز نگه میدارد. به همین دلیل، برای مهاجرت دیتابیس، معمولاً استفاده از بکاپ و ریستور گزینه بهتری است (در صورتی که سیستم مبدا و مقصد سازگار باشند).
پیشنیازها
برای انجام این آموزش، موارد زیر را داشته باشید:
- یک سرور Ubuntu 20.04 با دسترسی sudo
- نصب و پیکربندی MongoDB
- داشتن یک دیتابیس نمونه در MongoDB
تمام دستورات نیازمند دسترسی روت باید با کاربری که sudo دارد اجرا شوند.
مرحله ۱: آشنایی با JSON و BSON در MongoDB
MongoDB از دو فرمت JSON و BSON (نسخه باینری JSON) برای ذخیره دادهها استفاده میکند.
- JSON: قابلخواندن برای انسان و مناسب برای export/import
- BSON: فرمت باینری که از انواع داده بیشتری پشتیبانی میکند
مثال JSON:
{"address":[
{"building":"1007", "street":"Park Ave"},
{"building":"1008", "street":"New Ave"}
]}
نکات مهم:
- استفاده از JSON ممکن است باعث از دست رفتن برخی ویژگیهای داده (loss of fidelity) شود.
- در MongoDB نیازی به ساخت دستی دیتابیس نیست؛ در صورت نبود، خودکار ساخته میشود.
- عملیات سنگین (مثل بکاپ) منابع زیادی مصرف میکند → بهتر است در ساعات کمترافیک انجام شود.
- برای جلوگیری از ناسازگاری دادهها در حین بکاپ، میتوان از replication استفاده کرد.
برای بکاپ و ریستور بهتر است از:
mongodumpبرای بکاپmongorestoreبرای بازیابی
استفاده کنید.
مرحله ۲: بکاپ گرفتن با mongodump
برای بکاپ گرفتن از دیتابیس:
sudo mkdir /var/backups/mongobackups
sudo mongodump --db newdb --out /var/backups/mongobackups/$(date +'%m-%d-%y')
نمونه خروجی:
writing newdb.restaurants
done dumping newdb.restaurants
نکات:
- اگر
--dbرا ندهید، از همه دیتابیسها بکاپ گرفته میشود. - استفاده از
dateباعث ذخیره بکاپها با تاریخ میشود.
زمانبندی بکاپ خودکار (cron)
sudo crontab -e
3 3 * * * mongodump --out /var/backups/mongobackups/$(date +'\%m-\%d-\%y')
حذف بکاپهای قدیمی (بیش از ۷ روز)
find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;
اضافه کردن به cron:
1 3 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;
مرحله ۳: بازیابی و مهاجرت با mongorestore
برای ریستور دیتابیس:
sudo mongorestore --db newdb --drop /var/backups/mongobackups/10-29-20/newdb/
نمونه خروجی:
restoring newdb.restaurants
finished restoring
نکات مهم:
--dropدیتابیس مقصد را قبل از ریستور حذف میکند.- میتوانید کل دیتابیس یا یک collection خاص را ریستور کنید.
مهاجرت به سرور دیگر
کافی است پوشه بکاپ را به سرور جدید منتقل کرده و همان دستور restore را اجرا کنید.
نتیجهگیری
در این آموزش یاد گرفتید:
- چگونه از MongoDB بکاپ بگیرید (
mongodump) - چگونه دیتابیس را بازیابی کنید (
mongorestore) - چگونه دیتابیس را بین سرورها منتقل کنید
هیچ سرور MongoDB در محیط production نباید بدون استراتژی بکاپ مناسب اجرا شود. داشتن بکاپ منظم، یکی از مهمترین اصول نگهداری دیتابیس است.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران