Giunsa Pag-configure ang PostgreSQL 12 Streaming Replication sa CentOS 8


Gisuportahan sa database sa PostgreSQL ang daghang mga solusyon sa pagkopya aron makahimo og taas nga magamit, masukod, mga aplikasyon nga dili matugotan sa sayup, usa niini ang Pagpadala sa Write-Ahead Log (WAL). Kini nga solusyon nagtugot sa usa ka standby server nga ipatuman gamit ang file-based log shipping o streaming replication, o kung mahimo, usa ka kombinasyon sa duha ka mga pamaagi.

Uban sa streaming replication, ang usa ka standby (replication slave) database server gi-configure aron makonektar sa master/primary server, nga nag-stream sa mga rekord sa WAL ngadto sa standby samtang kini namugna, nga wala maghulat nga mapuno ang WAL file.

Sa kasagaran, ang streaming replication kay asynchronous diin ang data gisulat sa standby server(s) human ang usa ka transaksyon nahimo sa primary server. Nagpasabot kini nga adunay gamay nga paglangan tali sa paghimo sa usa ka transaksyon sa master server ug ang mga pagbag-o nga makita sa standby server. Ang usa ka kapakyasan sa kini nga pamaagi mao nga kung ang master server nahagsa, ang bisan unsang wala pasalig nga mga transaksyon mahimong dili masundog ug mahimo’g hinungdan sa pagkawala sa datos.

Kini nga giya nagpakita kung giunsa ang pag-set up sa usa ka Postgresql 12 master-standby streaming replication sa CentOS 8. Atong gamiton ang \replication slots alang sa standby isip solusyon aron malikayan ang master server gikan sa pag-recycle sa daan nga mga bahin sa WAL sa dili pa kini madawat sa standby.

Timan-i nga kon itandi sa ubang mga pamaagi, ang replication slots nagpabilin lamang sa gidaghanon sa mga bahin nga nahibal-an nga gikinahanglan.

Kini nga giya nagtuo nga konektado ka sa imong master ug standby database servers isip gamut pinaagi sa SSH (gamita ang Sudo command kung gikinahanglan kung konektado ka isip normal nga user nga adunay mga katungod sa administratibo):

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

Ang duha nga mga database server kinahanglan nga adunay Postgresql 12 nga na-install, kung dili, tan-awa: Giunsa ang Pag-install sa PostgreSQL ug pgAdmin sa CentOS 8.

Mubo nga sulat: Ang PostgreSQL 12 adunay dagkong kausaban sa pagpatuman ug pag-configure sa replikasyon sama sa pag-ilis sa recovery.conf ug sa pag-convert sa recovery.conf parameters ngadto sa normal nga mga parameter sa configuration sa PostgreSQL, nga mas sayon ang pag-configure sa cluster replication.

Lakang 1: Pag-configure sa PostgreSQL Master/Primary Database Server

1. Sa master server, switch sa postgres system account ug i-configure ang IP address(es) diin ang master server maminaw sa mga koneksyon gikan sa mga kliyente.

Niini nga kaso, atong gamiton ang * nga nagpasabot sa tanan.

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

Ang ALTER SYSTEM SET SQL command usa ka gamhanan nga bahin aron mabag-o ang mga parameter sa pagsumpo sa server, direkta sa usa ka pangutana sa SQL. Ang mga configuration gitipigan sa postgresql.conf.auto file nga nahimutang sa gamut sa data folder (e.g /var/lib/pgsql/12/data/) ug basaha ang dugang sa mga gitipigan sa postgresql.conf. Apan ang mga pag-configure sa nahauna nag-una kaysa sa naa sa ulahi ug uban pang mga may kalabutan nga mga file.

2. Dayon paghimo ug replikasyon nga papel nga gamiton alang sa mga koneksyon gikan sa standby server ngadto sa master server, gamit ang createuser program. Sa mosunod nga sugo, ang -P nga bandera nag-aghat alang sa usa ka password alang sa bag-ong tahas ug -e nagpalanog sa mga sugo nga nagmugna ug gipadala sa user ngadto sa database server.

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

3. Dayon isulod ang mosunod nga entry sa katapusan sa /var/lib/pgsql/12/data/pg_hba.conf client authentication configuration file uban sa database field nga gitakda sa replikasyon sama sa gipakita sa screenshot.

host    replication     replicator      10.20.20.8/24     md5

4. Karon i-restart ang serbisyo sa Postgres12 gamit ang mosunod nga command systemctl aron magamit ang mga pagbag-o.

# systemctl restart postgresql-12.service

5. Sunod, kung ikaw adunay firewalld nga serbisyo nga nagdagan, kinahanglan nimo nga idugang ang Postgresql nga serbisyo sa firewalld configuration aron tugotan ang mga hangyo gikan sa standby server ngadto sa master.

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

Lakang 2: Paghimo og Base Backup sa Bootstrap sa Standby Server

6. Sunod, kinahanglan ka maghimo ug base backup sa master server gikan sa standby server; kini makatabang sa pag-bootstrap sa standby server. Kinahanglan nimong hunongon ang serbisyo sa postgresql 12 sa standby server, ibalhin sa postgres user account, i-backup ang data directory (/var/lib/pgsql/12/data/), unya kuhaa ang tanan ubos niini sama sa gipakita, sa dili pa kuhaon ang base backup.

