PostgreSQL 12 CentOS 8-de akym köpeltmesini nädip sazlamaly


“PostgreSQL” maglumat bazasy ýokary elýeterlilik, ulaldylyp bilinýän, ýalňyşlyga çydamly programmalary gurmak üçin birnäçe köpeltmek çözgütlerini goldaýar, olaryň biri “-Azuw-öň ýazgy” (WAL) ippingükleme. Bu çözgüt, garaşylýan serweri faýl esasly gündelik iberiş ýa-da akym köpeltmek ýa-da mümkin boldugyça iki çemeleşmäniň utgaşdyrylmagy arkaly amala aşyrmaga mümkinçilik berýär.

Akym köpeltmek bilen, WAL faýllarynyň doldurylmagyna garaşman, WAL ýazgylaryny döredilişine garaşýan esasy/esasy serwere birikmek üçin garaşylýan (köpeltmek gul) maglumat bazasy serweri düzülýär.

Düzgüne görä, akymyň köpeldilmegi asynkron bolup, esasy serwerde geleşik geçirilenden soň garaşma serwerine (lerine) maglumatlar ýazylýar. Bu, baş serwerde geleşik etmek bilen garaşma serwerinde görünýän üýtgeşmeleriň arasynda azajyk gijä galýandygyny aňladýar. Bu çemeleşmäniň bir erbet tarapy, baş serwer ýykylan halatynda, islendik amallar köpeldilip bilinmez we bu maglumatlaryň ýitmegine sebäp bolup biler.

Bu gollanma, “CentOS 8” -de “Postgresql 12” garaşma akymynyň köpeltmesini nädip gurmalydygyny görkezýär, garaşma almazdan ozal baş serweriň köne WAL segmentlerini gaýtadan ulanmazlygy üçin çözgüt hökmünde garaşmak üçin\köpeltmek ýerlerini ulanarys.

Beýleki usullar bilen deňeşdirilende, köpeltmek ýerleri diňe zerur bolan segmentleriň sanyny saklaýar.

Bu gollanma, SSH arkaly kök hökmünde ussat we garaşma maglumatlar bazasynyň serwerlerine birikdirilendigiňizi göz öňünde tutýar (administratiw hukuklary bolan adaty ulanyjy hökmünde birikdirilen halatynda Sudo buýrugyny ulanyň):

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

Maglumat bazasynyň iki serwerinde Postgresql 12 gurnalan bolmaly, ýogsam, serediň: PostOS 8-de PostgreSQL we pgAdmin nädip gurmaly.

Bellik: PostgreSQL 12 köpeltmegi amala aşyrmakda we dikeldiş.conf çalyşmak we recovery.conf parametrlerini adaty PostgreSQL konfigurasiýa parametrlerine öwürmek ýaly konfigurasiýa düýpli üýtgeşmeler bilen gelýär, bu toparlaryň köpelmegini sazlamagy has aňsatlaşdyrýar.

1-nji ädim: PostgreSQL Master/başlangyç maglumat bazasynyň serwerini düzmek

1. Esasy serwerde, postgres ulgam hasabyna geçiň we baş serweriň müşderilerden baglanyşyklary diňlän IP adresini düzüň.

Bu ýagdaýda hemmesini aňladýan * ulanarys.

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

ALTER SYSTEM SET SQL buýrugy, göni SQL talaplary bilen serweriň konfigurasiýa parametrlerini üýtgetmek üçin güýçli aýratynlykdyr. Sazlamalar maglumat bukjasynyň (meselem/var/lib/pgsql/12/data /) kökünde ýerleşýän postgresql.conf.auto faýlynda saklanýar we postgresql.conf-da saklanýanlara goşmaça okaň. Emma öňki konfigurasiýalar, soňraky we beýleki faýllardakylardan has möhümdir.

2. Soňra dörediji programmasyny ulanyp, garaşylýan serwerden baş serwere birikmek üçin ulanyljak köpeltmek roluny dörediň. Aşakdaky buýrukda, -P baýdagy täze rol üçin parol soraýar we -e döredijiniň döredýän we maglumat bazasynyň serwerine iberýän buýruklaryny gaýtalaýar.

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

3. Soňra /var/lib/pgsql/12/data/pg_hba.conf müşderiniň tanamaklyk konfigurasiýa faýlyny, skrinshotda görkezilişi ýaly köpeltmek üçin maglumatlar bazasy meýdançasy bilen aşakdaky ýazgyny giriziň.

host    replication     replicator      10.20.20.8/24     md5

4. Indi üýtgeşmeleri ulanmak üçin aşakdaky systemctl buýrugyny ulanyp, Postgres12 hyzmatyny täzeden açyň.

# systemctl restart postgresql-12.service

5. Ondan soň, “firewalld” hyzmaty işleýän bolsa, garaşýan serwerden ussa haýyşlara rugsat bermek üçin “Firewalld” konfigurasiýasyna Postgresql hyzmatyny goşmaly.

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

2-nji ädim: Garaşýan serweri açmak üçin esasy ätiýaçlyk nusgasy

6. Ondan soň garaşma serwerinden esasy serweriň esasy ätiýaçlyk nusgasyny etmeli; bu garaşma serwerini ýüklemäge kömek edýär. Garaşylýan serwerdäki postgresql 12 hyzmatyny duruzmaly, postgres ulanyjy hasabyna geçmeli, maglumat bukjasyny ätiýaçlandyrmaly (/ var/lib/pgsql/12/data /), soňra bazany almazdan ozal aşagyndaky hemme zady pozmaly. ätiýaçlyk nusgasy.

# 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. Soňra pg_basebackup guralyny ulanyp, esasy ätiýaçlyk nusgasyny dogry eýeçilik hukugy bilen (maglumatlar bazasy ulgamy ulanyjysy, Postgres, Postgres ulanyjy hasabynyň içinde) we dogry rugsatlar bilen alyň.

Aşakdaky buýrukda opsiýa:

  • -h - baş serwer bolan öý eýesini kesgitleýär.
  • -D - maglumat katalogyny kesgitleýär.
  • -U - birikme ulanyjysyny kesgitleýär.
  • -P - ösüş barada hasabat bermäge mümkinçilik berýär.
  • -v - sözleýiş tertibini açýar.
  • -R - dikeldiş konfigurasiýasyny döretmäge mümkinçilik berýär: garaşma.signal faýl döredýär we maglumat katalogynyň aşagyndaky postgresql.auto.conf birikme sazlamalaryny goşuň.
  • -X - ätiýaçlyk nusgasyna zerur ýazuw faýllaryny (WAL faýllary) goşmak üçin ulanylýar. Akymyň gymmaty ätiýaçlyk döredilende WAL-y akmagy aňladýar.
  • -C - ätiýaçlyk nusgasyny başlamazdan ozal -S opsiýasy bilen atlandyrylan köpeltmek ýerini döretmäge mümkinçilik berýär.
  • -S - köpeltmek ýeriniň adyny görkezýär.

$ 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. uptiýaçlyk amal gutaransoň, garaşylýan serwerdäki täze maglumat katalogy skrinshotdaky ýaly bolmaly. Garaşma.signal döredilýär we birikme sazlamalary postgresql.auto.conf-a goşulýar. Ls buýrugyny ulanyp, mazmunyny sanap bilersiňiz.

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

Göçürmek guly, postgresql.conf-da hot_standby parametri (deslapky baha) düzülen bolsa we maglumat katalogynda garaşma.signal faýly bar bolsa, Hot garaşma re modeiminde işlär.

9. Indi baş serwere gaýdyp gelseňiz, pg_replication_slots görnüşini aşakdaky ýaly açanyňyzda pgstandby1 atly köpeltmek ýerini görüp bilersiňiz.

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

10. postgresql.auto.conf faýlynda goşulan birikme sazlamalaryny görmek üçin pişik buýrugyny ulanyň.

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

11. Indi garaşma serwerinde PostgreSQL hyzmatyny aşakdaky ýaly başlap, adaty maglumatlar bazasy amallaryna başlaň.

# systemctl start postgresql-12

3-nji ädim: PostgreSQL akym köpeltmesini barlamak

12. Ussat bilen garaşmagyň arasynda üstünlikli gurlandan soň, garaşma serwerinde akym ýagdaýy bolan WAL kabul ediji amalyny görersiňiz, pg_stat_wal_receiver görnüşi arkaly barlap bilersiňiz.

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

we esasy/başlangyç serwerde akym ýagdaýy we sinhron_sync ýagdaýy bolan WAL iberiji prosesi, bu pg_stat_replication pg_stat_replication görnüşini barlap bilersiňiz.

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

Aboveokardaky skrinshotdan akymyň köpeldilmegi asynkron däl. Indiki bölümde sinhron köpeltmäni nädip islemelidigini görkezeris.

13. Indi baş serwerde synag bazasyny döretmek arkaly köpeltmegiň gowy işleýändigini ýa-da garaşma serwerinde bardygyny barlaň.
[master] postgres=# Maglumatlar bazasyny dörediň;
[garaşma] postgres=#\l

Meýletin: Sinhron köpeltmäni açmak

14. Sinhron köpeltmek esasy maglumatlar bazasyna we garaşma/göçürme bilen bir wagtda amal (ýa-da maglumat ýazmak) mümkinçiligini hödürleýär. Diňe geleşikde edilen ähli üýtgeşmeleriň bir ýa-da birnäçe sinhron garaşma serwerine geçirilende amalyň üstünlikli bolandygyny tassyklaýar.

Sinhron köpeltmegi işjeňleşdirmek üçin sinhron_commit hem gurulmalydyr (bu deslapky baha, şonuň üçin hiç hili üýtgeşmäniň zerurlygy ýok) we sinhron_standby_names parametrini boş baha bellemeli. Bu gollanma üçin hemmesini belläris.

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

15. Soňra täze üýtgeşmeleri ulanmak üçin PostgreSQL 12 hyzmatyny täzeden ýükläň.

# systemctl reload postgresql-12.service

16. Indi esasy serwerde WAL iberiji amalyny ýene bir gezek sorasaňyz, akymyň ýagdaýyny we sinhronlaşdyryş döwletini görkezmeli.

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

Bu gollanmanyň soňuna geldik. CentOS 8-de PostgreSQL 12 garaşma maglumat bazasynyň akym köpeltmesini nädip gurmalydygyny görkezdik, şeýle hem PostgreSQL maglumat bazasy toparynda sinhron köpeltmäni nädip açyp boljakdygyny ara alyp maslahatlaşdyk.

Köpeltmegiň köp ulanylyşy bar we hemişe IT gurşawyňyza we/ýa-da amaly aýratyn talaplara laýyk çözgüt saýlap bilersiňiz. Has giňişleýin maglumat üçin PostgreSQL 12 resminamalarynda Log-Shipping garaşma serwerlerine gidiň.