Avancerad PostgreSQL: indexering, partitionering och replikering · Lektion

Fysisk replikering (streaming)

Lär er att konfigurera fysisk streamingreplikering för att skapa en skrivskyddad standby-server.

Lektion 2 av 411 steg

Fysisk replikering (streaming) är en gratis lektion i Avancerad PostgreSQL: indexering, partitionering och replikering på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Avancerad PostgreSQL: indexering, partitionering och replikering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad PostgreSQL: indexering, partitionering och replikering innehåller totalt 4 lektioner.

Fysisk replikering: en exakt bytekopia

Fysisk replikering i PostgreSQL skapar en exakt kopia av den primära databasservern, byte för byte. Tänk på det som en spegling av hela datakatalogen och alla ändringar som sker.

Metoden är mycket robust för katastrofåterställning och ger en konsekvent skrivskyddad kopia av dina data, kallad en standbyserver. Om primärservern slutar fungera kan du befordra standbyservern till ny primärserver.

Så fungerar strömmande replikering

Strömmande replikering är en form av fysisk replikering där primärservern kontinuerligt skickar sina Write-Ahead Log (WAL)-poster till standbyservern. Standbyservern tillämpar sedan dessa WAL-poster i realtid.

Det säkerställer att standbyservern alltid är uppdaterad med primärservern och minimerar dataförlust vid ett fel. Det liknar en ständig ström av uppdateringar från en databas till en annan.

Primärkonfiguration: `wal_level`

För att aktivera strömmande replikering måste primärservern generera tillräckligt med WAL-information. Parametern wal_level styr detta.

Den måste ställas in på replica (eller logical för mer avancerade funktioner) i postgresql.conf. Standardnivån minimal räcker inte för replikering.

Kontrollera den aktuella wal_level:

SHOW wal_level;

Primärkonfiguration: `max_wal_senders`

Primärservern behöver processer för att skicka WAL-data till standbyservrar. Dessa kallas WAL-sändarprocesser.

Parametern max_wal_senders anger det maximala antalet samtidiga anslutningar från standbyservrar. Ställ in den på minst det antal standbyservrar du planerar att ha, plus några extra för eventuella kaskaderade standbyservrar.

Kontrollera den aktuella inställningen:

SHOW max_wal_senders;

Skapa en replikeringsanvändare

Det är en god praxis att skapa en särskild PostgreSQL-användare för replikering. Användaren behöver privilegiet REPLICATION, vilket gör att den kan ansluta och strömma WAL-data.

Denna separering ökar säkerheten och tydliggör vilka anslutningar som används för replikering.

Så här kan du skapa en sådan användare (ersätt med ett starkt lösenord):

CREATE USER repl_user WITH REPLICATION ENCRYPTED PASSWORD 'your_secret_password';

Tillåt standbyanslutningar (`pg_hba.conf`)

Primärservern måste tillåta anslutningar från standbyservern. Detta konfigureras i filen pg_hba.conf, som styr klientautentisering.

Du behöver lägga till en post för replikeringsanvändaren och ange IP-adressen eller intervallet för standbyservern eller -servrarna. Då instrueras PostgreSQL att lita på anslutningar från dessa standbyservrar.

# Example pg_hba.conf entry:
host    replication     repl_user       192.168.1.100/32        md5

Basbackup för standbyservern

Innan en standbyserver kan börja strömma WAL behöver den en första kopia av primärserverns datakatalog. Detta kallas en basbackup.

PostgreSQL tillhandahåller verktyget pg_basebackup för att skapa denna ögonblicksbild. Det kopierar alla datafiler från primärservern till standbyservern och säkerställer att de börjar från en konsekvent tidpunkt.

Kommandot körs vanligtvis från standbyservern:

# Example pg_basebackup command (run on standby):
pg_basebackup -h primary_ip -p 5432 -U repl_user -D /var/lib/postgresql/16/main -F p -Xs -P -R

Standbykonfiguration: `standby.signal`

När basbackupen är på plats måste standbyservern få veta att den är en standbyserver. I PostgreSQL 12 och senare signaleras detta genom att det finns en tom fil med namnet standby.signal i datakatalogen.

Filen instruerar PostgreSQL att starta i återställningsläge och leta efter replikeringskonfiguration.

Standbykonfiguration: `primary_conninfo`

Standbyservern måste också veta hur den ska ansluta till primärservern. Detta anges med parametern primary_conninfo i dess fil postgresql.conf.

Det är en anslutningssträng som liknar den du skulle använda med psql och innehåller primärserverns värd, port, replikeringsanvändare och lösenord.

Du kan ange detta med ALTER SYSTEM på standbyservern:

ALTER SYSTEM SET primary_conninfo = 'host=primary_ip port=5432 user=repl_user password=your_secret_password application_name=my_standby';

Kontroll av replikeringskonfiguration

Du har lärt dig de centrala parametrarna för att konfigurera strömmande replikering. Nu testar vi dina kunskaper!

Sammanfattning: fysisk strömmande replikering

I den här lektionen gick vi igenom fysisk strömmande replikering. Du lärde dig att den skapar en byte-för-byte-kopia av primärdatabasen genom att kontinuerligt skicka WAL-poster.

  • Vi gick igenom konfiguration av primärservern, bland annat wal_level och max_wal_senders.
  • Du lärde dig också att skapa en särskild replikeringsanvändare och konfigurera pg_hba.conf.
  • Slutligen berörde vi hur standbyservern förbereds med en basbackup med hjälp av pg_basebackup och hur anslutningen konfigureras med primary_conninfo.

Nästa steg är att omsätta dessa koncept i praktiken genom att konfigurera en standbyserver!

Gratis att börja

Lär dig Avancerad PostgreSQL: indexering, partitionering och replikering med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
11
Lektioner
44

Vanliga frågor

Är lektionen ”Fysisk replikering (streaming)” gratis?

Ja – hela texten till ”Fysisk replikering (streaming)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Avancerad PostgreSQL: indexering, partitionering och replikering, kan Ni uppgradera till CoddyKit PRO. Kursen i Avancerad PostgreSQL: indexering, partitionering och replikering innehåller totalt 4 lektioner.

Vad lär jag mig i ”Fysisk replikering (streaming)”?

Lär er att konfigurera fysisk streamingreplikering för att skapa en skrivskyddad standby-server. Ni övar på Avancerad PostgreSQL: indexering, partitionering och replikering med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Avancerad PostgreSQL: indexering, partitionering och replikering?

Du behöver inga förkunskaper. Utbildningen i Avancerad PostgreSQL: indexering, partitionering och replikering på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Fysisk replikering (streaming)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Avancerad PostgreSQL: indexering, partitionering och replikering-lektionen?

Ja. Varje Avancerad PostgreSQL: indexering, partitionering och replikering-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Förstå replikeringskoncept
  2. Fysisk replikering (streaming)
  3. Konfigurera en standby-server
  4. Synkron kontra asynkron replikering
← Tillbaka till Avancerad PostgreSQL: indexering, partitionering och replikering