Cara Mengkonfigurasi Replikasi Streaming PostgreSQL 12 di CentOS 8

Cara Mengkonfigurasi Replikasi Streaming PostgreSQL 12 di CentOS 8

PostgreSQL Pangkalan data menyokong beberapa penyelesaian replikasi untuk membina aplikasi yang tinggi, berskala, tahan toleran, salah satunya adalah Tulis log (Wal) Penghantaran. Penyelesaian ini membolehkan pelayan siap sedia dilaksanakan menggunakan penghantaran log berasaskan fail atau replikasi streaming, atau jika mungkin, gabungan kedua-dua pendekatan.

Dengan replikasi streaming, pelayan pangkalan data siap sedia (replikasi) dikonfigurasi untuk menyambung ke pelayan induk/utama, yang mengalir Wal rekod ke siap sedia seperti yang dihasilkan, tanpa menunggu Wal fail yang akan diisi.

Secara lalai, replikasi streaming tidak segerak di mana data ditulis ke pelayan siap sedia selepas transaksi telah dilakukan pada pelayan utama. Ini bermakna terdapat kelewatan kecil antara melakukan transaksi di pelayan induk dan perubahan yang dapat dilihat di pelayan siap sedia. Satu kelemahan pendekatan ini adalah bahawa sekiranya pelayan induk terhempas, sebarang urus niaga yang tidak komited tidak boleh direplikasi dan ini boleh menyebabkan kehilangan data.

Panduan ini menunjukkan cara menubuhkan a PostgreSQL 12 Replikasi streaming master-standby di Centos 8. Kami akan menggunakan "slot replikasi"Untuk bersedia sebagai penyelesaian untuk mengelakkan pelayan induk daripada kitar semula lama Wal segmen sebelum siaga telah menerimanya.

Perhatikan bahawa berbanding dengan kaedah lain, slot replikasi hanya mengekalkan bilangan segmen yang diketahui diperlukan.

Persekitaran Ujian:

Panduan ini menganggap anda berhubung dengan pelayan pangkalan data tuan dan siap sedia sebagai akar melalui SSH (Gunakan Sudo Perintah jika perlu jika anda dihubungkan sebagai pengguna biasa dengan hak pentadbiran):

Pelayan Pangkalan Data Master PostgreSQL: 10.20.20.9 Pelayan Pangkalan Data Siap sedia PostgreSQL: 10.20.20.8 

Kedua -dua pelayan pangkalan data mesti ada PostgreSQL 12 Dipasang, jika tidak, lihat: Cara Memasang PostgreSQL dan PGADMIN di CentOS 8.

Catatan: PostgreSQL 12 Dilengkapi dengan perubahan besar kepada pelaksanaan replikasi dan konfigurasi seperti penggantian pemulihan.Conf dan penukaran pemulihan.Conf Parameter ke parameter konfigurasi PostgreSQL biasa, menjadikannya lebih mudah untuk mengkonfigurasi replikasi kluster.

Langkah 1: Mengkonfigurasi Pelayan Pangkalan Data Master/Primer PostgreSQL

1. Di pelayan induk, beralih ke akaun sistem postgres dan konfigurasikan alamat IP (es) di mana pelayan induk akan mendengar untuk sambungan dari klien.

Dalam kes ini, kita akan menggunakan * bermaksud semua.

# su - postgres $ psql -c "alter sistem set mendengar_addresses ke '*';" 

The Alter set sistem Perintah SQL adalah ciri yang kuat untuk menukar parameter konfigurasi pelayan, secara langsung dengan pertanyaan SQL. Konfigurasi disimpan di PostgreSQL.Conf.Auto fail yang terletak di akar folder data (e.g /var/lib/pgsql/12/data/) dan baca tambahan kepada mereka yang disimpan dalam PostgreSQL.Conf. Tetapi konfigurasi dalam bekas yang diutamakan terhadap orang -orang di kemudian hari dan lain -lain yang berkaitan.

Konfigurasikan alamat IP di Master PostgreSQL

