PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Pakiety PGLogical 1.1 dla PostgreSQL 9.6beta1

Udostępniliśmy pakiety pglogical 1.1 dla PostgreSQL 9.6beta1 dla dystrybucji opartych na rpm i deb. Są dostępne do zainstalowania z naszego standardowego repozytorium pakietów pglogical.

Możesz zapytać, dlaczego wydajemy pakiety dla wersji beta Postgresa? Cóż, jednym z powodów jest to, że możesz użyć pglogical, aby zreplikować istniejącą bazę danych PostgreSQL 9.5 lub 9.4 do wersji 9.6beta1 w czasie rzeczywistym i przeprowadzić na niej testy, aby wyeliminować wszelkie pozostałe błędy w wersji beta. Oto krótki samouczek, jak to zrobić.

Pierwszym krokiem jest zainstalowanie PostgreSQL 9.6beta1, sprawdź ogłoszenie o wydaniu, aby dowiedzieć się, jak to zrobić. Drugim krokiem jest zainstalowanie pglogical, jak wyjaśniono na stronie instrukcji instalacji.

Przejdźmy teraz do właściwej konfiguracji replikacji. To dość łatwe. Zacznij od upewnienia się, że PostgreSQL jest skonfigurowany tak, aby umożliwić logiczną replikację:

wal_level = 'logical'
max_worker_processes = 10   # one per database needed on provider node
                            # one per node needed on subscriber node
max_replication_slots = 10  # one per node needed on provider node
max_wal_senders = 10        # one per node needed on provider node
shared_preload_libraries = 'pglogical'

Zmiana powyższych ustawień wymaga ponownego uruchomienia serwera.

Powinieneś także zezwolić na przychodzące połączenia replikacji w pg_hba.conf (tak jak podczas konfigurowania fizycznej replikacji strumieniowej). Linia w pg_hba.conf powinna wyglądać mniej więcej tak:

host    replication     postgres        10.0.0.2/32            md5

Więcej informacji znajdziesz na stronie dokumentacji pg_hba.

Następnie zainstaluj rozszerzenie pglogical w bazie danych dostawcy i utwórz tam węzeł pglogical:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=db'
);

Następnie zrób to samo w nowej bazie danych 9.6:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=db'
);

Zwróć uwagę, że parametry połączenia powinny prowadzić do bazy danych, w której wykonujesz te polecenia.

Wróć do bazy danych dostawcy, dodaj tabele, które chcesz replikować, do default zestaw replikacji. Prostym sposobem na zrobienie tego jest dodanie wszystkich tabel w public schemat w ten sposób:

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

I na koniec, ponownie w bazie danych subskrybentów, utwórz subskrypcję, która łączy się z dostawcą i rozpoczyna replikację.

SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=db',
    synchronize_structure := true
);

Tutaj ciąg połączenia powinien być taki sam, jak ten użyty podczas tworzenia węzła pglogicznego dostawcy. synchronize_structure := true oznacza, że ​​pglogical skopiuje wszystkie struktury tabel z bazy dostawców do bazy abonentów (używając standardowego pg_dump ).

I to wszystko, masz teraz działającą replikację między istniejącą bazą danych PostgreSQL 9.5 lub 9.4 a nowym PostgreSQL 9.6beta1.

Sprawdź dokumentację pglogiczną i strony projektu, aby uzyskać dodatkowe informacje o funkcjach użytych w tym poście oraz o tym, jak zrobić coś więcej niż tylko prostą replikację.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PgBouncer 1.7 – „Kolory różnią się po zmartwychwstaniu”

  2. Jak powiązać zmienne SQL w PHP?

  3. nie można utworzyć automatycznego przyrostowego klucza podstawowego za pomocą flask-sqlalchemy

  4. Niestandardowy SERIAL / autoinkrementacja na grupę wartości

  5. Przegląd parametrów połączenia libpq sslpassword w PostgreSQL 13