پیشرفت‌های جدید در replication منطقی Postgres

چرا مهم است

اگر با replication منطقی در Postgres کار می‌کنی، این مقاله به تو نشان می‌دهد که چقدر پیشرفت کرده‌ایم و چه چیزهایی هنوز نیاز به کار دارند. این اطلاعات می‌تواند به تو در تصمیم‌گیری‌های طراحی و پیاده‌سازی کمک کند.

قبل از خواندن، این‌ها را بدان۲ مفهوم
release candidate

نسخه‌ای از نرم‌افزار که تقریباً آماده انتشار است و برای یافتن مشکلات نهایی منتشر می‌شود.

بیشتر درباره این مفهوم

logical replication

فرآیندی که در آن تغییرات سطح داده‌ها بین database‌ها تکرار می‌شود، بدون نیاز به کپی کامل داده‌ها.

بیشتر درباره این مفهوم

در سال ۲۰۱۴، اگر می‌خواستی سرورهای Postgres را در چند قاره داشته باشی که هر کدام قابلیت نوشتن و اشتراک‌گذاری داده‌ها را داشته باشند، تنها راه‌حل جدی open source، BDR از 2ndQuadrant بود. این راه‌حل نیاز به PostgreSQL 9.4 اصلاح‌شده و یک پلاگین داشت، به این معنی که به سروری نیاز بود که Postgres نبود. طی ده سال کار بر روی replication منطقی، بیشتر نیازهای BDR به سرور اصلی منتقل شده است. در این مقاله، با استفاده از Postgres 19 release candidate 1 و ابزار pg_auto_failover، همان نوع سیستم را می‌سازیم تا ببینیم این پیشرفت‌های تدریجی ما را تا کجا رسانده و چه چیزهایی باقی مانده است.

این مقاله آخرین بخش از سری مقالاتی درباره replication منطقی است و به تنهایی نیز قابل فهم است. در بخش اول، سیستمی از نوع hub-and-workers برای افزایش قابلیت نوشتن ساختیم، در بخش دوم چندین database را در یک انبار داده تجمیع کردیم و در بخش سوم یک ارتقاء بزرگ بدون توقف انجام دادیم.

در این مقاله، پنج منطقه با استفاده از گروه‌های pg_auto_failover و replication منطقی اصلی ساختیم و با کشتن primary‌ها تحت بار آن‌ها را آزمایش کردیم. هر ردیف تأیید شده زنده ماند، هر منطقه با همان ردیف‌ها به پایان رسید و یک منطقه پنجم با پنج دستور و بدون توقف به سیستم در حال اجرا پیوست. هسته اکنون کارهای سخت را انجام می‌دهد: فیلترهای ردیف، جلوگیری از حلقه، slot‌های ایمن در مقابل failover، همگام‌سازی sequence و شمارش تضادها. هنوز DDL را تکرار نمی‌کند، بنابراین تغییرات schema یک توقف کوتاه دارند یا از pglogical یا pgcopydb استفاده می‌شود وقتی توقف گزینه‌ای نیست. همچنین تضادها را حل نمی‌کند یا شناسه‌های یکتا به چند نویسنده نمی‌دهد و ما با ساختار از هر دو اجتناب می‌کنیم.

نکته کلیدی

با استفاده از Postgres 19 و pg_auto_failover می‌توانی سیستم‌های replication پیچیده‌ای بسازی. اما هنوز برخی محدودیت‌ها مثل عدم تکرار DDL و حل نکردن تضادها وجود دارد که باید در طراحی سیستم‌هایت در نظر بگیری.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)