Cara mengkonfigurasi replikasi streaming postgresql 12 di centos 8

Cara mengkonfigurasi replikasi streaming postgresql 12 di centos 8

PostgreSQL Database mendukung beberapa solusi replikasi untuk membangun aplikasi yang dapat disalahgunakan, dapat diukur, dan toleran terhadap kesalahan, salah satunya adalah Log Write-Ahead (Wal) Pengiriman. Solusi ini memungkinkan server siaga diterapkan menggunakan pengiriman log berbasis file atau replikasi streaming, atau jika memungkinkan, kombinasi dari kedua pendekatan.

Dengan streaming replikasi, server database siaga (Slave Replication) dikonfigurasi untuk terhubung ke server master/primer, yang streaming Wal catatan ke siaga saat mereka dihasilkan, tanpa menunggu Wal file untuk diisi.

Secara default, replikasi streaming tidak sinkron di mana data ditulis ke server siaga setelah transaksi dilakukan di server utama. Ini berarti bahwa ada penundaan kecil antara melakukan transaksi di server master dan perubahan yang terlihat di server siaga. Salah satu kelemahan dari pendekatan ini adalah bahwa jika server master macet, setiap transaksi yang tidak berkomitmen tidak dapat direplikasi dan ini dapat menyebabkan kehilangan data.

Panduan ini menunjukkan cara mengatur a PostgreSQL 12 Replikasi streaming master-standby Centos 8. Kami akan menggunakan "slot replikasi”Untuk siaga sebagai solusi untuk menghindari server master dari daur ulang lama Wal segmen sebelum siaga menerimanya.

Perhatikan bahwa dibandingkan dengan metode lain, slot replikasi hanya mempertahankan jumlah segmen yang diketahui diperlukan.

Lingkungan Pengujian:

Panduan ini mengasumsikan Anda terhubung ke server basis data master dan siaga Anda sebagai root via Ssh (menggunakan Sudo Perintah jika perlu jika Anda terhubung sebagai pengguna normal dengan hak administrasi):

Server Database Master PostgreSQL: 10.20.20.9 PostgreSQL Standby Database Server: 10.20.20.8 

Kedua server database harus dimiliki PostgreSQL 12 Diinstal, jika tidak, lihat: Cara menginstal Postgresql dan Pgadmin di Centos 8.

Catatan: PostgreSQL 12 Dilengkapi dengan perubahan besar pada implementasi replikasi dan konfigurasi seperti penggantian pemulihan.conf dan konversi pemulihan.conf Parameter ke Parameter Konfigurasi PostgreSQL normal, membuatnya lebih mudah untuk mengonfigurasi replikasi cluster.

Langkah 1: Mengkonfigurasi Server PostgreSQL Master/Primary Database

1. Pada server master, beralih ke akun Sistem Postgres dan konfigurasikan alamat IP di mana server master akan mendengarkan untuk koneksi dari klien.

Dalam hal ini, kami akan menggunakan * artinya semua.

# su - postgres $ psql -c "ubah set sistem listen_addresses ke '*';" 

Itu Ubah set sistem Perintah SQL adalah fitur yang kuat untuk mengubah parameter konfigurasi server, langsung dengan kueri SQL. Konfigurasi disimpan di PostgreSQL.conf.mobil file terletak di root folder data (e.G /var/lib/pgsql/12/data/) dan baca tambahan untuk yang disimpan di PostgreSQL.conf. Tetapi konfigurasi di yang pertama diutamakan daripada yang ada di kemudian dan file terkait lainnya.

Konfigurasikan alamat IP di master postgresql

2. Kemudian buat peran replikasi yang akan digunakan untuk koneksi dari server siaga ke server master, menggunakan buat pengguna program. Dalam perintah berikut, -P bendera meminta kata sandi untuk peran baru dan -e menggemakan perintah yang dibuat oleh CreateSer dan dikirim ke server database.

# su -postgres $ createuser -replikasi -p -e replikator $ keluar 
Buat Pengguna Replikasi di PGMaster

3. Kemudian masukkan entri berikut di akhir /var/lib/pgsql/12/data/pg_hba.conf File Konfigurasi Otentikasi Klien dengan bidang database yang disetel ke replikasi seperti yang ditunjukkan pada tangkapan layar.

Replikator replikasi host 10.20.20.8/24 MD5 
Konfigurasikan otentikasi replikasi

4. Sekarang restart Postgres12 Layanan menggunakan perintah SystemCTL berikut untuk menerapkan perubahan.

# Systemctl restart postgresql-12.melayani 

5. Selanjutnya, jika Anda memiliki Firewalld Layanan berjalan, Anda perlu menambahkan layanan PostgreSQL di konfigurasi firewalld untuk memungkinkan permintaan dari server siaga ke master.

# firewall-cmd --add-service = postgresql --permanent # firewall-cmd ---eload 

Langkah 2: Membuat cadangan dasar untuk bootstrap server siaga

6. Selanjutnya, Anda perlu membuat cadangan dasar dari server master dari server siaga; Ini membantu bootstrap server siaga. Anda perlu menghentikan layanan PostgreSQL 12 di server siaga, beralih ke akun pengguna Postgres, cadangan direktori data (/var/lib/pgsql/12/data/), lalu hapus semuanya di bawahnya seperti yang ditunjukkan, sebelum mengambil cadangan dasar.

# Systemctl Stop PostgreSQL-12.Layanan # SU -Postgres $ cp -r/var/lib/pgsql/12/data/var/lib/pgsql/12/data_orig $ rm -rf/var/lib/pgsql/12/data/* 

