Membangun kembali replikasi logis setelah peningkatan besar - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membangun kembali replikasi logis setelah peningkatan besar

Sebelum Anda dapat melakukan upgrade versi utama dari untuk instance Postgre SQL DB yang diatur sebagai node penerbit untuk replikasi logis, Anda harus menghapus semua slot replikasi, bahkan yang tidak aktif. Kami menyarankan Anda mengalihkan sementara transaksi database dari node penerbit, menjatuhkan slot replikasi, meningkatkan dan kemudian membangun kembali dan memulai ulang replikasi.

Slot replikasi hanya di-hosting di simpul penerbit. Node SQL pelanggan RDS untuk Postgre dalam skenario replikasi logis tidak memiliki slot untuk turun, tetapi tidak dapat ditingkatkan ke versi utama sementara itu ditetapkan sebagai simpul pelanggan dengan berlangganan ke penerbit. Sebelum memutakhirkan node SQL pelanggan RDS untuk Postgre, lepaskan langganan dan node. Untuk informasi selengkapnya, lihat Mengelola slot replikasi logis untuk untuk Postgre SQL.

Menentukan bahwa replikasi logis telah terganggu

Anda dapat menentukan bahwa proses replikasi telah terganggu dengan menanyakan simpul penerbit atau simpul pelanggan, sebagai berikut.

Untuk memeriksa simpul penerbit
  • Gunakan psql untuk terhubung ke simpul penerbit, lalu buat kueri fungsi pg_replication_slots. Perhatikan nilai di kolom aktif. Biasanya, ini akan kembali t (benar), menunjukkan bahwa replikasi aktif. Jika kueri kembali f (salah), ini merupakan indikasi bahwa replikasi ke pelanggan telah berhenti.

    SELECT slot_name,plugin,slot_type,active FROM pg_replication_slots; slot_name | plugin | slot_type | active -------------------------------------------+------------------+-----------+-------- pgl_labdb_docs_labcb4fa94_docs_lab3de412c | pglogical_output | logical | f (1 row)
Untuk memeriksa simpul pelanggan

Pada simpul pelanggan, Anda dapat memeriksa status replikasi dengan tiga cara berbeda.

  • Lihat melalui SQL log Postgre pada node pelanggan untuk menemukan pesan kegagalan. Log dapat mengidentifikasi kegagalan dengan pesan yang menyertakan kode keluar 1, sebagaimana ditunjukkan berikut.

    2022-07-06 16:17:03 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 14610) exited with exit code 1 2022-07-06 16:19:44 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 21783) exited with exit code 1
  • Buat kueri fungsi pg_replication_origin. Hubungkan ke basis data pada simpul pelanggan menggunakan psql dan buat kueri fungsi pg_replication_origin, sebagai berikut.

    SELECT * FROM pg_replication_origin; roident | roname ---------+-------- (0 rows)

    Set hasil kosong berarti replikasi telah terganggu. Biasanya, Anda akan melihat output seperti berikut.

    roident | roname ---------+---------------------------------------------------- 1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)
  • Buat kueri fungsi pglogical.show_subscription_status sebagaimana ditunjukkan pada contoh berikut.

    SELECT subscription_name,status,slot_name FROM pglogical.show_subscription_status(); subscription_name | status | slot_name ---====----------------+--------+------------------------------------- docs_lab_subscription | down | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)

    Output ini menunjukkan bahwa replikasi telah terganggu. Statusnya adalah down. Biasanya, output menunjukkan status sebagai replicating.

Jika proses replikasi logis terganggu, Anda dapat membangun kembali replikasi dengan mengikuti langkah-langkah berikut.

Untuk membangun kembali replikasi logis antara simpul penerbit dan pelanggan

Untuk membangun kembali replikasi, pertama-tama Anda memutuskan sambungan pelanggan dari simpul penerbit, lalu membangun kembali langganan, seperti yang diuraikan dalam langkah-langkah ini.

  1. Hubungkan ke simpul pelanggan menggunakan psql, sebagai berikut.

    psql --host=222222222222.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
  2. Nonaktifkan langganan menggunakan fungsi pglogical.alter_subscription_disable.

    SELECT pglogical.alter_subscription_disable('docs_lab_subscription',true); alter_subscription_disable ---------------------------- t (1 row)
  3. Dapatkan identifier simpul penerbit dengan menanyakan pg_replication_origin, sebagai berikut.

    SELECT * FROM pg_replication_origin; roident | roname ---------+------------------------------------- 1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)
  4. Gunakan respons dari langkah sebelumnya dengan perintah pg_replication_origin_create untuk menetapkan pengenal yang dapat digunakan oleh langganan saat dibuat kembali.

    SELECT pg_replication_origin_create('pgl_labdb_docs_labcb4fa94_docs_lab3de412c'); pg_replication_origin_create ------------------------------ 1 (1 row)
  5. Aktifkan langganan dengan meneruskan namanya menggunakan status true, sebagaimana ditunjukkan dalam contoh berikut.

    SELECT pglogical.alter_subscription_enable('docs_lab_subscription',true); alter_subscription_enable --------------------------- t (1 row)

Periksa status simpul. Statusnya harus replicating sebagaimana ditunjukkan dalam contoh ini.

SELECT subscription_name,status,slot_name FROM pglogical.show_subscription_status(); subscription_name | status | slot_name -------------------------------+-------------+------------------------------------- docs_lab_subscription | replicating | pgl_labdb_docs_lab98f517b_docs_lab3de412c (1 row)

Periksa status slot replikasi pelanggan pada simpul penerbit. Kolom active slot harus kembali t (benar), menunjukkan bahwa replikasi telah dibuat kembali.

SELECT slot_name,plugin,slot_type,active FROM pg_replication_slots; slot_name | plugin | slot_type | active -------------------------------------------+------------------+-----------+-------- pgl_labdb_docs_lab98f517b_docs_lab3de412c | pglogical_output | logical | t (1 row)