نحوه به روزرسانی PostgreSQL 10 به 11
امروزه یکی از سختترین کارها هنگام کار کردن با PostgreSQL، پیدا کردن راه حلی برای آپگرید کردن است، برای انجام بروزرسانیها باید به روش هایی نظیر pg_upgrade، دامپینگ و بازیابی و یا استفاده از ابزارهای دیگری مانند Slony یا Bucardo فکر کنید، که البته هرکدام معایبی دارند.
حال چرا این اتفاق مشکلات وجود داشت؟ به خاطر اینکه راه حل PostgreSQL برای توزیع دادهها یا همان رپلیکیشن Replication بصورت اصطلاحا فیزیکی انجام میشد. نحوه عملکرد آن به این صورت است که: تغییرات را در سطح پایین بصورت بایت بایت انجام میدهد و یک کپی مشابه از پایگاه داده را در یک سرور دیگر ایجاد می کند. این روش هنگام به روز رسانی دارای معایبی نیز هست؛ مثلا شما به سادگی نمیتوانید در یک نسخه دیگر سرور یا معماری دیگری همانندسازی کنید.
حال اینجا است که PostgreSQL 10 تفاوتها را رقم میزند؛ با استفاده از این نسخه و هم چنین نسخه 11، PostgreSQL پیادهسازی رپلیکیشن را به صورت تکرار منطقی انجام میدهد که بر خلاف تکرار فیزیکی میتواند بین نسخههای مختلف و اصلی PostgreSQL همانندسازی (Replication) را انجام دهد.
در این مقاله خواهیم دید که Logical Replication چیست و اساس کار آن چگونه خواهد بود و در ادامهی این مطلب، آموزشی برای به روزرسانی PostgreSQL 10 به 11 یا حتی ۱۲ خواهیم داشت.
Logical Replication چیست؟
تکرار منطقی یا همان Logical Replication روشی است برای تکرار اشیا دادهها و تغییرات آنها، براساس هویت همانندساز آنها (معمولا یک کلید اصلی)، که مبتنی بر یک حالت انتشار و اشتراک است، جایی که یک یا چند subscriber در یک یا چند منتشرکننده مشترک هستند.
انتشار مجموعهای از تغییرات است که توسط جدول یا گروهی از جداول ایجاد میشود (همچنین به آن مجموعه تکرار نیز گفته میشود). به گرهای که یک انتشار در آن تعریف شده ناشر گفته میشود.
اشتراک یا subscription قسمت پایین دست تکرار منطقی است؛ گرهای که در آن اشتراک تعریف شده باشد به عنوان subscriber شناخته میشود و اتصال به دیتابیس دیگر و دریافت مجموعهای از انتشارات را فراهم میکند. Subscribe ها، داده هایی را از انتشاراتی که در آن مشترک میشوند جمع میکنند.
همانندسازی منطقی با معماریای شبیه به تکرار جریان فیزیکی ساخته شده است؛ که با عملیات اجرایی “WalSender” اجرا میشود. فرآیند walsender رمزگشایی منطقی WAL را آغاز میکند و پلاگین رمزگشایی منطقی استاندارد را بارگذاری میکند. این پلاگین تغییرات خوانده شده از WAL را به پروتکل تکرار منطقی تبدیل میکند و دادهها را مطابق مشخصات انتشار فیلتر میکند.
سپس دادهها به طور پیوسته با استفاده از پروتکل تکرار جریان به worker متقاضی داده میشوند که دادهها را در جداول محلی ترسیم میکند و تغییرات را در صورت دریافت، به ترتیب صحیح تراکنش اعمال میکند.
همانندسازی منطقی با گرفتن یک اسنپ شات از دادههای موجود در پایگاه دادهی ناشر و کپی کردن آن برای مشترکین شروع میشود. دادههای اولیه در جداول مشترک موجود، به صورت موازی از یک نوع خاص از فرآیند درخواست، اسنپ شات شده و کپی میشوند. که این فرآیند اسلات تکثیر موقتی برای خود میسازد و دادههای موجود را کپی میکند؛ پس از کپی کردن دادههای موجود، کاربر وارد حالت همگامسازی میشود، که تضمین میکند که جدول با استفاده از فرآیند تکرار منطقی استاندارد، با وجود هرگونه تغییری که در هنگام کپی دادهی اولیه رخ داده است، به حالت همگامسازی با روند اصلی اعمال میشود.
پس از این که هماهنگسازیها انجام شد، کنترل همانندسازی جدول به فرآیند اصلیای که همانندسازی در آن جا به صورت نرمال انجام میشود داده خواهد شد؛ در ادامه تغییرات در ناشر به subscriber ها و به صورت real-time ارسال میشود.
در ادامه این مطلب و پست بعدی میبینیم که چطور postgreSQL10 را به 11 ارتقا دهیم.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.