Skip to main content

جابه‌جایی داده‌های Mongodb به دارکوب

مقدمه

در این آموزش قصد داریم چگونگی گرفتن بکاپ (backup) از دیتابیس موجود خارج از دارکوب و بازیابی (restore) آن در Mongodb دارکوب را ببینیم. برای انجام این کار لازم است سه مرحله را طی کنید: ساخت یک اپ Mongodb در دارکوب گرفتن بکاپ از داده‌های دیتابیس خارج از دارکوب بازیابی داده‌ها در اپ Mongodb دارکوب در ادامه به بررسی هر کدام از این مراحل می‌پردازیم:

ساخت یک اپ Mongodb در دارکوب

شما به‌راحتی و با چند کلیک می‌توانید یک اپ Mongodb در دارکوب بسازید. برای این کار به مستند مربوطه مراجعه کنید.

گرفتن بکاپ از داده‌های دیتابیس خارج از دارکوب

برای این کار ما از ابزار ‍mongodump استفاده می‌کنیم که یک CLI برای بکاپ گرفتن از Mongodb است. ( ابزار خط فرمان «mongodump» که توسط خود mongoDB ایجاد شده است. ). mongodump می‌تواند‍ بکاپ را به شکل فایل های BSON یا یک آرشیو gzip ایجاد کند. برای گرفتن بکاپ مراحل زیر را طی کنید:

قبل از نصب ابزار mongodump نیاز مند اقدامات زیر را انجام دهید ابتدا دستور زیر را اجرا کنید:

apt-get update

سپس پکیج wget را با دستور زیر نصب کنید:

apt install wget

نصب mongodump

برای نصب ابزار mongostore و mongodump نیاز است مراحل زیر را پیش ببرید: 1- ابتدا باید repository Mongodb اضافه کنید:

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -sc)/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list

۲- سپس دستور زیر را بزنید :

 apt update

۳-برای اینکه ابزارهای کار با دیتابیس Mongodb نصب شود دستور زیر را وارد کنید:

 apt-get install -y mongodb-database-tools

۴- برای اینکه مطمئن شوید فرایند نصب را به‌درستی طی کرده‌اید از دستور زیر استفاده کنید:

mongorestore --version

عملیات بکاپ گیری

هشدار: در صورتی که عملیات بکاپ‌گیری را قبلا انجام داده‌اید نیازی ندارید این مرحله را دوباره اجرا کنید.

1- ابتدا با استفاده از دستور mongodump عملیات backup را انجام دهیم:

 mongodump --uri="mongodb://{user_admin}:{password}&{host}:{port}" –db your_database_name --collection={collection}  --out=/path/to/backup

توضیحات:

  • uri-- آدرس دیتابیس
  • db-- دیتابیس
  • collection -- کالکشن مورد نظر
  • out -- مسیر دایرکتوری را قرار دهید که قصد دارید فایل بکاپ را در آن ذخیره کنید در صورتی که دیتابیس که در حال بکاپ‌گیری از آن هستید در سیستم لوکال خود قرار دارد از نمونه دستور زیر می‌توانید از استفاده کنید :
mongodump --db mydatabase --out /backups

اگر دیتابیس Mongodb در حال فرایند بکاپ‌گیری هستید از آن هستید در روی هاست دیگر قرار دارد برای ارتباط با دیتابیس Mongodb باید آدرس و پورت را جایگزین host , port کنید همچنین یوزرنیم و پسورد جایگزین کنید

mongodump
--uri="mongodb://root:{password}@8d33e042-7452-44b3-b04b-f44272767c07.hsvc.ir:31882/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false" --db=test --collection=accounts --out=/home/hamravesh/backups

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

  • آدرس هاست (مثل 8d33e042-7452-44b3-b04b-f44272767c07.hsvc.ir) و شماره پورت (پیش‌فرض: 27017) را به جای host و port وارد کنید.
  • یوزرنیم و پسورد: اطلاعات کاربری که مجوز دسترسی به دیتابیس را دارد (مثل username و password) را وارد کنید.
