Descrierea replicării și a decodării logice
Parametrul wal_level vă permite să definiți cât de multe informații trebuie scrise în jurnal. Există două opțiuni: LOGIC sau REPLICA. REPLICA este valoarea implicită. Acest parametru este setat la pornirea serverului.
Disponibilitate ridicată
Disponibilitatea ridicată este un serviciu Azure Database for PostgreSQL, care oferă un server de așteptare gata să preia dacă există o eroare pe serverul live. Disponibilitatea ridicată în Azure Database pentru serverul flexibil PostgreSQL utilizează replicarea pentru a actualiza automat serverul de rezervă cu modificări de date.
Atunci când configurați disponibilitatea ridicată pentru serverul flexibil Azure Database for PostgreSQL, serverul principal este plasat într-o zonă de disponibilitate și se creează un server de rezervă într-o altă zonă de disponibilitate. Datele sunt replicate de la serverul principal la serverul de rezervă utilizând replicarea în flux PostgreSQL în modul sincron.
Fiecare zonă de disponibilitate este formată din unul sau mai multe centre de date. Zonele de disponibilitate au propriile surse de alimentare, sisteme de răcire, infrastructură de rețea etc., făcându-le independente una de cealaltă. Trei copii ale fișierelor de date și ale fișierelor de jurnal de scriere înainte (WAL) sunt stocate pe stocare redundantă local în fiecare zonă de disponibilitate, oferind izolare fizică între serverele principale și cele de rezervă. Dacă o zonă de disponibilitate eșuează, celelalte două probabil continuă să funcționeze. Zonele de disponibilitate dintr-o regiune sunt conectate prin rețele rapide de fibră optică cu o latență dus-întors mai mică de 2 milisecunde.
Notă
Nu toate regiunile au zone de disponibilitate.
Cu disponibilitate ridicată, datele sunt duplicate tot timpul în care baza de date este utilizată, oferind o copie actualizată a originalului. Dacă există un accident, replica poate fi folosită în locul originalului. Replicarea are un server principal și un server de rezervă . Serverul principal trimite fișiere jurnal WAL către serverul de așteptare , care primește fișierele jurnal WAL.
Serverul de așteptare raportează la serverul principal cu informații precum ultimul jurnal de scriere înainte pe care l-a scris și ultima poziție spălată pe disc etc. Pentru a defini frecvența minimă pentru ca receptorul WAL să trimită înapoi un raport, setați parametrul wal_receiver_status_interval . Parametrul max_replication_slots definește numărul maxim de sloturi de replicare pe care serverul le poate accepta. Când wal_level este setat la REPLICA, max_replication_slots trebuie să fie cel puțin unul, cu toate acestea, intervalul de valori permise este între 0 și 262.143.
Parametrul max_wal_senders setează numărul maxim de procese de expeditor WAL.
Serverele principale și de rezervă sunt monitorizate și se iau măsuri adecvate pentru a remedia problemele, inclusiv declanșarea unui failover la serverul de rezervă. În cele ce urmează, sunt listate stările de disponibilitate ridicată redundante în zonă:
- Inițializare - În procesul de creare a unui nou server de așteptare.
- Replicare - Replicarea datelor este în stare stabilă și sănătoasă.
- Sănătos - Standby-ul este actualizat de către primar.
- Failover - Serverul principal de baze de date este în proces de failover în standby.
- Eliminarea standby-ului - În procesul de ștergere a serverului standby.
- Neactivat - Disponibilitatea ridicată redundantă în zonă nu este activată.
Puteți adăuga disponibilitate ridicată pentru un server de baze de date existent. Dacă activați sau dezactivați disponibilitatea ridicată pe un server live, efectuați operațiunea atunci când există puțină activitate.
Din portalul Azure:
- Navigați la serverul Azure Database for PostgreSQL.
- Din secțiunea Prezentare generală, selectați configurația curentă. Se afișează secțiunea Calcul + Stocare.
- Sub Disponibilitate ridicată, bifați caseta de selectare Disponibilitate ridicată (redundantă zonă) pentru a activa disponibilitatea ridicată. Disponibilitatea ridicată nu este acceptată pentru nivelul Burstable.
Este important de reținut că disponibilitatea ridicată este o opțiune de recuperare în caz de dezastru. Nu puteți utiliza serverul de așteptare în niciun alt scop, cum ar fi permiterea accesului la baze de date doar în citire. Cu toate acestea, puteți configura replicarea între două servere Azure Database for PostgreSQL utilizând un model de editor și abonat. Această configurație menține două servere cu date replicate între ele. Apoi aveți acces complet la serverul abonat și puteți utiliza bazele de date în orice scop. Exersați această configurație în exercițiul de la sfârșitul acestui modul.
Decodare logică
Decodarea logică utilizează, de asemenea, datele trimise în jurnalul de scriere înainte. După cum sugerează și numele, decodifică intrările din jurnalul de scriere înainte pentru a le face ușor de înțeles. Toate modificările INSERT, UPDATE și DELETE sunt disponibile pentru decodarea logică.
Decodarea logică poate fi folosită pentru audit, analiză sau orice alt motiv pentru care ați putea fi interesat să știți ce s-a schimbat și când s-a schimbat.
Decodarea logică extrage modificările din toate tabelele din baza de date. Diferă de replicare prin faptul că nu poate trimite aceste modificări către alte instanțe PostgreSQL. În schimb, o extensie PostgreSQL oferă un plugin de ieșire pentru a transmite modificările.
Decodarea logică permite decodificarea conținutului jurnalului de scriere înainte într-un format ușor de înțeles, care poate fi interpretat fără cunoașterea structurii bazei de date. Azure Database for PostgreSQL acceptă decodarea logică utilizând extensia wal2json , care este instalată pe serverele Azure Database for Postgres.
Pot fi utilizate și alte extensii, cum ar fi extensia pglogical, care permite replicarea logică în flux.
Pentru a utiliza decodarea logică, în Parametrii serverului, setați:
- wal_level la LOGIC
- max_replication_slots = 10
- max_wal_senders = 10
Serverul trebuie repornit după efectuarea acestor modificări.
Pentru a utiliza extensia pglogical din portalul Azure:
- Navigați la serverul Azure Database for PostgreSQL.
- Selectați Parametrii serverului și căutați shared_preload_libraries. Din caseta verticală, selectați pglogical.
- Căutați azure.extensions. Din caseta verticală, selectați pglogical.
- Pentru a aplica modificările, reporniți serverul.
De asemenea, trebuie să acordați utilizatorului administrator permisiuni pentru replicare:
ALTER ROLE <adminname> WITH REPLICATION;
Pentru mai multe informații, consultați documentația online a extensiei pglogical.
Decodarea logică generează modificări de date ca un flux numit slot de replicare logică.
- Fiecare slot are un plugin de ieșire, pe care îl puteți defini.
- Fiecare slot oferă modificări dintr-o singură bază de date, dar o bază de date poate avea mai multe sloturi.
- Fiecare modificare a datelor este emisă în mod normal o dată pe slot.
- Dacă PostgreSQL repornește, un slot ar putea reemite modificări, pe care clientul trebuie să le gestioneze.
- Sloturile trebuie monitorizate. Sloturile neconsumate păstrează toate fișierele WAL pentru acele modificări neconsumate. Această situație poate duce la stocarea completă sau la înfășurarea ID-ului tranzacției.