Strømmereplikering og WAL
Konfigurer fysisk strømmereplikering basert på WAL, overvåk forsinkelse, og sett opp synkrone replikaer for skriving uten datatap.
Strømmereplikering og WAL er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hvorfor replikere?
Replikering dekker flere behov samtidig:
- HA – overlev en feil på primærserveren
- Leseskalering – avlast SELECT-spørringer til replikaer
- Sikkerhetskopiering / PITR – kontinuerlig arkivering
- Geografisk distribusjon – replikaer nær brukerne
WAL: Write-Ahead Log
Hver skriveoperasjon går først til WAL. WAL garanterer varighet og er grunnlaget for replikering: Strøm WAL til en replika → replikaen spiller av WAL → replikaen er oppdatert.
Fysisk strømmende replikering
En WAL-strøm fra primærserveren til replikaen, byte for byte:
- Replikaen er en binær kopi av primærserveren
- Samme Postgres-versjon
- Hele klyngen replikeres (alle databaser og alle tabeller)
- Skrivebeskyttet
Oppsett: primærserver
Konfigurer primærserveren i postgresql.conf:
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5Oppsett: replika
Opprett en grunnsikkerhetskopi og start med primary_conninfo:
pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P
-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'
-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signalSynkron kontra asynkron
- Async (standard) – primærserveren utfører COMMIT uten å vente, og replikaen kan ligge etter
- Sync – primærserveren venter på bekreftelse fra replikaen før COMMIT; ingen datatap, men lavere ytelse
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'Replikeringsforsinkelse
Asynkrone replikaer ligger etter primærserveren. Overvåk:
SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;Replikeringsspor
Spor sørger for at primærserveren beholder WAL til replikaen har konsumert den:
SELECT pg_create_physical_replication_slot('replica1');
-- On replica:
primary_slot_name = 'replica1'Fallgruve med replikeringsspor
Hvis en replika kobles fra og aldri kobler til igjen, hindrer sporet opprydding i WAL, og disken fylles opp. Slett ubrukte spor:
SELECT pg_drop_replication_slot('replica1');Kaskaderende replikaer
En replika kan selv strømme WAL til andre replikaer, noe som reduserer belastningen på primærserveren.
Hot Standby
Som standard godtar replikaer skrivebeskyttede spørringer (hot_standby = on). Langvarige lesespørringer på replikaen kan forsinke avspillingen av WAL. Juster max_standby_streaming_delay.
Promotering
Slik gjøres en replika til den nye primærserveren:
pg_ctl promote -D /var/lib/postgresql/data
-- Or in SQL:
SELECT pg_promote();Oppsummering
Strømmende replikering = overføring og avspilling av WAL.
- Fysisk og binært identisk
- Asynkron som standard; synkron for å unngå datatap
- Spor beholder WAL, men krever oppfølging
- Promotering gjør en replika til en primærserver
Hurtigsjekk
Hva er den største risikoen ved å IKKE bruke et replikeringsspor for en strømmende replika?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «Strømmereplikering og WAL» gratis?
Ja – hele teksten i «Strømmereplikering og WAL» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Strømmereplikering og WAL»?
Konfigurer fysisk strømmereplikering basert på WAL, overvåk forsinkelse, og sett opp synkrone replikaer for skriving uten datatap. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Strømmereplikering og WAL»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Strømmereplikering og WAL
- Logisk replikering for sharding
- Failover og ledervalg (Patroni, Stolon)
- Lesereplikaer og tilkoblingsruting