جابهجایی دادههای 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