Zpřístupnili jsme balíčky pglogical 1.1 pro PostgreSQL 9.6beta1 pro distribuce založené na rpm i deb. Jsou k dispozici pro instalaci z našeho standardního úložiště pglogických balíčků.
Můžete se ptát, proč vydáváme balíčky pro beta verzi Postgresu? Jedním z důvodů je, že můžete použít pglogical k replikaci vaší stávající databáze PostgreSQL 9.5 nebo 9.4 do 9.6beta1 v reálném čase a spouštět na ní testy, které vám pomohou odstranit všechny zbývající chyby v beta verzi. Zde je rychlý návod, jak to udělat.
Prvním krokem je instalace PostgreSQL 9.6beta1, informace o tom, jak to provést, najdete v oznámení o vydání. Druhým krokem je instalace pglogical, jak je vysvětleno na stránce s pokyny k instalaci.
Nyní k samotnému nastavení replikace. Je to docela snadné. Začněte tím, že se ujistěte, že je PostgreSQL nakonfigurován tak, aby umožňoval logickou replikaci:
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'
Změna výše uvedených nastavení vyžaduje restart serveru.
Také byste měli povolit příchozí replikační připojení v pg_hba.conf (stejně jako při nastavování fyzické streamingové replikace). Řádek v pg_hba.conf by měl vypadat nějak takto:
host replication postgres 10.0.0.2/32 md5
Další informace naleznete na stránce dokumentace pg_hba.
Dále nainstalujte rozšíření pglogical do databáze poskytovatelů a vytvořte zde pglogical uzel:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
node_name := 'provider1',
dsn := 'host=providerhost port=5432 dbname=db'
);
Poté proveďte totéž v nové databázi 9.6:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
node_name := 'subscriber1',
dsn := 'host=subscriberhost port=5432 dbname=db'
);
Pamatujte, že připojovací řetězce by měly vést do databáze, ve které tyto příkazy provádíte.
Zpět do databáze poskytovatelů přidejte tabulky, které chcete replikovat, do default
replikační sada. Jednoduchý způsob, jak to udělat, je přidat všechny tabulky do public
schéma jako toto:
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
A nakonec, opět v databázi předplatitelů, vytvořte předplatné, které se připojí k poskytovateli a začne se replikovat.
SELECT pglogical.create_subscription(
subscription_name := 'subscription1',
provider_dsn := 'host=providerhost port=5432 dbname=db',
synchronize_structure := true
);
Zde by měl být připojovací řetězec stejný jako ten, který byl použit při vytváření pglogického uzlu poskytovatele. synchronize_structure := true
znamená, že pglogical zkopíruje všechny struktury tabulek z databáze poskytovatelů do databáze odběratelů (pomocí standardního pg_dump
).
A je to, nyní máte funkční replikaci mezi vaší stávající databází PostgreSQL 9.5 nebo 9.4 a novou PostgreSQL 9.6beta1.
Další informace o funkcích použitých v tomto příspěvku a o tom, jak udělat víc než jen jednoduchou replikaci, najdete na stránkách pglogické dokumentace a projektu.