Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi · Oppitunti

Konfliktien ratkaiseminen loogisessa replikaatiossa

Opitte, miten konfliktit syntyvät loogisessa replikaatiossa ja millaisia strategioita PostgreSQL tarjoaa niiden havaitsemiseen ja ratkaisemiseen.

Oppitunti 4/413 vaihetta

Konfliktien ratkaiseminen loogisessa replikaatiossa on ilmainen Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssilla on yhteensä 4 oppituntia.

Miksi ristiriitoja syntyy

Toisin kuin fyysinen replikointi, looginen replikointi soveltaa muutokset tilaajassa SQL-tason operaatioina. Jos paikalliset tiedot poikkeavat saapuvasta muutoksesta, syntyy ristiriita ja soveltaminen pysähtyy.

Yleiset ristiriitatyypit

Tyypillisiä ristiriitoja ovat:

  • Yksilöllisyysrikkomus — samaa avainta käyttävä rivi on jo olemassa
  • Puuttuva rivi — UPDATE- tai DELETE-toiminto kohdistuu tilaajalta puuttuvaan riviin
  • Tyypin tai rajoitteen yhteensopimattomuus

Soveltavan työntekijän pysähtyminen

Kun ristiriita ilmenee, tilauksen soveltava työntekijä päättyy virheeseen ja yrittää samaa tapahtumaa toistuvasti uudelleen, jolloin replikoinnin viive kasvaa, kunnes puututte tilanteeseen.

Ristiriidan löytäminen

PostgreSQL-loki tallentaa epäonnistuneen tapahtuman ja sen LSN:n. Voitte tarkastella myös tilauksen tilastotietoja.

SELECT subname, last_error_time, last_error_message
FROM pg_stat_subscription_stats;

Ratkaiseminen tietoja korjaamalla

Yksi vaihtoehto on saattaa paikalliset tiedot yhdenmukaisiksi, jotta muutos voidaan soveltaa: poistakaa ristiriidan aiheuttava rivi ja antakaa replikoinnin yrittää uudelleen.

DELETE FROM products WHERE id = 42;
-- the incoming INSERT for id 42 now applies

Tapahtuman ohittaminen

Jos ongelman aiheuttava muutos pitäisi jättää huomiotta, ohittakaa se LSN:n perusteella. Toimikaa varovasti, sillä tällöin kyseiset tiedot hylätään.

ALTER SUBSCRIPTION my_sub SKIP (lsn = '0/14A0B30');

Käytöstä poistaminen virheen sattuessa

Määrittäkää tilaus poistamaan itsensä käytöstä virheen sattuessa, jotta se lopettaa uudet yritykset ja jää odottamaan ylläpitäjää.

ALTER SUBSCRIPTION my_sub SET (disable_on_error = true);

Ristiriitojen ehkäiseminen

Vähentäkää ristiriitoja seuraavasti:

  • Käyttäkää yhtä kirjoittajaa loogista tietojoukkoa kohden
  • Välttäkää päällekkäisiä pääavainalueita solmujen välillä
  • Varmistakaa, että tilaajan skeema vastaa julkaisijan skeemaa

Replikan identiteetillä on merkitystä

UPDATE- ja DELETE-toiminnot tarvitsevat replikan identiteetin kohderivin löytämiseen. Taulu, jolla ei ole pääavainta, tarvitsee asetuksen REPLICA IDENTITY FULL, muuten replikointi epäonnistuu.

ALTER TABLE logs REPLICA IDENTITY FULL;

Viiveen valvonta

Seuratkaa julkaisijan näkymää pg_replication_slots; pysähtynyt tilaaja pitää WAL:n varattuna ja kasvattaa paikkaa, mikä voi täyttää levyn.

SELECT slot_name, active, pg_size_pretty(
  pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn))
FROM pg_replication_slots;

Toimintaohjeen dokumentointi

Koska ristiriidat edellyttävät manuaalista harkintaa, tiimit ylläpitävät toimintaohjetta: miten ristiriita tunnistetaan, korjataanko tiedot vai ohitetaanko tapahtuma ja miten yhdenmukaisuus varmistetaan sen jälkeen.

Pikatarkistus

Saapuva INSERT aiheuttaa tilaajassa yksilöllisyysrikkomuksen. Mikä on turvallisin ratkaisu?

Kertaus

Opitte, miten loogisen replikoinnin ristiriidat syntyvät, miten ne löydetään tilastojen ja lokien avulla sekä miten ne ratkaistaan korjaamalla tiedot, ohittamalla LSN tai käyttämällä asetusta disable_on_error. Asianmukainen replikan identiteetti ja yhden kirjoittajan rakenne ehkäisevät useimmat ristiriidat.

Aloita maksutta

Opi Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
11
Oppitunnit
44

Usein kysytyt kysymykset

Onko oppitunti ”Konfliktien ratkaiseminen loogisessa replikaatiossa” ilmainen?

Kyllä – oppitunnin ”Konfliktien ratkaiseminen loogisessa replikaatiossa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssin, päivitä CoddyKit PROhon. Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Konfliktien ratkaiseminen loogisessa replikaatiossa”?

Opitte, miten konfliktit syntyvät loogisessa replikaatiossa ja millaisia strategioita PostgreSQL tarjoaa niiden havaitsemiseen ja ratkaisemiseen. Harjoittelet Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Konfliktien ratkaiseminen loogisessa replikaatiossa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunnilla?

Kyllä. Jokainen Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Loogisen replikoinnin perusteet
  2. Julkaisujen määrittäminen
  3. Tilausten hallinta
  4. Konfliktien ratkaiseminen loogisessa replikaatiossa
← Takaisin: Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi