Skip to main content

جابه‌جایی داده‌های پستگرس به دارکوب

مقدمه

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

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

ساخت اپ پستگرس در دارکوب

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

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

برای این کار ما از ابزار pg_dump استفاده می‌کنیم که یک CLI برای بکاپ گرفتن از پستگرس است. pg_dump می‌تواند‍ بکاپ را به شکل یک فایل SQL یا یک آرشیو tar ایجاد کند. دستور زیر را در سیستمی که از طریق شبکه به پستگرس دسترسی دارد اجرا کنید:

POSTGRES_DB=my_db_name
POSTGRES_USER=postgres
POSTGRES_ADDRESS=127.0.0.1
pg_dump -h $POSTGRES_ADDRESS -U $POSTGRES_USER $POSTGRES_DB > my_backup.sql

توضیحات:

  • اسم دیتابیسی که قرار است بکاپ گرفته شود با POSTGRES_DB مشخص شده است.
  • نام کاربری که می‌خواهیم با آن به پستگرس متصل شویم را با POSTGRES_USER مشخض می‌کنیم. توجه کنید که این کاربر باید دسترسی خواندن به دیتابیس POSTGRES_DB داشته باشد.
  • آدرس دیتابیس POSTGRES_ADDRESS است که باید از جایی که دستور را اجرا می‌کنید قابل دسترسی باشد. در این مثال چون از سیستم لوکال بکاپ می‌گیریم نیازی به استفاده از آپشن -h و متغیر POSTGRES_ADDRESS نیست. در غیر این صورت باید حتما آدرس مشخص شود.

آپشن‌های دیگری هم برای این ابزار موجود است که ‌می‌توانید با مراجعه به مستندات آن از آن‌ها آگاه شوید.

دستور فوق به شکل SQL بکاپ را در فایل my_backup.sql می‌ریزد. با داشتن این فایل به سراغ بازیابی آن در دارکوب می‌رویم.

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

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

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

برای بازیابی از psql استفاده می‌کنیم:

POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_ADDRESS=<hamravesh_address>
POSTGRES_PORT=<port>
psql -p $POSTGRES_PORT -U $POSTGRES_USER -d $POSTGRES_DB -h $POSTGRES_ADDRESS < my_backup.sql

متغیرهای این دستور هم مانند قسمت قبل هستند با این تفاوت که این بار برای پستگرس دارکوب هستند. POSTGRES_ADDRESS همان آدرس خارجی است بدون پورت. پورت را به شکل جدا در متغیر POSTGRES_PORT تعریف کرده‌ایم. می‌توانید از دستوری که در بخش "PSQL Command" در پنل دارکوب نوشته شده هم استفاده کنید. فایل my_backup.sql همان فایلی است که در قسمت قبل ساختیم. در پایان و بعد اتمام بازیابی داده‌ها توصیه می‌شود برای مسايل امنیتی، دوباره دسترسی از طریق اینترنت را غیرفعال کنید.