7. Lalu gunakan pg_basebackup alat untuk mengambil cadangan dasar dengan kepemilikan yang tepat (pengguna sistem database i.e Postgres, dalam Postgres akun pengguna) dan dengan izin yang tepat.

Dalam perintah berikut, opsi:

  • -H - Menentukan host yang merupakan server master.
  • -D - Menentukan direktori data.
  • -U - Menentukan pengguna koneksi.
  • -P - memungkinkan pelaporan kemajuan.
  • -v - Mengaktifkan mode verbose.
  • -R - Mengaktifkan pembuatan konfigurasi pemulihan: membuat a bersiap.sinyal File dan Tambahkan Pengaturan Koneksi ke PostgreSQL.mobil.conf di bawah direktori data.
  • -X - Digunakan untuk memasukkan file log write-Ahead yang diperlukan (file WAL) di cadangan. Nilai aliran berarti streaming wal saat cadangan dibuat.
  • -C - Mengaktifkan pembuatan slot replikasi yang dinamai oleh opsi -s sebelum memulai cadangan.
  • -S - Menentukan nama slot replikasi.
$ pg_basebackup -h 10.20.20.9 -d/var/lib/pgsql/12/data -u replikator -p -v -r -x stream -c -s pgstandby1 $ keluar 
Pencadangan dasar dari server master

8. Saat proses cadangan dilakukan, direktori data baru di server siaga harus terlihat seperti itu di tangkapan layar. A bersiap.sinyal dibuat dan pengaturan koneksi ditambahkan ke PostgreSQL.mobil.conf. Anda dapat mendaftarkan isinya menggunakan perintah LS.

# ls -l/var/lib/pgsql/12/data/ 
Verifikasi direktori data cadangan

Seorang budak replikasi akan berjalan di “Siaga panasMode jika hot_standby Parameter diatur ke ON (nilai default) di PostgreSQL.conf dan ada a bersiap.sinyal File hadir di direktori data.

9. Sekarang kembali ke server master, Anda harus dapat melihat slot replikasi dipanggil pgstandby1 Saat Anda membuka pg_replication_slots Lihat sebagai berikut.

# su - postgres $ psql -c "pilih * dari pg_replication_slots;" $ keluar 
Buat slot replikasi

10. Untuk melihat pengaturan koneksi yang ditambahkan di PostgreSQL.mobil.conf file, gunakan perintah CAT.

# CAT/VAR/LIB/PGSQL/12/DATA/POSTGRESQL.mobil.conf 
Lihat Pengaturan Koneksi

11. Sekarang mulai operasi basis data normal di server siaga dengan memulai layanan PostgreSQL sebagai berikut.

# Systemctl Mulai postgresql-12 

Langkah 3: Menguji replikasi streaming postgresql

12. Setelah koneksi dibuat dengan sukses antara master dan siaga, Anda akan melihat a Wal Proses penerima di server siaga dengan status streaming, Anda dapat memeriksa ini menggunakan PG_STAT_WAL_RECEIVER melihat.

$ psql -c "\ x" -c "Pilih * dari pg_stat_wal_receiver;" 
Periksa proses penerima Wal

dan yang sesuai Wal proses pengirim di server master/primer dengan keadaan streaming dan a sync_state dari async, Anda dapat memeriksa tampilan pg_stat_replication pg_stat_replication ini.

$ psql -c "\ x" -c "Pilih * dari pg_stat_replication;" 
Periksa proses pengirim wal di master

Dari tangkapan layar di atas, replikasi streaming tidak sinkron. Di bagian selanjutnya, kami akan menunjukkan cara secara opsional mengaktifkan replikasi sinkron.

13. Sekarang uji jika replikasi berfungsi dengan baik dengan membuat database pengujian di server master dan periksa apakah ada di server siaga.
[master] postgres =# Buat tecmint basis data;
[siaga] postgres =# \ l

Replikasi streaming tes

Opsional: Mengaktifkan replikasi sinkron

14. Replikasi sinkron menawarkan kemampuan untuk melakukan transaksi (atau menulis data) ke database utama dan siaga/replika secara bersamaan. Ini hanya menegaskan bahwa transaksi berhasil ketika semua perubahan yang dilakukan oleh transaksi telah ditransfer ke satu atau lebih server siaga sinkron.

Untuk mengaktifkan replikasi sinkron, Synchronous_Commit juga harus diatur ke ON (yang merupakan nilai default, sehingga tidak perlu perubahan apa pun) dan Anda juga perlu mengatur synchronous_standby_names parameter ke nilai yang tidak kosong. Untuk panduan ini, kami akan mengaturnya untuk semua.

$ pSQL -C "ALTER SISTEM SET SYNCHRONOUS_STANDBY_NAMES TO '*';" 
Tetapkan nama siaga sinkronisasi di master

15. Kemudian muat ulang layanan PostgreSQL 12 untuk menerapkan perubahan baru.

# SystemCTL Reload PostgreSQL-12.melayani 

16. Sekarang saat Anda menanyakan Wal Proses pengirim di server utama sekali lagi, itu harus menunjukkan keadaan streaming dan a sync_state dari sinkronisasi.

$ psql -c "\ x" -c "Pilih * dari pg_stat_replication;" 
Periksa proses pengirim wal di master

Kami telah sampai di akhir panduan ini. Kami telah menunjukkan cara mengatur PostgreSQL 12 Replikasi streaming basis data master-standby Centos 8. Kami juga membahas cara mengaktifkan replikasi sinkron di cluster database PostgreSQL.

Ada banyak penggunaan replikasi dan Anda selalu dapat memilih solusi yang memenuhi lingkungan TI Anda dan/atau persyaratan khusus aplikasi. Untuk detail lebih lanjut, buka server siaga-pengiriman log di dokumentasi PostgreSQL 12.