Skip to main content

مهاجرت به سرویس دیتابیس

اگر در خارج از همروش دیتابیس پوستگرسی دارید, می‌توانید آن را به همروش انتقال دهید و از مزایای دیتابیس مدیریت شده همروش بهره‌مند شوید. در این مقاله قصد داریم تا نحوه انتقال را شرح دهیم.

مهاجرت به وسیله dump یا Continuous Migration

به طور کلی برای مهاجرت و انتقال از یک دیتابیس به دیتابیس دیگر, دو راهکار وجود دارد. یکی گرفتن dump از دیتابیس که در واقع یک اسنپ شات از یک لحظه دیتابیس می‌باشد. این بدین معنی است که در صورتی که بعد از تمام شدن فرایند dump دیتای جدیدی به دیتابیس قبلی شما اضافه شود, این دیتا به دیتابیس جدید منتقل نخواهد شد و دیتا در واقع تا زمان پایان فرایند dump به دیتابیس منتقل خواهد شد. بنابراین اگر قصد انتقال به روش dump را دارید, باید تمام اتصالات به دیتابیس مبدا را قطع نمایید و به طور کلی دیتابیس مبدا را در حالت افلاین قرار دهید تا هیچ تراکنش جدیدی بر روی آن انجام نشود. روش دیگر روش Continuous migration می‌باشد که در آن نیاز به یک یوزر با دسترسی superuser در مبدا داریم. دیتابیس مقصد به وسیله این یوزر به دیتابیس مبدا متصل می‌گردد و با دیتابیس مبدا sync می‌گردد. بدین معنی که تا زمانی که این اتصال قطع نشده است, تمامی تراکنش‌های دیتابیس مبدا, به دیتابیس مقصد نیز منتقل می‌گردد. در ادامه با نحوه اینکار بیشتر آشنا خواهیم شد.

پیشنیاز‌ها برای Continuous Migration

عمل Continuous migration یا مهاجرت پیوسته در پوستگرس توسط مفهومی به نام logical replication انجام می‌شود. برای اینکه logical replication را در دیتابیس مبدا فعال کنید و همچنین اجازه مهاجرت داده را بدهید, نیاز است موارد زیر را انجام دهید.

ساخت یوزر با دسترسی superuser

همانطور که گفته شد, بر خلاف dump, در Continuous migration نیاز به یوزر با سطح دسترسی superuser داریم. با دستور زیر می‌توانید یوزر با دسترسی superuser را بسازید.

CREATE USER <YOUR USERNAME> WITH SUPERUSER ENCRYPTED PASSWORD 'YOUR PASSWORD';

در صورتی هم یوزر با دسترسی superuser دارید دیگر نیازی به دستور بالا نیست و با یوزرنیم و رمز عبور همان یوزر, می‌توانید مهاجرت را انجام دهید.

در صورتی هم که یوزر با دسترسی superuser ندارید اما یوزری دارید که دسترسی‌های زیر را دارد, می‌توانید مهاجرت را با dump انجام دهید. (اما باید در این حین, دیتابیس مبدا را به حالت افلاین ببرید تا تراکنشی بر روی آن انجام نشود.)

  1. دسترسی LOGIN
  2. دسترسی select بر روی تمام table ها
  3. دسترسی select بر روی sequence های دیتابیس

فعال‌سازی دسترسی خارجی و IP و PORT برای دیتابیس

در حال حاضر تمامی مهاجرت‌ها (چه دیتابیس مبدا در همروش باشد و چه در خارج همروش) نیاز به دسترسی خارجی دارند, اگر دیتابیس مبدا شما در همروش قرار دارد می‌توانید گزینه دسترسی عمومی را برای آن فعال کنید, در صورتی هم که دیتابیس در همروش قرار ندارد, دسترسی عمومی را فعال نمایید و آدرس و پورت دیتابیستان را در فرم انتقال داده وارد نمایید.

فعال‌سازی اجازه دسترسی خارجی از پوستگرس

بعد از اینکه IP یا ادرس host و PORT دیتابیس مبدا را مشخص نمودید, لازم است تغییراتی را در پوستگرس بدهید تا هم اجازه Continuous Migration و هم اجازه اتصال به دیتابیس مبدا را بدهد. اول از همه با دستور زیر مقدار listen_address را چک نمایید.

SHOW listen_address;

اگر این مقدار برابر با * نبود, لازم است مقدار آن را به * تغییر دهید و سپس دیتابیس را ریستارت نمایید. با دستور زیر می‌توانید این کار را انجام دهید. مد نظر داشته باشید با فعال کردن این مورد و مورد فعال سازی دسترسی خارجی IP و PORT برای دیتابیس, امکان اتصال به دیتابیس شما برای همگان از خارج فعال می‌شود, بنابراین مدنظر داشته باشید که username و password های مناسب برای همه یوزرها به درستی و با امنیت کافی معین شده باشد.

ALTER SYSTEM SET listen_addresses = '*';

مورد دیگری که باید انجام دهید, اجازه دسترسی از طریق فایل pg_hba.conf است. باید دو خط زیر به این فایل اضافه شود تا اجازه دسترسی و همچنین replication را به یوزر شما بدهد. برای اینکه آدرس فایل pg_hba.conf را پیدا نمایید می‌توانید از دستور زیر استفاده نمایید.

SHOW hba_file;

بعد از این مورد می‌توانید فایل pg_hba.conf را تغییر داده و دو خط زیر را به آن اضافه نمایید.

host all all 0.0.0.0/0 md5

host replication all 0.0.0.0/0 md5

مورد آخری نیز که باید مد نظر داشته باید wal_level است, برای انتقال لازم است که wal_level به logical تغییر یابد. مقدار فعلی آن را می‌توانید توسط دستور زیر ببینید.

SHOW wal_level;

در صورتی که مقدار آن برابر با logical نبود, می‌توانید با دستور زیر مقدار‌ آن را تغییر دهید.

ALTER SYSTEM SET wal_level = logical;

اگر تغییری در این مراحل, لازم است که دیتابیس خود را ریستارت نمایید. با دو دستور زیر دیتابیس شما ریستارت می‌شود.

sudo service postgresql stop

sudo service postgresql start

بعد از اینکه تمام موارد را را انجام دادید, می‌توانید آدرس و پورت و نام کاربری و پسورد دیتابیس خود را در بخش انتقال داده وارد نمایید و دکمه بررسی سازگاری را فشار دهید. بعد از این مورد و مشخص کردن منابع دیتابیستان و گزینه ساخت کلاستر دیتابیس, عملیات انتقال آغاز می‌شود. هنگامی که درصد syncing برابر با 100 درصد شد و گزینه جداسازی فعال شد, می‌توانید بر روی گزینه جداسازی کلیک نمایید. با کلیک بر روی این گزینه, عملیات sync شدن دیتا تمام می‌شود و دیگر از آن لحظه به بعد داده‌های جدید در دیتابیس مبدا به دیتابیس جدید شما منتقل نمی‌شود. بنابراین توصیه می‌شود قبل از کلیک بر روی گزینه جداسازی, تمامی کانکشن‌های خود را به دیتابیس قبلی قطع نموده و به دیتابیس جدید وصل نمایید.