نمونه دستور
mongodump --uri="mongodb://root:12344fghyrer@8d33e042-7452-44b3-b04b-f44272767c07.hsvc.ir:31882/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false" --db=test --collection=accounts --out=/home/hamravesh/backups

هشدار:

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

با این دستور، MongoDB فرایند پشتیبان‌گیری پایگاه داده MongoDB در اوبونتو (سیستم local) را آغاز می‌کند. درواقع، یک Dump از پایگاه داده در دایرکتوری ایجاد می‌کند.

نکته : برای فشرده‌سازی خروجی بکاپ در ورودی‌هایی مانند gzip– نیز می‌توانید از دستور زیر استفاده کنید:
$ mongodump --gzip --archive=/path/to/backup/directory/backupfilename --db dbname

بازیابی دیتابیس در دارکوب

1.ابتدا در پنل دارکوب به صفحه‌ مربوط به اپ دیتابیس بروید و گزینه‌ «دسترسی از طریق اینترنت» را فعال کنید:

2.سپس دکمه‌ «ذخیره تغییرات» را بزنید تا این تغییر ذخیره شود. چند لحظه صبر کنید و بعد صفحه را refresh کنید تا آدرس خارجی را ببینید. نکته: در صورتی که فایل بکاپ شما پسوند tar.gz دار قبل از ادامه مسیر ابتدا باید دستور زیر را بزنید : با فرض اینکه نام فایل بکاپ شما dump.tar.gz:

tar -xzvf dump.tar.gz -C /path/to/extract/backup

نکته: برای Restore کردن می توانید از ابزار mongostore استفاده کنید. ابتدا نیاز هست این ابزار را نصب کنید. در صورتی که عملیات backup گیری طبق این داکیومنت پیش برده‌اید این ابزار را در مرحله بکاپ‌گیری نصب کرده‌اید و نیازی به نصب دوباره آن ندارید.

3.برای بازیابی یا Restore کردن دیتابیس از دستور کلی زیر باید استفاده کنید:

 mongorestore --uri="mongodb://{user_admin}:{user_password}{host}:{port}" /path/to/extract/backup

برای جایگذاری هاست (آدرس خارجی) و پورت (پورت خارج از کلاستر) به صفحه اطلاعات عمومی اپ Mongodb خود در داخل کنسول بروید

نمونه دستور بعد از جایگذاری آدرس خارجی و پورت خارج از کلاستر:
mongorestore --uri="mongodb://{user_admin}:{user_password}@8d33e042-7452-44b3-b04b-f44272767c07.hsvc.ir:31882" ./home/hamravesh/backups/{backupfilename}

در صورت موفقیت‌آمیز Restore کردن دیتا باید در خروجی چنین چیزی را ببینید:

در صورتی که دیتابیس و collection خاصی قراره restore کنید باید از آپشن nslnclude -- استفاده کنید اگر فرض بگیریم دیتابیس admin و نام collection شما accounts می باشد:

mongorestore --uri="mongodb://{user_admin}:{user_password}@{host}:{port}" --nsInclude="admin.accounts" /home/esmaeil/backup
هشدار :

directory or file to restore: در این حالت باید مسیری که انتخاب میشه برای Restore کردن دیتا تا قبل از backupfilename نام باشد (backupfilename در اینجا admin می باشد چون از دیتابیس admin بکاپ گرفته شده است)

نکته اول : در صورتی که بکاپ به‌صورت gzip– باشد می‌توانید از دستور زیر استفاده کنید:
mongorestore --gzip --archive=/path/to/backup/directory --db backupfilename

نکته دوم : در صورتی که پسوند فایل بکاپ به صورت dump. بود می توانید از دستور زیر استفاده کنید:
$ mongorestore --uri="mongodb://{user_admin}:{user_password}@{host}:{port}" --archive=example.dump