Ydelsesoptimering og optimering af forespørgsler i PostgreSQL · Lektion

Replikationsstrategier (streaming, logisk)

Forstå og konfigurer forskellige replikationsmetoder som streaming replication og logical replication til høj tilgængelighed og skalering af læsninger.

Lektion 2 af 412 trin

Replikationsstrategier (streaming, logisk) er en gratis Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hvorfor datareplikering?

Forestil dig, at din database går ned! Replikering er afgørende for at forhindre datatab og sikre, at dit program forbliver online. Den opretter kopier af din database.

Det er vigtigt for:

  • Høj tilgængelighed (HA): Hvis hovedserveren svigter, kan en kopi overtage.
  • Skalering af læsning: Fordel læseforespørgsler på flere servere for at reducere belastningen på den primære server.

Opsætningen med primær server og replika

Den mest almindelige replikationsopsætning er en model med primær server og replika (eller master-slave). Én databaseserver fungerer som den primære server og håndterer alle skriveoperationer.

  • Primær server: Behandler alle skriveoperationer (INSERT, UPDATE, DELETE).
  • Replika(er): Modtager kopier af dataændringer fra den primære server og kan besvare skrivebeskyttede forespørgsler.

Det sikrer datakonsistens og aflaster læsetrafikken.

Streamingreplikering: det grundlæggende

Streamingreplikering er PostgreSQLs indbyggede, fysiske replikationsmetode. Den fungerer ved løbende at sende Write-Ahead Log-poster (WAL-poster) fra den primære server til en eller flere replikaer.

WAL-poster er beskrivelser på lavt niveau af hver ændring, der foretages i databasen. Replikaerne anvender disse ændringer for at holde sig synkroniserede.

WAL-afsendelse i praksis

Sådan fungerer streamingreplikering:

  • Den primære server skriver alle databaseændringer til sine WAL-filer.
  • En dedikeret proces (WAL-afsenderen) på den primære server sender disse WAL-poster til replikaservere.
  • En proces (WAL-modtageren) på hver replika modtager og anvender disse poster.

Det holder replikaens data identiske med den primære servers data, blok for blok.

Opsætning af streamingreplikering (primær server)

Hvis du vil aktivere streamingreplikering på den primære server, skal du konfigurere postgresql.conf:

  • wal_level = replica (eller højere)
  • max_wal_senders = 10 (antal replikaer/forbindelser)
  • listen_addresses = '*' (tillad forbindelser fra replikaer)

Du skal også konfigurere pg_hba.conf, så replikaernes forbindelser tillades.

ALTER SYSTEM SET wal_level = 'replica';
ALTER SYSTEM SET max_wal_senders = 10;
ALTER SYSTEM SET listen_addresses = '*';

-- After these, restart PostgreSQL

Initialisering af en replika med pg_basebackup

Før en replika kan streame WAL, skal den have en fuld kopi af den primære servers data. pg_basebackup er standardværktøjet til dette.

Det opretter et konsistent øjebliksbillede af den primære servers datamappe, som derefter bliver replikaens oprindelige data.

pg_basebackup -h primary_host -p 5432 -U replication_user -D /var/lib/postgresql/data_replica -F p -Xs stream -P

Konfiguration af replikaen

Efter pg_basebackup skal replikaen bruge nogle få filer:

  • En standby.signal-fil i dens datamappe (til PostgreSQL 12+).
  • En postgresql.conf med hot_standby = on (hvis du vil køre forespørgsler).
  • En indstilling for primary_conninfo i postgresql.conf, der fortæller den, hvor den skal oprette forbindelse til den primære server.

Det gør det muligt for den at starte og oprette forbindelse som en replika.

ALTER SYSTEM SET hot_standby = 'on';
ALTER SYSTEM SET primary_conninfo = 'host=primary_host port=5432 user=replication_user password=your_password';

-- Create an empty standby.signal file:
touch /var/lib/postgresql/data_replica/standby.signal

-- Then start the replica PostgreSQL instance

Logisk replikering: en anden tilgang

Logisk replikering er en nyere og mere fleksibel replikationsmetode, der blev introduceret i PostgreSQL 10. I modsætning til streamingreplikering replikerer den data baseret på deres logiske repræsentation (rækkeændringer, ikke fysiske blokke).

Det gør det muligt at replikere bestemte tabeller eller endda databaser samt at replikere på tværs af versioner og platforme.

Publikationer og abonnementer

Logisk replikering bruger en publicerings- og abonnementsmodel:

  • En publikation oprettes på den primære server og definerer, hvilke tabeller eller ændringer der skal publiceres.
  • Et abonnement oprettes på replikaen og definerer, hvilke publikationer den skal abonnere på.

Den primære server sender derefter output fra logisk afkodning (ændringer) til abonnenterne, som anvender dem.

Opsætning af logisk replikering (eksempel)

Her er et forenklet eksempel på opsætning af logisk replikering:

På den primære server:

CREATE PUBLICATION my_pub FOR TABLE my_table;

På replikaen:

CREATE SUBSCRIPTION my_sub CONNECTION 'host=primary_host dbname=mydb user=repl_user password=xyz' PUBLICATION my_pub;

Husk at konfigurere wal_level = logical og max_replication_slots på den primære server.

ALTER SYSTEM SET wal_level = 'logical';
ALTER SYSTEM SET max_replication_slots = 5;

-- On Primary:
CREATE PUBLICATION my_pub FOR TABLE my_table;

-- On Replica:
CREATE SUBSCRIPTION my_sub CONNECTION 'host=primary_host dbname=mydb user=repl_user password=xyz' PUBLICATION my_pub;

Tjek af replikationsstrategi

Du skal konfigurere replikering for en PostgreSQL-database. Du ønsker en nøjagtig kopi af hele databasen, blok for blok, på en standbyserver af hensyn til høj tilgængelighed. Hvilken replikationsmetode egner sig bedst til dette mål?

Opsummering: streaming kontra logisk replikering

Vi har gennemgået to vigtige PostgreSQL-replikationsstrategier:

  • Streamingreplikering: En fysisk, kontinuerlig kopi af hele databasen ved hjælp af WAL-filer. Velegnet til høj tilgængelighed og skalering af læsning med identiske replikaer.
  • Logisk replikering: En fleksibel publicerings- og abonnementsmodel, der replikerer logiske ændringer (rækker). Ideel til selektiv replikering, opgraderinger på tværs af versioner eller integration med andre systemer.

Valget af den rigtige strategi afhænger af dine specifikke behov for konsistens, fleksibilitet og ydeevne.

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
88

Ofte stillede spørgsmål

Er lektionen “Replikationsstrategier (streaming, logisk)” gratis?

Ja — alle 3 lektioner i læringssporet Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, inklusive “Replikationsstrategier (streaming, logisk)”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Replikationsstrategier (streaming, logisk)”?

Forstå og konfigurer forskellige replikationsmetoder som streaming replication og logical replication til høj tilgængelighed og skalering af læsninger. Du øver dig i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Ydelsesoptimering og optimering af forespørgsler i PostgreSQL?

Der kræves ingen tidligere erfaring. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Replikationsstrategier (streaming, logisk)”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion?

Ja. Alle Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Connection pooling med PgBouncer
  2. Replikationsstrategier (streaming, logisk)
  3. Sharding og distribueret PostgreSQL
  4. Læseskalering med Hot Standby og load balancing
← Tilbage til Ydelsesoptimering og optimering af forespørgsler i PostgreSQL