# 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. Dayon gamita ang pg_basebackup nga himan sa pagkuha sa base backup uban sa husto nga pagpanag-iya (ang database system user i.e Postgres, sulod sa Postgres user account) ug uban sa husto nga mga permiso.

Sa mosunod nga sugo, ang kapilian:

  • -h – nagtino sa host nga mao ang master server.
  • -D – nagtino sa direktoryo sa datos.
  • -U – nagtino sa tiggamit sa koneksyon.
  • -P – makapahimo sa pagreport sa pag-uswag.
  • -v – makapahimo sa verbose mode.
  • -R – makapahimo sa paghimo sa recovery configuration: Naghimo ug standby.signal file ug idugang ang connection settings ngadto sa postgresql.auto.conf ubos sa data directory.
  • -X – gigamit sa paglakip sa gikinahanglang write-ahead log files (WAL files) sa backup. Ang bili sa sapa nagpasabot sa pag-stream sa WAL samtang gihimo ang backup.
  • -C – makapahimo sa paghimo og replication slot nga ginganlan sa -S nga opsyon sa dili pa magsugod sa backup.
  • -S – nagpiho sa ngalan sa replication slot.

$ pg_basebackup -h 10.20.20.9 -D /var/lib/pgsql/12/data -U replicator -P -v  -R -X stream -C -S pgstandby1
$ exit

8. Kung nahuman na ang proseso sa pag-backup, ang bag-ong direktoryo sa datos sa standby server kinahanglan nga ingon niana sa screenshot. Usa ka standby.signal ang gihimo ug ang mga setting sa koneksyon gidugang sa postgresql.auto.conf. Mahimo nimong ilista ang mga sulod niini gamit ang ls command.

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

Ang usa ka replikasyon nga ulipon modagan sa \Hot Standby mode kung ang hot_standby nga parametro i-set sa (ang default value) sa postgresql.conf ug adunay standby.signal file nga anaa sa data directory.

9. Karon balik sa master server, kinahanglan nimo nga makita ang replication slot nga gitawag ug pgstandby1 kung imong ablihan ang pg_replication_slots nga panglantaw sama sa mosunod.

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

10. Aron makita ang mga setting sa koneksyon nga gidugang sa postgresql.auto.conf file, gamita ang cat command.

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

11. Karon magsugod sa normal nga mga operasyon sa database sa standby server pinaagi sa pagsugod sa PostgreSQL nga serbisyo sama sa mosunod.

# systemctl start postgresql-12

Lakang 3: Pagsulay sa PostgreSQL Streaming Replication

12. Sa higayon nga malampuson nga maestablisar ang koneksyon tali sa master ug sa standby, imong makita ang proseso sa WAL receiver sa standby server nga adunay status sa streaming, mahimo nimong susihon kini gamit ang pg_stat_wal_receiver view.

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

ug usa ka katugbang nga proseso sa nagpadala sa WAL sa master/primary server nga adunay kahimtang sa streaming ug usa ka sync_state nga async, mahimo nimong susihon kini nga pg_stat_replication pg_stat_replication view.

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

Gikan sa screenshot sa ibabaw, ang streaming replication kay asynchronous. Sa sunod nga seksyon, ipakita namon kung giunsa ang opsyonal nga pag-enable sa synchronous replication.

13. Karon sulayi kung ang replikasyon maayo ba nga nagtrabaho pinaagi sa paghimo sa usa ka pagsulay nga database sa master server ug susiha kung kini anaa sa standby server.
[master]postgres=# PAGHIMO DATABASE tecmint;
[standby]postgres=# \l

Opsyonal: Pag-enable sa Synchronous Replication

14. Ang synchronous replication nagtanyag sa abilidad sa paghimo sa usa ka transaksyon (o pagsulat sa datos) ngadto sa nag-unang database ug ang standby/replica nga dungan. Kini nagpamatuod lamang nga ang usa ka transaksyon malampuson kung ang tanan nga mga pagbag-o nga gihimo sa transaksyon gibalhin sa usa o daghan pa nga nagdungan nga standby server.

Aron mahimo ang synchronous replication, ang synchronous_commit kinahanglan usab nga i-on (nga mao ang default nga kantidad, busa dili kinahanglan ang bisan unsang pagbag-o) ug kinahanglan nimo nga itakda ang synchronous_standby_names parameter sa usa ka wala’y sulod nga kantidad. Alang niini nga giya, among itakda kini sa tanan.

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

15. Dayon i-reload ang PostgreSQL 12 nga serbisyo para magamit ang bag-ong mga kausaban.

# systemctl reload postgresql-12.service

16. Karon kung imong gipangutana ang proseso sa nagpadala sa WAL sa panguna nga server sa makausa pa, kinahanglan kini magpakita usa ka kahimtang sa streaming ug usa ka sync_state sa pag-sync.

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

Nakaabot na kami sa katapusan niini nga giya. Gipakita namo kung unsaon pag-set up ang PostgreSQL 12 master-standby database streaming replication sa CentOS 8. Gitabonan usab namo kung unsaon pag-enable ang synchronous replication sa usa ka PostgreSQL database cluster.

Adunay daghang mga gamit sa pagkopya ug kanunay ka makapili usa ka solusyon nga nagtagbo sa imong palibot sa IT ug/o mga kinahanglanon nga piho sa aplikasyon. Para sa dugang detalye, adto sa Log-Shipping Standby Servers sa PostgreSQL 12 nga dokumentasyon.