Replikacja logiczna na potrzeby shardingu
Używać replikacji logicznej PUBLICATION/SUBSCRIPTION do przenoszenia tabel między klastrami i obsługi aktualizacji do głównej wersji
Replikacja logiczna na potrzeby shardingu to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 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.
Replikacja logiczna a fizyczna
Replikacja fizyczna replikuje BAJTY WAL — cały klaster w tej samej wersji. Logiczna replikuje WIERSZE — wybrane tabele, potencjalnie między różnymi wersjami PG:
- Subskrypcja wybranych tabel
- Replikacja z PG 14 do PG 16 (czyli także aktualizacje wersji!)
- Dwukierunkowa / multi-master, przy zachowaniu ostrożności
- Dozwolone różne schematy
Konfiguracja: wydawca
Oznacz serwer główny jako wydawcę:
-- postgresql.conf
wal_level = logical
-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;
-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;Konfiguracja: subskrybent
W docelowej bazie danych:
CREATE SUBSCRIPTION sub_orders
CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
PUBLICATION pub_orders;Synchronizacja początkowa
Subskrypcja wykonuje początkową kopię wszystkich pasujących tabel, a następnie przesyła zmiany strumieniowo. Schemat docelowy musi odpowiadać schematowi źródłowemu.
Zastosowanie: aktualizacja głównej wersji
Replikacja logiczna to współczesny sposób aktualizacji PostgreSQL przy minimalnym przestoju:
- Utwórz klaster PG16
- Wykonaj replikację logiczną z PG14 do PG16
- Przełącz aplikacje, gdy PG16 nadrobi opóźnienie
- Wyłącz PG14
Zastosowanie: podział bazy danych
Aby podzielić dużą bazę danych na mniejsze:
- Publikuj tylko tabele potrzebne nowej usłudze
- Utwórz subskrypcję w nowej bazie danych
- Przenieś zapisy po zakończeniu synchronizacji
Zastosowanie: niejednorodne repliki
Replikuj dane do repliki odczytowej z innymi indeksami albo do hurtowni danych PostgreSQL z dodatkowymi kolumnami raportowymi.
Konflikty
Replikacja logiczna nie rozwiązuje konfliktów automatycznie. Jeśli ten sam wiersz zostanie zaktualizowany po obu stronach, subskrybent zatrzyma się z błędem. Można tego uniknąć, stosując następujące zasady:
- Zapisuj dane tylko po jednej stronie
- Używaj REPLICA IDENTITY FULL, aby uzyskać lepsze informacje diagnostyczne
- Rozwiązuj konflikty ręcznie i uruchamiaj ponownie subskrypcję
Zmiany schematu
DDL NIE jest replikowany. Wprowadzaj zmiany schematu ręcznie po obu stronach — zazwyczaj najpierw na subskrybencie, a następnie na wydawcy. Możesz też użyć rozszerzenia pglogical, które potrafi replikować DDL.
Częściowa replikacja
Współczesny PG pozwala definiować filtry wierszy i listy kolumn dla każdej publikacji:
CREATE PUBLICATION us_only FOR TABLE customers
WHERE (country = 'US');
CREATE PUBLICATION compact FOR TABLE users (id, email);Sharding z użyciem replikacji logicznej
Przenieś dzierżawców do dedykowanego shardu:
- Utwórz na źródle publikację filtrowaną do jednego dzierżawcy
- Utwórz subskrypcję w miejscu docelowym
- Przełącz aplikację na nowy shard
- Usuń dane dzierżawcy ze źródła
Wydajność i opóźnienie
Replikacja logiczna jest w większości jednowątkowa w ramach jednej subskrypcji. Źródła o dużym wolumenie mogą skorzystać z wielu publikacji i subskrypcji albo z narzędzi innych firm, takich jak pglogical / Debezium.
Podsumowanie
Replikacja logiczna umożliwia strumieniowe przesyłanie danych na poziomie wierszy.
- Obsługuje różne wersje i częściowe replikowanie tabel
- Umożliwia aktualizacje głównej wersji przy minimalnym przestoju
- Rozwiązywanie konfliktów pozostaje Państwa problemem
- DDL nie jest replikowany
Szybkie sprawdzenie
Trzeba zaktualizować PostgreSQL z wersji 14 do 16 przy minimalnym przestoju. Który rodzaj replikacji pomoże?
Często zadawane pytania
Czy lekcja „Replikacja logiczna na potrzeby shardingu” jest bezpłatna?
Tak — pełny tekst „Replikacja logiczna na potrzeby shardingu” 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 logiczna na potrzeby shardingu”?
Używać replikacji logicznej PUBLICATION/SUBSCRIPTION do przenoszenia tabel między klastrami i obsługi aktualizacji do głównej wersji Ć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 2 z 4.
Ile czasu zajmuje lekcja „Replikacja logiczna na potrzeby shardingu”?
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
- Replikacja strumieniowa i WAL
- Replikacja logiczna na potrzeby shardingu
- Failover i wybór lidera (Patroni, Stolon)
- Repliki tylko do odczytu i kierowanie połączeniami