مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۱ سال پیش

Streaming Replication در پایگاه داده PostgreSQL


Replication یک ویژگی قدرتمند در PostgreSQL است که امکان Real time replication  را در چندین سرور فراهم می کند. این یک نوع Replication ناهمزمان است، به این معنی که فرآیند Replication به طور مداوم در پس‌زمینه بدون انتظار برای انجام تراکنش‌ها انجام می‌شود. هدف اصلی Streaming Replication، اطمینان از دسترسی بالا(HA) و تحمل خطا، و همچنین تسهیل (load balancing) برای بارهای کاری سنگین خواندنی است.

معرفی معماری پایگاه داده Postgresql

Streaming Replication چگونه کار می کند:

در PostgreSQL، Streaming Replication شامل یک سرور اصلی و یک یا چند سرور آماده به کار(Standby) است. سرور اولیه عملیات نوشتن را پردازش می‌کند و سپس تغییرات (یا گزارش‌های پیش‌نویس، که به عنوان WAL نیز شناخته می‌شود) را به سرورهای آماده به کار می‌فرستد، که تغییرات را در نسخه‌های محلی پایگاه داده اعمال می‌کنند. تکثیر یک طرفه است – داده ها فقط از سرور اصلی به سرورهای آماده به کار جریان می یابد.

الزامات برای Streaming Replication:

برای تنظیم Streaming Replication در یک Cluster Postgresql، باید:

تنظیمات primar_conninfo را در فایل postgresql.conf در سرورهای آماده به کار پیکربندی کنید و اطلاعات اتصال را برای سرور اصلی مشخص کنید.

احراز هویت و مجوزها را در سرور اصلی تنظیم کنید تا به سرورهای آماده به کار اجازه اتصال و دریافت تغییرات WAL را بدهد.

wal_level سرور اولیه را به صورت replica (PostgreSQL 9.6 و جدیدتر) یا hot_standby (PostgreSQL 9.5 و نسخه‌های قبلی) پیکربندی کنید، که میزان اطلاعات ثبت‌شده برای اهداف تکراری را کنترل می‌کند.

تنظیمات max_wal_senders را در فایل postgresql.conf در سرور اصلی تعیین کنید تا حداکثر تعداد فرآیندهای فرستنده WAL همزمان تعیین شود. این باید حداقل روی تعداد سرورهای آماده به کار در تنظیمات شما تنظیم شود.

مزایای Streaming Replication:

Streaming Replication دارای چندین مزیت است، از جمله:

در دسترس بودن بالا: اگر سرور اصلی از کار بیفتد، می‌توان یکی از سرورهای آماده به کار را ارتقا داد تا به سرور اصلی جدید تبدیل شود و حداقل زمان خرابی و از دست دادن داده را تضمین کند.

مقیاس پذیری خواندن: از آنجا که پرس و جوهای فقط خواندنی را می توان در سرورهای آماده به کار بارگذاری کرد، تکرار جریان می تواند عملکرد را برای بارهای کاری سنگین بهبود بخشد.

Failover و Switchover: اگر نیاز به تعمیر و نگهداری در سرور اصلی دارید یا به سرور دیگری تغییر می‌دهید، Streaming Replication امکان failover  یا  switchover را فراهم می‌کند و اختلال در برنامه‌های شما را به حداقل می‌رساند.

مدیریت پشتیبان: از سرورهای آماده به کار می توان برای انجام پشتیبان گیری، کاهش بار روی سرور اصلی و ساده کردن زمان بندی پشتیبان استفاده کرد.

محدودیت های Streaming Replication:

در حالی که Streaming Replication در بسیاری از سناریوها سودمند است، محدودیت هایی دارد:

مقیاس‌پذیری نوشتن: بارهای کاری سنگین ممکن است همچنان با محدودیت ظرفیت سرور اصلی مواجه شوند، زیرا همه عملیات نوشتن باید روی سرور اصلی انجام شود.

سازگاری پرس و جو: به دلیل ماهیت ناهمزمان Streaming Replication ، ممکن است تاخیر کمی در انتشار تغییرات در سرورهای آماده به کار وجود داشته باشد. این بدان معناست که پرس و جوهای اجرا شده در سرورهای آماده به کار ممکن است همیشه آخرین داده های موجود در سرور اصلی را برنگردانند.

تغییرات DDL: هر گونه تغییر در طرح پایگاه داده (به عنوان مثال، دستورات CREATE، ALTER یا DROP) باید در سرور اصلی اجرا شود و ممکن است باعث تداخل یا تاخیر در تکرار شود.

در نتیجه، Streaming Replication در PostgreSQL یک تکنیک قدرتمند برای دستیابی به دسترسی بالا، تحمل خطا، و مقیاس پذیری خواندن است. درک مزایا، محدودیت ها و الزامات آن به شما کمک می کند تا یک زیرساخت قوی PostgreSQL را طراحی و حفظ کنید.

جهت دریافت خدمات پایگاه داده Postgresql با ما در ارتباط باشید.

streaming replicationpostgresqlپستگرسمشاوره postgresqlمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید