Bii o ṣe le Tunto PostgreSQL 12 Sisisẹsẹhin ṣiṣanwọle ni CentOS 8


Ibi ipamọ data PostgreSQL ṣe atilẹyin ọpọlọpọ awọn solusan atunse lati kọ wiwa-giga, iwọn, awọn ohun elo ifarada ẹbi, ọkan ninu eyiti o jẹ Gbigbe Kọ-Niwaju (WAL). Ojutu yii ngbanilaaye fun olupin imurasilẹ lati wa ni imuse nipa lilo gbigbejade faili ti o da lori faili tabi atunse sisanwọle, tabi ibiti o ti ṣee ṣe, idapọ awọn ọna mejeeji.

Pẹlu ṣiṣan ṣiṣan, imurasilẹ (ẹda ifiranse) olupin data ti wa ni tunto lati sopọ si oluwa/olupin akọkọ, eyiti o ṣiṣan awọn igbasilẹ WAL si imurasilẹ bi wọn ti ṣe ipilẹṣẹ, laisi nduro fun faili WAL lati kun.

Nipa aiyipada, idawọle ṣiṣan jẹ asynchronous nibiti a ti kọ data si olupin (s) imurasilẹ lẹhin ti a ti ṣe iṣowo kan lori olupin akọkọ. Eyi tumọ si pe idaduro kekere wa laarin ṣiṣe iṣowo ni olupin oluwa ati awọn ayipada ti o han ni olupin imurasilẹ. Idoju ọkan ti ọna yii ni pe bi o ba jẹ pe olupin oluwa naa kọlu, eyikeyi awọn iṣowo ti ko ni iyasọtọ le ma ṣe atunṣe ati eyi le fa pipadanu data

Itọsọna yii fihan bi a ṣe le ṣeto atunse sisanwọle oluwa-imurasilẹ Postgresql 12 lori CentOS 8. A yoo lo\"awọn iho atunse" fun imurasilẹ bi ojutu lati yago fun olupin oluwa lati tunlo awọn apa WAL atijọ ṣaaju imurasilẹ ti gba wọn.

Akiyesi pe ni akawe si awọn ọna miiran, awọn iho atunse ṣe idaduro nikan nọmba awọn apa ti a mọ pe o nilo.

Itọsọna yii dawọle pe o ti sopọ mọ oluwa rẹ ati awọn olupin ipamọ data imurasilẹ bi gbongbo nipasẹ SSH (lo aṣẹ Sudo nibiti o ṣe pataki ti o ba sopọmọ bi olumulo deede pẹlu awọn ẹtọ iṣakoso):

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

Mejeeji awọn olupin ipamọ data gbọdọ ni Postgresql 12 ti fi sori ẹrọ, bibẹkọ, wo: Bii o ṣe le Fi PostgreSQL ati pgAdmin sii ni CentOS 8.

Akiyesi: PostgreSQL 12 wa pẹlu awọn ayipada nla si imisi ẹda ati iṣeto bi rirọpo ti recovery.conf ati iyipada ti awọn ipele recovery.conf si awọn ipo iṣeto PostgreSQL deede, ṣiṣe ni irọrun pupọ lati tunto idapọ iṣupọ.

Igbesẹ 1: Ṣiṣatunṣe PostgreSQL Master/Server Database Server

1. Lori olupin oluwa, yipada si akọọlẹ eto postgres ki o tunto adirẹsi IP (es) lori eyiti olupin oluwa yoo tẹtisi fun awọn isopọ lati ọdọ awọn alabara.

Ni ọran yii, a yoo lo * itumo gbogbo rẹ.

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

Aṣẹ ALTER SET SQL jẹ ẹya ti o lagbara lati yi awọn ipilẹ iṣeto olupin pada, taara pẹlu ibeere SQL. Awọn atunto ti wa ni fipamọ ni faili postgresql.conf.auto ti o wa ni gbongbo folda data (fun apẹẹrẹ/var/lib/pgsql/12/data /) ati kika afikun si awọn ti o fipamọ sinu postgresql.conf. Ṣugbọn awọn atunto ni iṣaaju gba iṣaaju lori awọn ti o wa ni nigbamii ati awọn faili miiran ti o jọmọ.

2. Lẹhinna ṣẹda ipa ẹda kan ti yoo ṣee lo fun awọn isopọ lati olupin imurasilẹ si olupin oluwa, ni lilo eto olupilẹṣẹ. Ninu aṣẹ atẹle, Flag -P ta fun ọrọigbaniwọle fun ipa tuntun ati -e n ṣalaye awọn ofin ti olupilẹṣẹ n ṣe ati ti o ranṣẹ si olupin data.

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

3. Lẹhinna tẹ titẹ sii atẹle ni opin ti /var/lib/pgsql/12/data/pg_hba.conf faili iṣeto ni idanimọ alabara pẹlu aaye aaye data ti a ṣeto si ẹda bi o ti han ninu sikirinifoto.

host    replication     replicator      10.20.20.8/24     md5

4. Bayi tun bẹrẹ iṣẹ Postgres12 nipa lilo pipaṣẹ systemctl atẹle lati lo awọn ayipada naa.

# systemctl restart postgresql-12.service

5. Nigbamii ti, ti o ba ni iṣẹ ina ti nṣiṣẹ, o nilo lati ṣafikun iṣẹ Postgresql ni iṣeto ina lati gba awọn ibeere lati ọdọ olupin imurasilẹ si oluwa.

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

Igbesẹ 2: Ṣiṣe Afẹyinti Mimọ si Bootstrap Server Imurasilẹ

6. Nigbamii, o nilo lati ṣe afẹyinti ipilẹ ti olupin oluwa lati olupin imurasilẹ; eyi ṣe iranlọwọ lati bata bata olupin imurasilẹ. O nilo lati da iṣẹ postgresql 12 duro lori olupin imurasilẹ, yipada si akọọlẹ olumulo postgres, ṣe afẹyinti itọsọna data (/ var/lib/pgsql/12/data /), lẹhinna paarẹ ohun gbogbo labẹ rẹ bi o ti han, ṣaaju mu ipilẹ afẹyinti.

# 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. Lẹhinna lo ohun elo pg_basebackup lati mu afẹyinti ipilẹ pẹlu nini ẹtọ (olumulo eto eto data ie Postgres, laarin akọọlẹ olumulo Postgres) ati pẹlu awọn igbanilaaye ẹtọ.

Ninu aṣẹ atẹle, aṣayan:

  • -h - ṣalaye alejo ti o jẹ olupin titunto si.
  • -D - ṣalaye itọsọna data.
  • -U - ṣalaye olumulo asopọ.
  • -P - jẹ ki ijabọ ilọsiwaju.
  • -v - jẹ ki ipo ọrọ-ọrọ ṣiṣẹ.
  • -R - n jẹ ki ẹda ti iṣeto imularada: Ṣẹda faili imurasilẹ.signal kan ki o fi awọn eto isopọmọ ranṣẹ si postgresql.auto.conf labẹ ilana data.
  • -X - lo lati ṣafikun awọn faili log-niwaju ti a beere (Awọn faili WAL) ninu afẹyinti. Iye ti ṣiṣan tumọ si lati san WAL lakoko ti o ṣẹda afẹyinti.
  • -C - jẹ ki ẹda ti iho atunse kan ti a darukọ nipasẹ aṣayan -S ṣaaju ki o to bẹrẹ afẹyinti.
  • -S - ṣalaye orukọ iho atunse.

$ 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. Nigbati ilana afẹyinti ba ti ṣe, itọsọna data tuntun lori olupin imurasilẹ yẹ ki o dabi iyẹn ni sikirinifoto. A ṣẹda aami ifihan ati pe a ti fi awọn eto isopọmọ si postgresql.auto.conf. O le ṣe atokọ awọn akoonu rẹ nipa lilo pipaṣẹ ls.

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

Ẹrú atunse kan yoo ṣiṣẹ ni ipo\"Imurasilẹ Gbona Gbona" ti a ba ṣeto paramita hot_standby si (iye aiyipada) ni postgresql.conf ati pe faili imurasilẹ.signal kan wa ninu ilana data.

9. Nisisiyi pada si olupin oluwa, o yẹ ki o ni anfani lati wo iho atunse ti a pe ni pgstandby1 nigbati o ṣii wiwo pg_replication_slots bi atẹle.

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

10. Lati wo awọn eto isopọmọ ti o wa ninu faili postgresql.auto.conf, lo aṣẹ ologbo.

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

11. Bayi bẹrẹ awọn iṣẹ ṣiṣe data deede lori olupin imurasilẹ nipa bẹrẹ iṣẹ PostgreSQL bi atẹle.

# systemctl start postgresql-12

Igbesẹ 3: Idanwo PostgreSQL Idawọle Sisisẹsẹhin

12. Ni kete ti a ti fi idi asopọ mulẹ ni aṣeyọri laarin oluwa ati imurasilẹ, iwọ yoo wo ilana olugba WAL kan ninu olupin imurasilẹ pẹlu ipo ṣiṣanwọle, o le ṣayẹwo eyi nipa lilo iwo pg_stat_wal_receiver.

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

ati ilana olugba WAL ti o baamu ni oluwa/olupin akọkọ pẹlu ipo ṣiṣanwọle ati sync_state ti async, o le ṣayẹwo wiwo pg_stat_replication pg_stat_replication yii.

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

Lati sikirinifoto ti o wa loke, idapada sisanwọle jẹ asynchronous. Ni apakan ti nbo, a yoo ṣe afihan bii o ṣe le ṣe iyanyan lati ṣe atunṣe idapọmọra.

13. Bayi ṣe idanwo ti ẹda naa ba n ṣiṣẹ daradara nipa ṣiṣẹda ibi ipamọ data idanwo ninu olupin oluwa ati ṣayẹwo boya o wa ninu olupin imurasilẹ.
[master] postgres = # Ṣẹda DATABASE tecmint;
[imurasilẹ] postgres = #\l

Eyi je eyi ti o yan: Fifi agbara mu Sisisẹpọ Mimuuṣiṣẹpọ

14. Iṣisẹpọ Amuṣiṣẹpọ nfunni ni agbara lati ṣe iṣowo (tabi kọ data) si ibi ipamọ data akọkọ ati imurasilẹ/ajọra nigbakanna. O jẹrisi nikan pe iṣowo kan ṣaṣeyọri nigbati gbogbo awọn ayipada ti o ṣe nipasẹ idunadura ti gbe si ọkan tabi diẹ ẹ sii awọn olupin imurasilẹ ṣiṣẹpọ.

Lati jẹki atunse amuṣiṣẹpọ, synchronous_commit gbọdọ tun ṣeto si (eyiti o jẹ iye aiyipada, nitorinaa ko nilo eyikeyi iyipada) ati pe o tun nilo lati ṣeto amuṣiṣẹpọ synchronous_standby_names si iye ti ko ṣofo. Fun itọsọna yii, a yoo ṣeto rẹ si gbogbo rẹ.

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

15. Lẹhinna tun gbe iṣẹ PostgreSQL 12 pada lati lo awọn ayipada tuntun.

# systemctl reload postgresql-12.service

16. Nisisiyi nigbati o ba beere ilana oluṣẹ WAL lori olupin akọkọ lẹẹkan si, o yẹ ki o han ipo ti ṣiṣanwọle ati sync_state ti amuṣiṣẹpọ kan.

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

A ti de opin itọsọna yii. A ti fihan bi a ṣe le ṣeto idapọ ṣiṣan ṣiṣan data oluwa-imurasilẹ PostgreSQL 12 ni CentOS 8. A tun bo bii o ṣe le mu ifisipo amuṣiṣẹpọ ṣiṣẹ ninu iṣupọ data data PostgreSQL.

Awọn lilo pupọ lo wa ti atunse ati pe o le nigbagbogbo yan ojutu kan ti o baamu ayika IT rẹ ati/tabi awọn ibeere pato ohun elo kan. Fun alaye diẹ sii, lọ si Awọn olupin imurasilẹ Wọle-Sowo ni iwe PostgreSQL 12.