GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengonfigurasi Replikasi Streaming PostgreSQL 12 di CentOS 8

PostgreSQL database mendukung beberapa solusi replikasi untuk membangun aplikasi dengan ketersediaan tinggi, skalabel, dan toleran terhadap kesalahan, salah satunya adalah Write-Ahead Log (WAL ) Pengiriman. Solusi ini memungkinkan server siaga diimplementasikan menggunakan pengiriman log berbasis file atau replikasi streaming, atau jika memungkinkan, kombinasi dari kedua pendekatan tersebut.

Dengan streaming replikasi, server database siaga (replication slave) dikonfigurasi untuk terhubung ke server master/primer, yang mengalirkan WAL record ke standby saat dibuat, tanpa menunggu WAL file yang harus diisi.

Secara default, replikasi streaming tidak sinkron di mana data ditulis ke server siaga setelah transaksi dilakukan di server utama. Ini berarti ada jeda kecil antara melakukan transaksi di server master dan perubahan menjadi terlihat di server siaga. Satu kelemahan dari pendekatan ini adalah jika server master mogok, transaksi yang tidak terikat tidak dapat direplikasi dan ini dapat menyebabkan kehilangan data.

Panduan ini menunjukkan cara menyiapkan Postgresql 12 replikasi streaming master-standby di CentOS 8 . Kami akan menggunakan “slot replikasi ” untuk standby sebagai solusi agar master server tidak mendaur ulang WAL old yang lama segmen sebelum standby 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 database master dan standby sebagai root melalui SSH (gunakan Sudo perintah jika diperlukan jika Anda terhubung sebagai pengguna biasa dengan hak administratif):

Postgresql master database server: 		10.20.20.9
Postgresql standby database server:		10.20.20.8

Kedua server database harus memiliki Postgresql 12 diinstal, jika tidak, lihat:Cara Menginstal PostgreSQL dan pgAdmin di CentOS 8.

Catatan :PostgreSQL 12 hadir dengan perubahan besar pada implementasi dan konfigurasi replikasi seperti penggantian recovery.conf dan konversi recovery.conf parameter ke parameter konfigurasi PostgreSQL normal, membuatnya lebih mudah untuk mengonfigurasi replikasi cluster.

Langkah 1:Mengonfigurasi Server Database Master/Primary PostgreSQL

1. Di server master, alihkan ke akun sistem postgres dan konfigurasikan alamat IP yang akan didengarkan oleh server master untuk koneksi dari klien.

Dalam hal ini, kita akan menggunakan * artinya semua.

# su - postgres
$ psql -c "ALTER SYSTEM SET listen_addresses TO '*';"

ALTER SYSTEM SET Perintah SQL adalah fitur canggih untuk mengubah parameter konfigurasi server, langsung dengan kueri SQL. Konfigurasi disimpan di postgresql.conf.auto file yang terletak di root folder data (mis. /var/lib/pgsql/12/data/ ) dan membaca tambahan yang disimpan di postgresql.conf . Tetapi konfigurasi di yang pertama lebih diutamakan daripada yang ada di yang lebih baru dan file terkait lainnya.

Konfigurasikan Alamat IP di PostgreSQL Master

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

# su – postgres
$ createuser --replication -P -e replicator
$ exit

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 basis data disetel ke replikasi seperti yang ditunjukkan pada tangkapan layar.

host    replication     replicator      10.20.20.8/24     md5

Konfigurasikan Otentikasi Replikasi

4. Sekarang mulai ulang Postgres12 service menggunakan perintah systemctl berikut untuk menerapkan perubahan.

# systemctl restart postgresql-12.service

5. Selanjutnya, jika Anda memiliki firewall layanan berjalan, Anda perlu menambahkan layanan Postgresql dalam konfigurasi firewalld untuk mengizinkan permintaan dari server siaga ke master.

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

Langkah 2:Membuat Cadangan Basis untuk Bootstrap Server Siaga

6. Selanjutnya, Anda perlu membuat cadangan dasar server master dari server siaga; ini membantu mem-bootstrap server siaga. Anda perlu menghentikan layanan postgresql 12 di server siaga, beralih ke akun pengguna postgres, mencadangkan direktori data (/var/lib/pgsql/12/data/ ), lalu hapus semua yang ada di bawahnya seperti yang ditunjukkan, sebelum mengambil cadangan dasar.

# systemctl stop postgresql-12.service
# 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 cadangan dasar dengan kepemilikan yang tepat (pengguna sistem basis data yaitu Postgres , dalam Postgres akun pengguna) dan dengan izin yang tepat.

Pada perintah berikut, opsinya:

  • -h – menentukan host yang merupakan server master.
  • -D – menentukan direktori data.
  • -U – menentukan pengguna koneksi.
  • -P – memungkinkan pelaporan kemajuan.
  • -v – mengaktifkan mode verbose.
  • -R – memungkinkan pembuatan konfigurasi pemulihan:Membuat standby.signal file dan tambahkan pengaturan koneksi ke postgresql.auto.conf di bawah direktori data.
  • -X – digunakan untuk menyertakan file log write-ahead yang diperlukan (file WAL) dalam cadangan. Nilai aliran berarti mengalirkan WAL saat cadangan dibuat.
  • -C – memungkinkan pembuatan slot replikasi yang diberi nama oleh opsi -S sebelum memulai pencadangan.
  • -S – menentukan nama slot replikasi.
$ pg_basebackup -h 10.20.20.5 -D /var/lib/pgsql/12/data -U replicator -P -v  -R -X stream -C -S pgstandby1
$ exit

Cadangan Basis Server Master

8. Ketika proses pencadangan selesai, direktori data baru di server siaga akan terlihat seperti di tangkapan layar. Sinyal.Siaga dibuat dan pengaturan koneksi ditambahkan ke postgresql.auto.conf . Anda dapat membuat daftar isinya menggunakan perintah ls.

# ls -l /var/lib/pgsql/12/data/

Verifikasi Direktori Data Cadangan

Budak replikasi akan berjalan di “Siaga Panas ” mode jika hot_standby parameter diatur ke on (nilai default) di postgresql.conf dan ada standby.signal file yang ada di direktori data.

9. Sekarang kembali ke server master, Anda seharusnya dapat melihat slot replikasi yang disebut pgstandby1 saat Anda membuka pg_replication_slots lihat sebagai berikut.

# su - postgres
$ psql -c "SELECT * FROM pg_replication_slots;"
$ exit

Buat Slot Replikasi

10. Untuk melihat pengaturan koneksi yang ditambahkan di postgresql.auto.conf file, gunakan perintah cat.

# cat /var/lib/pgsql/12/data/postgresql.auto.conf

Lihat Pengaturan Koneksi

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

# systemctl start postgresql-12

Langkah 3:Menguji Replikasi Streaming PostgreSQL

12. Setelah koneksi berhasil dibuat antara master dan standby, Anda akan melihat WAL proses penerima di server siaga dengan status streaming, Anda dapat memeriksanya menggunakan pg_stat_wal_receiver lihat.

$ psql -c "\x" -c "SELECT * FROM pg_stat_wal_receiver;"

Periksa Proses Penerima WAL

dan WAL . yang sesuai proses pengirim di server master/primer dengan status streaming dan sync_state async, Anda dapat memeriksa tampilan pg_stat_replication pg_stat_replication ini.

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Periksa Proses Pengirim WAL di Master

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

13. Sekarang uji apakah replikasi berfungsi dengan baik dengan membuat database uji di server master dan periksa apakah ada di server siaga.
[master]postgres=# CREATE DATABASE tecmint;
[standby]postgres=# \l

Uji Replikasi Streaming

Opsional:Mengaktifkan Replikasi Sinkron

14. Replikasi sinkron menawarkan kemampuan untuk melakukan transaksi (atau menulis data) ke database utama dan standby/replika secara bersamaan. Ini hanya mengonfirmasi 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 disetel ke aktif (yang merupakan nilai default, sehingga tidak perlu ada perubahan apa pun) dan Anda juga perlu menyetel synchronous_standby_names parameter ke nilai yang tidak kosong. Untuk panduan ini, kami akan mengaturnya ke semua.

$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO  '*';"

Setel Nama Siaga Sinkronisasi di Master

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

# systemctl reload postgresql-12.service

16. Sekarang ketika Anda menanyakan WAL proses pengirim di server utama sekali lagi, itu harus menunjukkan status streaming dan sync_state dari sinkronisasi .

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Periksa Proses Pengirim WAL di Master

Kami telah sampai pada akhir panduan ini. Kami telah menunjukkan cara menyiapkan PostgreSQL 12 replikasi streaming database master-standby di CentOS 8 . Kami juga membahas cara mengaktifkan replikasi sinkron dalam cluster database PostgreSQL.

Ada banyak kegunaan replikasi dan Anda selalu dapat memilih solusi yang memenuhi lingkungan TI dan/atau persyaratan khusus aplikasi Anda. Untuk detail selengkapnya, buka Server Siaga Log-Pengiriman dalam dokumentasi PostgreSQL 12.

Berbagi itu Peduli…
Berbagi di FacebookBerbagi di TwitterBerbagi di LinkedinBerbagi di Reddit
Cent OS
  1. Cara Mengkonfigurasi server DHCP di CentOS 7 / Ubuntu 18.04 / 16.04 / Debian 9

  2. Cara Menginstal dan Mengonfigurasi Postgres 13 di Centos 8

  3. Cara mengatur replikasi MySQL di CentOS

  1. Cara menginstal server PostgreSQL di RHEL 8 / CentOS 8

  2. Cara Menginstal dan Mengkonfigurasi VNC di CentOS 7

  3. Cara Mengonfigurasi Replikasi Master-Slave MySQL di CentOS 7

  1. Cara Menginstal dan Mengonfigurasi Server NFS di CentOS 8

  2. Cara Menginstal PostgreSQL di CentOS 8

  3. Cara Menginstal dan Mengkonfigurasi VNC di CentOS 8