Menjelaskan replikasi dan dekode logis

Selesai

Parameter wal_level memungkinkan Anda menentukan kadar informasi yang harus ditulis ke log. Ada dua opsi: LOGICAL dan REPLICA. REPLICA adalah default. Parameter ini ditentukan ketika server dimulai.

Ketersediaan tinggi

High availability adalah layanan Azure Database for PostgreSQL yang menyediakan server siaga yang siap mengambil alih jika terjadi kegagalan pada server langsung Anda. High availability dalam server fleksibel Azure Database for PostgreSQL menggunakan replikasi untuk secara otomatis memperbarui server siaga dengan perubahan data.

Ketika Anda mengonfigurasi high availability untuk server fleksibel Azure Database for PostgreSQL, server utama ditempatkan dalam satu zona ketersediaan, dan server siaga dibuat di zona ketersediaan berbeda. Data direplikasi dari server utama ke server siaga menggunakan replikasi streaming PostgreSQL dalam mode sinkron.

Setiap zona ketersediaan berisi satu pusat data atau lebih. Zona ketersediaan memiliki pasokan listrik, sistem pendinginan, infrastruktur jaringan, dsb. menjadikan setiap zona tersebut independen. Tiga salinan file data dan file write-ahead log (WAL) disimpan di penyimpanan redundan lokal di setiap zona ketersediaan, menyediakan isolasi fisik antara server utama dan siaga. Jika satu zona ketersediaan gagal, dua zona lainnya kemungkinan akan terus berfungsi. Zona ketersediaan dalam suatu wilayah tersambung dengan jaringan serat cepat dengan latensi pulang-pergi yang kurang dari 2 milidetik.

Cuplikan layar memperlihatkan zona ketersediaan dalam suatu wilayah terhubung oleh jaringan serat cepat.

Catatan

Tidak semua wilayah memiliki zona ketersediaan.

Dengan high availability, data diduplikasi sepanjang waktu database digunakan, menyediakan salinan terbaru dari yang asli. Jika terjadi crash, replika tersebut dapat digunakan untuk menggantikan yang asli. Replikasi memiliki server utama dan server siaga. Server utama mengirim file log WAL ke server siaga yang menerima file log WAL.

Server siaga melaporkan kembali ke server utama dengan informasi seperti log write-ahead terakhir yang ditulisnya, dan posisi terakhir dihapus ke disk, dll. Untuk menentukan frekuensi minimum penerima WAL untuk mengirim kembali laporan, atur parameter wal_receiver_status_interval . Parameter max_replication_slots menentukan jumlah maksimum slot replikasi yang dapat didukung server. Ketika wal_level ditetapkan ke REPLICA, setidaknya max_replication_slots adalah satu, namun, rentang nilai yang diizinkan adalah antara dan 2 dan 262.143.

Parameter max_wal_senders menetapkan jumlah maksimum proses pengirim WAL.

Cuplikan layar memperlihatkan konsep arsitektur ketersediaan tinggi zona redundan.

Server utama dan siaga dipantau, tindakan yang tepat dilakukan untuk memulihkan masalah, termasuk memicu kegagalan ke server siaga. Berikut ini, mencantumkan status ketersediaan tinggi zona redundan:

  • Menginisialisasi - Dalam proses membuat server siaga baru.
  • Mereplikasi - Replikasi Data berada dalam status stabl dan sehat.
  • Sehat - Siaga sedang diperbarui oleh utama.
  • Failover - Server database utama sedang di-failover ke siaga.
  • Menghapus Siaga - Dalam proses menghapus server siaga.
  • Tidak Diaktifkan - High availability zona redundan tidak diaktifkan.

Anda dapat menambahkan ketersediaan tinggi ke server database yang ada. Jika Anda mengaktifkan dan menonaktifkan high availability pada server langsung, lakukan operasi saat aktivitas sederhana sedang berlangsung.

Dari portal Microsoft Azure:

  1. Buka server Azure Database for PostgreSQL Anda.
  2. Dari bagian Gambaran Umum, pilih Konfigurasi Anda saat ini. Bagian Komputasi + Penyimpanan akan ditampilkan.
  3. Pada bagian High availability, pilih kotak centang High availability (zona redundan) untuk mengaktifkan high availability. High availability tidak didukung untuk tingkat Burstable.

Penting untuk dicatat bahwa high availability merupakan opsi pemulihan bencana. Anda tidak dapat menggunakan server siaga untuk tujuan lainnya, seperti mengizinkan akses ke database baca-saja. Namun, Anda dapat mengonfigurasi replikasi antara dua server Azure Database for PostgreSQL menggunakan model penerbit dan pelanggan. Konfigurasi ini mempertahankan dua server dengan data yang direplikasi di antaranya. Kemudian Anda memiliki akses penuh ke server langganan dan dapat menggunakan database untuk tujuan apa pun. Anda mempraktikkan konfigurasi ini dalam latihan di akhir modul ini.

Melakukan decoding logis

Dekode logis juga menggunakan data yang dikirim ke log write-ahead. Seperti namanya, dekode logis mendekode entri dalam log write-ahead untuk membuatnya mudah dipahami. Semua perubahan INSERT, UPDATE, dan DELETE tersedia untuk dekode logis.

Decoding logis dapat digunakan untuk audit, analitik, atau alasan lain yang mungkin Anda minati untuk mengetahui apa yang berubah, dan kapan berubah.

Dekode logis mengekstrak perubahan dari semua tabel dalam database. Aktivitas ini berbeda dari replikasi karena tidak dapat mengirim perubahan ini ke instan PostgreSQL. Sebaliknya, ekstensi PostgreSQL adalah plugin untuk melakukan streaming perubahan.

Dekode logis memungkinkan isi log write-ahead didekodekan ke format yang mudah dipahami, yang dapat ditafsirkan tanpa pengetahuan struktur database. Azure Database for PostgreSQL mendukung dekode logis dan plugin wal2json, yang diinstal pada server Azure Database for Postgres.

Ekstensi lain juga dapat digunakan, seperti ekstensi pglogical yang memungkinkan replikasi streaming logis.

Cara menggunakan dekode logis, pada Parameter server, atur:

  • wal_level to LOGICAL
  • max_replication_slots = 10
  • max_wal_senders = 10

Server harus dihidupkan ulang setelah perubahan dibuat.

Cara menggunakan ekstensi pglogical dari portal Azure:

  1. Buka server Azure Database for PostgreSQL Anda.
  2. Pilih Parameter server, dan cari shared_preload_libraries. Dari kotak drop-down, pilih pglogical.
  3. Cari azure.extensions. Dari kotak drop-down, pilih pglogical.
  4. Untuk menerapkan perubahan, mulai ulang server.

Anda juga harus memberikan izin kepada pengguna admin untuk melakukan replikasi:

ALTER ROLE <adminname> WITH REPLICATION;

Untuk informasi selengkapnya, tinjau dokumentasi online dokumentasi ekstensi pglogical.

Dekode logis menghasilkan perubahan data sebagai aliran yang disebut slot replikasi logis.

  1. Setiap slot memiliki satu plugin output, yang dapat Anda tentukan.
  2. Setiap slot menyediakan perubahan hanya dari satu database, tetapi suatu database dapat memiliki beberapa slot.
  3. Setiap perubahan data biasanya dikeluarkan sebanyak satu kali tiap slotnya.
  4. Jika PostgreSQL dimulai ulang, slot dapat memancarkan kembali perubahan, yang perlu ditangani klien.
  5. Slot harus dipantau. Slot yang tidak dikonsumsi berpegang pada semua file WAL untuk perubahan yang tidak dikonsumsi. Situasi ini dapat menyebabkan penyimpanan penuh atau transaksi ID wraparound.