برنامه نویسی

استفاده از شکاف تکرار منطقی wal2json در GBase 8c

1. تنظیمات پارامتر

برای استفاده از تکرار منطقی wal2json، پارامترهای زیر باید تنظیم شوند:

wal_level = logical
enable_slot_log = on
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تنظیمات wal_level به logical به این معنی که لاگ WAL از تکرار منطقی پشتیبانی می کند. در صورت نیاز به رمزگشایی آماده به کار، تنظیم کنید enable_slot_log به on روی سرور اصلی مربوطه

2. استفاده از Logical Replication Slot

2.1 ایجاد یک شکاف تکرار منطقی

در اینجا نمونه ای از ایجاد یک شکاف تکرار منطقی به نام آورده شده است test_slot، با استفاده از افزونه شکاف تکرار wal2json:

SELECT pg_create_logical_replication_slot('test_slot', 'wal2json');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2.2 جستجوی شکاف تکرار منطقی

SELECT * FROM pg_replication_slots;
SELECT pg_get_replication_slots();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

این PG_REPLICATION_SLOTS view اطلاعاتی در مورد شکاف تکرار ارائه می دهد.

نام تایپ کنید شرح
slot_name text نام شکاف تکرار.
plugin text نام افزونه خروجی مربوط به شکاف تکرار منطقی است.
slot_type text نوع شکاف تکرار.
physical: اسلات تکثیر فیزیکی.
logical: شکاف تکرار منطقی.
datoid oid OID پایگاه داده که در آن شکاف تکرار قرار دارد.
database name نام پایگاه داده ای که شکاف تکرار در آن قرار دارد.
active boolean اینکه آیا شکاف تکرار فعال است یا خیر.
t (درست): بله.
f (نادرست): خیر.
xmin xid اولین شناسه تراکنش که باید توسط شکاف تکرار حفظ شود.
catalog_xmin xid اولین شناسه تراکنش شامل جداول سیستم که باید حفظ شوند.
restart_lsn text اولین مکان فیزیکی xlog مورد نیاز شکاف تکرار.
dummy_standby boolean اینکه انتهای راه دور شکاف تکرار در حالت آماده به کار باشد.
t (درست): بله.
f (نادرست): خیر.
confirmed_flush text برای اسلات های تکرار منطقی، موقعیت ثبت توسط مشتری تایید می شود.

2.3 حذف یک شکاف تکرار منطقی

SELECT pg_drop_replication_slot('test_slot');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2.4 رمزگشایی شکاف تکرار

دو راه برای رمزگشایی شکاف تکرار وجود دارد: بدون پیشبرد شکاف (بنابراین دفعه بعد می‌توانید همان داده‌ها را دوباره بازیابی کنید) و با پیشبرد شکاف.

  • رمزگشایی بدون پیشبرد شکاف:
  SELECT pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • رمزگشایی و پیشبرد اسلات:
  SELECT pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال:

یک جدول بسازید و داده ها را وارد کنید:

postgres=# create table t1(id int, c1 int);
CREATE TABLE
postgres=# insert into t1 values (1,1);
INSERT 0 1
postgres=# insert into t1 values (2,2);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رمزگشایی و پیشبرد شکاف منطقی:

SELECT pg_logical_slot_get_changes('test_slot', NULL, NULL);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

رمزگشایی بدون پیشبرد شکاف منطقی:

توضیحات تصویر

اگر هیچ رکوردی وجود نداشته باشد، طبیعی است زیرا شکاف قبلاً پیشرفته شده است. تغییرات جدید داده در نتایج ظاهر می شود.

3. نظارت بر شکاف های تکرار منطقی

SELECT
  slot_name,
  database AS datname,
  plugin,
  slot_type,
  datoid,
  database,
  active,
  xmin,
  catalog_xmin,
  restart_lsn,
  pg_size_pretty(pg_xlog_location_diff(
    CASE
      WHEN pg_is_in_recovery() THEN pg_last_xlog_receive_location()
      ELSE pg_current_xlog_location()
    END,
    restart_lsn
  )) AS delay_lsn_bytes,
  dummy_standby,
  confirmed_flush
FROM pg_replication_slots;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عدم پیشبرد شکاف تکرار مانع از پاکسازی خودکار گزارش‌های WAL توسط GBase می‌شود. تجمع لاگ ها فضای دیسک محلی را اشغال می کند. پرس و جوی SQL بالا کمک می کند تا با بررسی تعداد بایت ها بین LSN مورد نیاز شکاف منطقی فعلی و آخرین LSN تعیین شود که آیا باید شکاف تکرار را پیش برد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا