Blog Master-Slave PostgreSQL12 Replication Kurulumu

Master-Slave PostgreSQL12 Replication Kurulumu

Merhaba Arkadaşlar,

PostgreSQL 12 de master-slave kurulumunu anlatacağım.

MASTER Makinasında yapılacaklar;

Öncelikle replication kullanıcısı oluşturulur.

  • postgres=# create role engrep password 'engrep123' login replication;

pg_hba.conf dosyasına aşağıdaki satır eklenir.

  • host    replication     all             0.0.0.0/0               md5

Slot oluşturulur.

  • select pg_create_physical_replication_slot('engrep');

Slot oluş mu diye kontrol edilebilir.

  • postgres=# select * from pg_replication_slots;

Test amaçlı aşağıdaki tablo oluşturulur ve içerisine data atılır.

  • postgres=# create table the_table as select gs,format('test %s', gs) from generate_series(1, 10000000) gs;

 

SLAVE Makinada yapılacaklar;

 

Aşağıdaki komut ile master makinadan datalar ve configler alınır.(Slave makinada postgresql veritabanı kuruluğunu düşünüyoruz.)

  • pg_basebackup --host=pg1 --port=5432 --username=engrep --pgdata=/var/lib/postgresql/12/main --write-recovery-conf --wal-method=stream --checkpoint=fast --progress --slot=engrep –verbose

Eskiden bu aşamada recovery.conf dosyası oluşturuyordur artık buna gerek yok yukardaki komut postgresql.auto.conf dosyasında parameterelerimizi oluşturuyor 

more postgresql.auto.conf dosyasını kontrol ettiğinde aşağıdaki gibi bir çıktı görmelisiniz.

# Do not edit this file manually!

# It will be overwritten by the ALTER SYSTEM command.

primary_conninfo = 'user=engrep password=engrep123 host=pg1 port=5432 sslmode=pr

efer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs

=any'

 

primary_slot_name = 'engrep'

 

Slave makinası restart edilir.

  • systemctl stop postgresql-12.service
  • systemctl start postgresql-12.service

Yukarda anlattığım replication async replication dir sync replication olsun istiyorsanız aşağıdaki değişiklikleri yapmanız yeterli.

  • postgres=# alter system set synchronous_standby_names='engrep';
  • postgres=# Select pg_reload_conf();
  • slave makinası restart edilir.
    • systemctl stop postgresql-12.service
    • systemctl start postgresql-12.service

 

Umarım Faydalı olmuştur...

 

Hazırlayan: Engin YILMAZ

  • Engin Yılmaz
    Engin Yılmaz