2. Kemudian buat peranan replikasi yang akan digunakan untuk sambungan dari pelayan siap sedia ke pelayan induk, menggunakan createuser program. Dalam perintah berikut, -P Bendera meminta kata laluan untuk peranan baru dan -e Gembira arahan yang dihasilkan dan dihantar oleh CreateUser ke pelayan pangkalan data.

# Su -Postgres $ createUser --Replication -p -e replikator $ keluar 
Buat pengguna replikasi di PGMaster

3. Kemudian masukkan entri berikut pada akhir /var/lib/pgsql/12/data/pg_hba.Conf Fail Konfigurasi Pengesahan Pelanggan dengan medan pangkalan data ditetapkan ke replikasi seperti yang ditunjukkan dalam tangkapan skrin.

Replikasi Replikasi Hos 10.20.20.8/24 MD5 
Konfigurasikan pengesahan replikasi

4. Sekarang mulakan semula Postgres12 perkhidmatan menggunakan arahan SystemCtl berikut untuk menerapkan perubahan.

# Systemctl mulakan semula postgresql-12.perkhidmatan 

5. Seterusnya, jika anda mempunyai Firewalld perkhidmatan berjalan, anda perlu menambah perkhidmatan PostgreSQL dalam konfigurasi Firewalld untuk membenarkan permintaan dari pelayan siap sedia kepada tuan.

# Firewall-Cmd --Add-Service = PostgreSql --ParManent # Firewall-Cmd-Reload 

Langkah 2: Membuat sandaran asas ke bootstrap pelayan siap sedia

6. Seterusnya, anda perlu membuat sandaran asas pelayan induk dari pelayan siap sedia; ini membantu bootstrap pelayan siap sedia. Anda perlu menghentikan perkhidmatan PostgreSQL 12 pada pelayan siap sedia, beralih ke akaun pengguna Postgres, sandarkan direktori data (/var/lib/pgsql/12/data/), kemudian memadamkan segala -galanya di bawahnya seperti yang ditunjukkan, sebelum mengambil sandaran asas.

# Systemctl Stop PostgreSQL-12.Perkhidmatan # Su -Postgres $ Cp -R/Var/Lib/Pgsql/12/Data/Var/Lib/Pgsql/12/Data_orig $ rm -rf/var/lib/pgsql/12/data/* 

7. Kemudian gunakan pg_baseBackup alat untuk mengambil sandaran asas dengan pemilikan yang betul (pengguna sistem pangkalan data i.e Postgres, Di antara Postgres akaun pengguna) dan dengan kebenaran yang betul.

Dalam perintah berikut, pilihan:

  • -h - Menentukan tuan rumah yang merupakan pelayan induk.
  • -D - Menentukan direktori data.
  • -U - Menentukan pengguna sambungan.
  • -P - membolehkan pelaporan kemajuan.
  • -v - membolehkan mod verbose.
  • -R - membolehkan penciptaan konfigurasi pemulihan: mencipta a Bersedia.isyarat fail dan tambahkan tetapan sambungan ke PostgreSQL.Auto.Conf di bawah direktori data.
  • -X - digunakan untuk memasukkan fail log tulis yang diperlukan (fail Wal) dalam sandaran. Nilai aliran bermaksud menstrimkan wal sementara sandaran dibuat.
  • -C - membolehkan penciptaan slot replikasi yang dinamakan oleh pilihan -s sebelum memulakan sandaran.
  • -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 $ exit 
Sandaran asas pelayan induk

8. Apabila proses sandaran selesai, direktori data baru pada pelayan siap sedia kelihatan seperti itu dalam tangkapan skrin. A Bersedia.isyarat dibuat dan tetapan sambungan dilampirkan ke PostgreSQL.Auto.Conf. Anda boleh menyenaraikan kandungannya menggunakan arahan LS.

# ls -l/var/lib/pgsql/12/data/ 
Sahkan direktori data sandaran

Hamba replikasi akan berjalan di "Bersedia panas"Mod jika panas_standby parameter ditetapkan pada (nilai lalai) dalam PostgreSQL.Conf Dan ada Bersedia.isyarat fail yang terdapat dalam direktori data.

