0Pricing
SQL Academy · Lekcja

Replikacja strumieniowa i WAL

Konfigurować fizyczną replikację strumieniową opartą na WAL, monitorować opóźnienie i konfigurować repliki synchroniczne dla zapisów bez utraty danych

Replikacja strumieniowa i WAL to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Dlaczego replikować?

Replikacja pozwala jednocześnie osiągnąć kilka celów:

  • HA — przetrwanie awarii serwera głównego
  • Skalowanie odczytu — odciążenie serwera głównego przez przekierowanie zapytań SELECT do replik
  • Kopia zapasowa / PITR — ciągła archiwizacja
  • Dystrybucja geograficzna — repliki znajdujące się blisko użytkowników

WAL: Write-Ahead Log

Każda operacja zapisu trafia najpierw do WAL. WAL gwarantuje trwałość danych i stanowi podstawę replikacji: WAL jest przesyłany do repliki → replika odtwarza WAL → replika jest aktualna.

Fizyczna replikacja strumieniowa

Strumień WAL przesyłany z serwera głównego do repliki bajt po bajcie:

  • Replika jest binarną kopią serwera głównego
  • Ta sama wersja PostgreSQL
  • Replikowany jest cały klaster (wszystkie bazy danych i wszystkie tabele)
  • Tylko do odczytu

Konfiguracja: serwer główny

Skonfiguruj serwer główny w pliku 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 md5

Konfiguracja: replika

Utwórz kopię bazową i uruchom replikę z parametrem 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.signal

Replikacja synchroniczna a asynchroniczna

  • Asynchroniczna (domyślna) — serwer główny zatwierdza transakcję bez oczekiwania; replika może mieć opóźnienie
  • Synchroniczna — serwer główny czeka na potwierdzenie repliki przed wykonaniem COMMIT; brak utraty danych, ale mniejsza szybkość
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'

Opóźnienie replikacji

Repliki asynchroniczne pozostają w tyle za serwerem głównym. Monitoruj:

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;

Sloty replikacji

Sloty gwarantują, że serwer główny zachowa WAL do czasu jego odebrania przez replikę:

SELECT pg_create_physical_replication_slot('replica1');

-- On replica:
primary_slot_name = 'replica1'

Pułapka związana ze slotami

Jeśli replika rozłączy się i nigdy nie połączy ponownie, jej slot uniemożliwi czyszczenie WAL, a dysk się zapełni. Usuń nieużywane sloty:

SELECT pg_drop_replication_slot('replica1');

Repliki kaskadowe

Replika może sama przesyłać WAL strumieniowo do innych replik, zmniejszając obciążenie serwera głównego.

Hot standby

Domyślnie repliki przyjmują zapytania tylko do odczytu (hot_standby = on). Długotrwałe zapytania odczytu na replice mogą opóźniać odtwarzanie WAL; dostosuj max_standby_streaming_delay.

Promowanie

Aby uczynić replikę nowym serwerem głównym:

pg_ctl promote -D /var/lib/postgresql/data

-- Or in SQL:
SELECT pg_promote();

Podsumowanie

Replikacja strumieniowa = przesyłanie WAL + odtwarzanie.

  • Fizyczna, identyczna binarnie
  • Domyślnie asynchroniczna; synchroniczna zapewnia brak utraty danych
  • Sloty zachowują WAL, ale wymagają ostrożnego zarządzania
  • Promowanie zmienia replikę w serwer główny

Szybkie sprawdzenie

Jakie jest główne ryzyko nieużywania slotu replikacji dla repliki strumieniowej?

Często zadawane pytania

Czy lekcja „Replikacja strumieniowa i WAL” jest bezpłatna?

Tak — pełny tekst „Replikacja strumieniowa i WAL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Replikacja strumieniowa i WAL”?

Konfigurować fizyczną replikację strumieniową opartą na WAL, monitorować opóźnienie i konfigurować repliki synchroniczne dla zapisów bez utraty danych Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Replikacja strumieniowa i WAL”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Replikacja strumieniowa i WAL
  2. Replikacja logiczna na potrzeby shardingu
  3. Failover i wybór lidera (Patroni, Stolon)
  4. Repliki tylko do odczytu i kierowanie połączeniami
← Powrót do SQL Academy