PostgreSQL 12 voogesituse replikatsiooni seadistamine CentOS 8 -s

PostgreSQL andmebaas toetab mitut replikatsioonilahendust suure kättesaadavusega, skaleeritavate ja tõrkekindlate rakenduste loomiseks, millest üks on Kirjutamislogi (WAL) Saatmine. See lahendus võimaldab rakendada ooterežiimis serverit, kasutades failipõhist logi saatmist või voogesituse replikatsiooni või võimaluse korral mõlema lähenemisviisi kombinatsiooni.

Voogesituse replikatsiooni korral on ooterežiimi (replikatsiooni alam) andmebaasiserver konfigureeritud ühendama põhi-/põhiserveriga, mis voogesitab WAL salvestused ooterežiimile, kui need on loodud, ootamata WAL fail tuleb täita.

Vaikimisi on voogesituse replikatsioon asünkroonne, kus andmed kirjutatakse ootereiserverisse pärast seda, kui primaarserveris on tehing tehtud. See tähendab, et peaserveris tehingu sooritamise ja ooterežiimis nähtavaks muutmise vahel on väike viivitus. Selle lähenemisviisi üks negatiivne külg on see, et kui peaserver jookseb kokku, ei pruugita sidumata tehinguid kopeerida ja see võib põhjustada andmete kadu.

See juhend näitab, kuidas seadistada a Postgresql 12 põhiooterežiimi voogesituse replikatsioon on sisse lülitatud CentOS 8. Me kasutame "replikatsiooniajad”Ooterežiimi jaoks, et vältida peaserveri vana ümbertöötlemist WAL enne ooterežiimi vastuvõtmist.

Pange tähele, et võrreldes teiste meetoditega säilitavad replikatsiooniajad ainult teadaolevalt vajalike segmentide arvu.

Katsekeskkond:

Selles juhendis eeldatakse, et olete põhijuhtme- ja ooterežiimis andmebaasi serveritega ühendatud juurjuurdepääsu kaudu SSH (kasutamine Sudo käsku vajadusel, kui olete ühendatud tavakasutajana administraatori õigustega):

Postgresql andmebaasi põhiserver: 10.20.20.9. Postgresql ooterežiimis andmebaasi server: 10.20.20.8. 

Mõlemal andmebaasiserveril peab olema Postgresql 12 paigaldatud, vastasel juhul vaadake: Kuidas installida PostgreSQL ja pgAdmin CentOS 8 -sse.

Märge: PostgreSQL 12 kaasneb suurte muudatustega replikatsiooni rakendamises ja konfiguratsioonis, näiteks asendamine recovery.conf ja konverteerimine recovery.conf parameetrid tavalistele PostgreSQL -i konfiguratsiooniparameetritele, muutes klastrite replikatsiooni palju lihtsamaks.

1. toiming: PostgreSQL põhi-/esmase andmebaasiserveri konfigureerimine

1. Lülitage peaserveris postgres -i süsteemikontole ja konfigureerige IP -aadress (id), millel peaserver klientide ühendusi kuulab.

Sel juhul kasutame * tähendab kõike.

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

ALTER SYSTEM SET SQL -käsk on võimas funktsioon serveri konfiguratsiooniparameetrite muutmiseks otse SQL -päringuga. Konfiguratsioonid salvestatakse kausta postgresql.conf.auto fail, mis asub andmekausta juurest (nt /var/lib/pgsql/12/data/) ja lugege lisaks salvestatule postgresql.conf. Kuid esimesed konfiguratsioonid on ülimuslikud hilisemate ja muude seotud failide omadele.

IP -aadresside seadistamine PostgreSQL Masteris
IP -aadresside seadistamine PostgreSQL Masteris

2. Seejärel looge replikatsiooniroll, mida kasutatakse ooterežiimis serveri ja põhiserveriga ühendamiseks createuser programmi. Järgmises käsus, -P lipp küsib uue rolli jaoks parooli ja -e kordab käske, mille kasutaja loob ja andmebaasiserverisse saadab.

# su - postgres. $ createuser --replication -P -e replikaator. $ väljapääs. 
Looge replikatsioonikasutaja Pgmasteris
Looge replikatsioonikasutaja Pgmasteris

3. Seejärel sisestage kirje lõpus järgmine kirje /var/lib/pgsql/12/data/pg_hba.conf kliendi autentimise konfiguratsioonifail, mille andmebaasi väli on seatud replikatsiooniks, nagu on näidatud ekraanipildil.

hosti replikatsiooni replikaator 10.20.20.8/24 md5. 
Replikatsiooni autentimise seadistamine
Replikatsiooni autentimise seadistamine

4. Nüüd taaskäivitage 12 teenus, kasutades muudatuste rakendamiseks järgmist käsku systemctl.

# systemctl taaskäivitage postgresql-12.teenus. 

5. Järgmisena, kui teil on tulemüür teenus töötab, peate lisama teenuse Postgresql tulemüüri konfiguratsiooni, et lubada ooterežiimis serverilt päringutele.

# tulemüür-cmd --add-service = postgresql --permanent. # tulemüür-cmd-uuesti laadimine. 

2. samm: baasvarunduse tegemine ooterežiimi käivitamiseks

6. Järgmisena peate ooterežiimis serverist tegema põhiserveri baasvarunduse; see aitab ooterežiimis serverit käivitada. Peate ooterežiimis serveris postgresql 12 teenuse peatama, lülituma postgresi kasutajakontole, varundama andmekataloogi (/var/lib/pgsql/12/data/), seejärel kustutage enne baasvarunduse tegemist kõik selle all olevad joonised.

# systemctl stop postgresql-12.teenus. # su - postgres. $ cp -R/var/lib/pgsql/12/data/var/lib/pgsql/12/data_orig. $ rm -rf/var/lib/pgsql/12/data/*

7. Seejärel kasutage pg_basebackup tööriist varukoopia tegemiseks õige omandiga (andmebaasisüsteemi kasutaja, s.t Postgres, piires Postgres kasutajakonto) ja õigete õigustega.

Järgmises käsus on valik:

  • -h - määrab hosti, mis on peaserver.
  • -D - määrab andmete kataloogi.
  • -U - määrab ühenduse kasutaja.
  • -P - võimaldab edusammude aruandlust.
  • -v - lubab paljusõnalist režiimi.
  • -R - võimaldab luua taastamise konfiguratsiooni: loob a ooterežiimis.signaal fail ja lisage sellele ühenduse seaded postgresql.auto.conf andmekataloogi all.
  • -X -kasutatakse nõutavate ette kirjutatavate logifailide (WAL-failide) kaasamiseks varukoopiasse. Voo väärtus tähendab WAL -i voogesitamist varukoopia loomise ajal.
  • -C -võimaldab enne varundamise alustamist luua valiku -S nimega replikatsioonipesa.
  • -S - määrab replikatsioonipesa nime.
$ pg_basebackup -h 10.20.20.9 -D/var/lib/pgsql/12/data -U replikaator -P -v -R -X oja -C -S pgstandby1. $ väljapääs. 
Põhiserveri baasvarundus
Põhiserveri baasvarundus

8. Kui varundusprotsess on lõpule viidud, peaks ooterežiimi serveri uus andmekataloog ekraanipildil välja nägema. A ooterežiimis.signaal luuakse ja ühenduse seaded lisatakse postgresql.auto.conf. Saate selle sisu loetleda, kasutades ls käsk.

# ls -l/var/lib/pgsql/12/data/
Kontrollige varundatud andmete kataloogi
Kontrollige varundatud andmete kataloogi

Replikatsiooni ori töötab "Kuum ooterežiim”Režiimis, kui kuum_ooterežiim parameeter on sisse lülitatud (vaikeväärtus) postgresql.conf ja seal on a ooterežiimis.signaal fail, mis asub andmekataloogis.

9. Nüüd tagasi peaserveris peaksite nägema replikatsioonipesa nimega pgstandby1 kui avate pg_replication_slots vaadake järgmiselt.

# su - postgres. $ psql -c "SELECT * FROM pg_replication_slots;" $ väljapääs.
Loo replikatsioonipesa
Loo replikatsioonipesa

10. Kaustale lisatud ühenduse seadete vaatamiseks postgresql.auto.conf faili, kasutage kassi käsk.

# cat /var/lib/pgsql/12/data/postgresql.auto.conf. 
Vaadake ühenduse seadeid
Vaadake ühenduse seadeid

11. Nüüd alustage ooterežiimis tavalisi andmebaasitoiminguid, käivitades PostgreSQL -teenuse järgmiselt.

# systemctl käivitage postgresql-12. 

3. samm: PostgreSQL -i voogesituse replikatsiooni testimine

12. Kui ühendus põhiseadme ja ooterežiimi vahel on edukalt loodud, näete a WAL Kui voogesituse olekuga ooterežiimis on vastuvõtjaprotsess, saate seda kontrollida pg_stat_wal_receiver vaade.

$ psql -c "\ x" -c "SELECT * FROM pg_stat_wal_receiver;"
Kontrollige WAL -vastuvõtja protsessi
Kontrollige WAL -vastuvõtja protsessi

ja vastav WAL saatjaprotsess põhi-/põhiserveris voogesituse olekuga ja a sync_state async, saate vaadata seda pg_stat_replication pg_stat_replication vaadet.

$ psql -c "\ x" -c "SELECT * FROM pg_stat_replication;"
Kontrollige WAL -saatja protsessi Masteris
Kontrollige WAL -saatja protsessi Masteris

Ülaltoodud ekraanipildilt on voogesituse replikatsioon asünkroonne. Järgmises osas demonstreerime, kuidas sünkroonset replikatsiooni valikuliselt lubada.

13. Nüüd kontrollige, kas replikatsioon töötab hästi, luues peaserverisse testandmebaasi ja kontrollige, kas see on ooterežiimis.
[master] postgres =# CREATE DATABASE tecmint;
[ooterežiim] postgres =# \ l

Testi voogesituse replikatsiooni
Testi voogesituse replikatsiooni

Valikuline: sünkroonse replikatsiooni lubamine

14. Sünkroonne replikatsioon pakub võimalust tehingu tegemiseks (või andmete kirjutamiseks) samaaegselt esmase andmebaasi ja ooterežiimi/koopiaga. See kinnitab ainult seda, et tehing on edukas, kui kõik tehinguga tehtud muudatused on üle viidud ühte või mitmesse sünkroonsesse ooterežiimiserverisse.

Sünkroonse replikatsiooni lubamiseks synchronous_commit peab olema ka sisse lülitatud (mis on vaikeväärtus, seega pole vaja mingeid muudatusi teha) ja peate ka seadistama synchronous_standby_names parameeter mitte-tühjaks väärtuseks. Selle juhendi jaoks määrame selle kõigile.

$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO '*';"
Seadistage sünkroonimise ooterežiimi nimed Masteris
Seadistage sünkroonimise ooterežiimi nimed Masteris

15. Seejärel laadige PostgreSQL 12 teenus uute muudatuste rakendamiseks uuesti.

# systemctl laadige uuesti postgresql-12.teenus. 

16. Nüüd, kui esitate päringu WAL saatjaprotsessi esmaserveris, peaks see näitama voogesituse olekut ja a sync_state kohta sünkroonida.

$ psql -c "\ x" -c "SELECT * FROM pg_stat_replication;"
Kontrollige WAL -saatja protsessi Masteris
Kontrollige WAL -saatja protsessi Masteris

Oleme jõudnud selle juhendi lõppu. Oleme näidanud, kuidas seadistada PostgreSQL 12 põhiooteloleku andmebaasi voogesituse replikatsioon sisse CentOS 8. Samuti käsitlesime sünkroonse replikatsiooni lubamist PostgreSQL andmebaasi klastris.

Replikatsiooni saab kasutada mitmel viisil ja alati saate valida lahenduse, mis vastab teie IT-keskkonnale ja/või rakendusepõhistele nõuetele. Üksikasjalikuma teabe saamiseks minge aadressile Logi kohaletoimetamise ooteserverid PostgreSQL 12 dokumentatsioonis.

Teachs.ru