9. Sekarang kembali ke pelayan induk, anda sepatutnya dapat melihat slot replikasi yang dipanggil pgstandby1 semasa anda membuka pg_replication_slots Lihat seperti berikut.

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

10. Untuk melihat tetapan sambungan yang dilampirkan di PostgreSQL.Auto.Conf fail, gunakan arahan kucing.

# kucing/var/lib/pgsql/12/data/postgresql.Auto.Conf 
Lihat Tetapan Sambungan

11. Sekarang memulakan operasi pangkalan data biasa pada pelayan siap sedia dengan memulakan perkhidmatan PostgreSQL seperti berikut.

# Systemctl Mula PostgreSQL-12 

Langkah 3: Menguji replikasi streaming postgresql

12. Sebaik sahaja sambungan ditubuhkan dengan jayanya antara tuan dan siaga, anda akan melihat a Wal proses penerima di pelayan siap sedia dengan status streaming, anda boleh menyemaknya dengan menggunakan pg_stat_wal_receiver Lihat.

$ psql -c "\ x" -c "pilih * dari pg_stat_wal_receiver;" 
Periksa proses penerima wal

dan yang sepadan Wal proses pengirim di pelayan induk/utama dengan keadaan streaming dan a sync_state async, anda boleh menyemak pg_stat_stat_replication ini.

$ psql -c "\ x" -c "pilih * dari pg_stat_replication;" 
Semak Proses Pengirim Wal di Guru

Dari tangkapan skrin di atas, replikasi streaming tidak segerak. Di bahagian seterusnya, kami akan menunjukkan cara mengaktifkan replikasi segerak secara pilihan.

13. Sekarang ujian jika replikasi berfungsi dengan baik dengan membuat pangkalan data ujian di pelayan induk dan periksa sama ada ia wujud di pelayan siap sedia.
[Master] Postgres =# Buat pangkalan data Tecmint;
[siap sedia] postgres =# \ l

Ujian streaming replikasi

Pilihan: Membolehkan replikasi segerak

14. Replikasi segerak menawarkan keupayaan untuk melakukan transaksi (atau menulis data) ke pangkalan data utama dan siap sedia/replika serentak. Ia hanya mengesahkan bahawa urus niaga berjaya apabila semua perubahan yang dibuat oleh transaksi telah dipindahkan ke satu atau lebih pelayan siap sedia segerak.

Untuk membolehkan replikasi segerak, Synchronous_commit mesti juga ditetapkan ke ON (yang merupakan nilai lalai, oleh itu tidak memerlukan sebarang perubahan) dan anda juga perlu menetapkan Synchronous_standby_names parameter ke nilai yang tidak kosong. Untuk panduan ini, kami akan menetapkannya kepada semua.

$ psql -c "alter set sistem synchronous_standby_names ke '*';" 
Tetapkan nama siap sedia disegerakkan di Master

15. Kemudian muat semula perkhidmatan PostgreSQL 12 untuk menerapkan perubahan baru.

# Systemctl Reload PostgreSql-12.perkhidmatan 

16. Sekarang apabila anda menanyakan Wal proses penghantar pada pelayan utama sekali lagi, ia harus menunjukkan keadaan streaming dan a sync_state dari SYNC.

$ psql -c "\ x" -c "pilih * dari pg_stat_replication;" 
Semak Proses Pengirim Wal di Guru

Kami telah sampai ke akhir panduan ini. Kami telah menunjukkan cara menubuhkan PostgreSQL 12 Replikasi Streaming Pangkalan Data Master-Standby di Centos 8. Kami juga meliputi cara mengaktifkan replikasi segerak dalam kluster pangkalan data PostgreSQL.

Terdapat banyak kegunaan replikasi dan anda sentiasa boleh memilih penyelesaian yang memenuhi persekitaran IT anda dan/atau keperluan khusus aplikasi. Untuk lebih terperinci, pergi ke pelayan siap sedia penghantaran dalam dokumentasi PostgreSQL 12.