sql >> Databáze >  >> RDS >> PostgreSQL

Jak nakonfigurovat replikaci mezi clustery pro PostgreSQL

Jak jsme nedávno oznámili, ClusterControl 1.7.4 má novou funkci nazvanou Cluster-to-Cluster Replication. Umožňuje vám mít spuštěnou replikaci mezi dvěma autonomními clustery. Podrobnější informace naleznete ve výše uvedeném oznámení.

Podíváme se, jak tuto novou funkci použít pro existující cluster PostgreSQL. Pro tento úkol budeme předpokládat, že máte nainstalovaný ClusterControl a že byl Master Cluster nasazen pomocí něj.

Požadavky na hlavní cluster

Aby Master Cluster fungoval, existují určité požadavky:

  • PostgreSQL 9.6 nebo novější.
  • Musí existovat server PostgreSQL s rolí ClusterControl 'Master'.
  • Při nastavování Slave Clusteru musí být přihlašovací údaje administrátora totožné s Master Clusterem.

Příprava hlavního clusteru

Hlavní cluster musí splňovat výše uvedené požadavky.

Pokud jde o první požadavek, ujistěte se, že používáte správnou verzi PostgreSQL v Master Clusteru a zvolili stejnou verzi pro Slave Cluster.

$ psql

postgres=# select version();

PostgreSQL 11.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit

Pokud potřebujete přiřadit hlavní roli konkrétnímu uzlu, můžete to udělat z uživatelského rozhraní ClusterControl. Přejděte do ClusterControl -> Vybrat hlavní cluster -> Uzly -> Vyberte uzel -> Akce uzlu -> Propagovat podřízenou jednotku.

A konečně během vytváření Slave Clusteru musíte použít stejného správce přihlašovací údaje, které aktuálně používáte v hlavním clusteru. V následující části uvidíte, kam jej přidat.

Vytvoření klastru Slave z uživatelského rozhraní ClusterControl

Chcete-li vytvořit nový Slave Cluster, přejděte na ClusterControl -> Vyberte Cluster -> Akce clusteru -> Vytvořit Slave Cluster.

Podřízený cluster bude vytvořen streamováním dat z aktuálního hlavního clusteru.

V této části musíte také vybrat hlavní uzel aktuálního clusteru ze kterého budou data replikována.

Když přejdete k dalšímu kroku, musíte zadat uživatele, klíč nebo Heslo a port pro připojení pomocí SSH k vašim serverům. Potřebujete také název svého Slave Clusteru a pokud chcete, aby ClusterControl nainstaloval odpovídající software a konfigurace za vás.

Po nastavení přístupových informací SSH musíte definovat verzi databáze, datadir, port a přihlašovací údaje správce. Vzhledem k tomu, že bude používat streamingovou replikaci, ujistěte se, že používáte stejnou verzi databáze, a jak jsme již zmínili dříve, přihlašovací údaje musí být stejné, jaké používá Master Cluster. Můžete také určit, které úložiště použít.

V tomto kroku je třeba přidat server do nového Slave Clusteru . Pro tento úkol můžete zadat IP adresu nebo název hostitele uzlu databáze.

Stav vytváření vašeho nového Slave Clusteru můžete sledovat na Monitor aktivity ClusterControl. Po dokončení úlohy můžete vidět cluster na hlavní obrazovce ClusterControl.

Správa replikace Cluster-to-Cluster pomocí uživatelského rozhraní ClusterControl

Nyní máte svou replikaci Cluster-to-Cluster v provozu a pomocí ClusterControl lze v této topologii provádět různé akce.

Přebudování klastru Slave

Chcete-li znovu sestavit Slave Cluster, přejděte na ClusterControl -> Vybrat Slave Cluster -> Nodes -> Vyberte uzel připojený k Master Clusteru -> Akce uzlů -> Znovu sestavit replikační slave.

ClusterControl provede následující kroky:

  • Zastavit PostgreSQL Server
  • Odeberte obsah z jeho datového adresáře
  • Streamujte zálohu z Master do Slave pomocí pg_basebackup
  • Spustit otroka

Zastavit/Spustit podřízenou replikaci

Zastavení a spuštění replikace v PostgreSQL znamená její pozastavení a obnovení, ale tyto termíny používáme, abychom byli v souladu s ostatními databázovými technologiemi, které podporujeme.

Tato funkce bude brzy k dispozici pro použití z uživatelského rozhraní ClusterControl. Tato akce použije k provedení této úlohy funkce pg_wal_replay_pause a pg_wal_replay_resume PostgreSQL.

Mezitím můžete použít řešení k zastavení a spuštění replikačního slave zastavení a spuštění databázového uzlu jednoduchým způsobem pomocí ClusterControl.

Přejděte na ClusterControl -> Vyberte podřízený cluster -> Uzly -> Vyberte Uzel -> Akce uzlu -> Zastavit uzel/Zahájit uzel. Tato akce přímo zastaví/spustí službu databáze.

Správa replikace Cluster-to-Cluster pomocí rozhraní CLI ClusterControl

V předchozí části jste mohli vidět, jak spravovat replikaci clusteru do clusteru pomocí uživatelského rozhraní ClusterControl. Nyní se podívejme, jak to udělat pomocí příkazového řádku.

Poznámka:Jak jsme zmínili na začátku tohoto blogu, budeme předpokládat, že máte nainstalovaný ClusterControl a že jste pomocí něj nasadili Master Cluster.

Vytvořte cluster Slave

Nejprve se podívejme na příklad příkazu k vytvoření klastru Slave pomocí CLI ClusterControl:

$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=11 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=21 --log

Nyní máte spuštěný proces vytvoření podřízeného zařízení, podívejme se na každý použitý parametr:

  • Cluster:Seznam a manipulace se shluky.
  • Vytvořit:Vytvořte a nainstalujte nový cluster.
  • Cluster-name:Název nového Slave Clusteru.
  • Typ clusteru:Typ clusteru, který se má nainstalovat.
  • Verze poskytovatele:Verze softwaru.
  • Uzly:Seznam nových uzlů v clusteru Slave.
  • Os-user:Uživatelské jméno pro příkazy SSH.
  • Os-key-file:Soubor klíče, který se má použít pro připojení SSH.
  • Db-admin:Uživatelské jméno správce databáze.
  • Db-admin-passwd:Heslo pro správce databáze.
  • Remote-cluster-id:ID hlavního clusteru pro replikaci clusteru do clusteru.
  • Protokol:Čekejte a sledujte zprávy úloh.

Pomocí příznaku --log budete moci vidět protokoly v reálném čase:

Verifying job parameters.

192.168.100.133: Checking ssh/sudo.

192.168.100.133: Checking if host already exists in another cluster.

Checking job arguments.

Found top level master node: 192.168.100.133

Verifying nodes.

Checking nodes that those aren't in another cluster.

Checking SSH connectivity and sudo.

192.168.100.133: Checking ssh/sudo.

Checking OS system tools.

Installing software.

Detected centos (core 7.5.1804).

Data directory was not specified. Using directory '/var/lib/pgsql/11/data'.

192.168.100.133:5432: Configuring host and installing packages if neccessary.

...

Cluster 26 is running.

Generated & set RPC authentication token.

Přebudování klastru Slave

Můžete znovu sestavit Slave Cluster pomocí následujícího příkazu:

$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=26 --remote-cluster-id=21 --log

Parametry jsou:

  • Replikace:Sledování a řízení replikace dat.
  • Fáze:Stage/Rebuild Replication Slave.
  • Hlavní:Hlavní replikační server v hlavním clusteru.
  • Slave:Replikační slave v podřízeném clusteru.
  • Cluster-id:The Slave Cluster ID.
  • Remote-cluster-id:ID hlavního clusteru.
  • Protokol:Čekejte a sledujte zprávy úloh.

Protokol úlohy by měl být podobný tomuto:

Rebuild replication slave 192.168.100.133:5432 from master 192.168.100.125:5432.

Remote cluster id = 21

192.168.100.125: Checking size of '/var/lib/pgsql/11/data'.

192.168.100.125: /var/lib/pgsql/11/data size is 201.13 MiB.

192.168.100.133: Checking free space in '/var/lib/pgsql/11/data'.

192.168.100.133: /var/lib/pgsql/11/data has 28.78 GiB free space.

192.168.100.125:5432(master): Verifying PostgreSQL version.

192.168.100.125: Verifying the timescaledb-postgresql-11 installation.

192.168.100.125: Package timescaledb-postgresql-11 is not installed.

Setting up replication 192.168.100.125:5432->192.168.100.133:5432

Collecting server variables.

192.168.100.125:5432: Using the pg_hba.conf contents for the slave.

192.168.100.125:5432: Will copy the postmaster.opts to the slave.

192.168.100.133:5432: Updating slave configuration.

Writing file '192.168.100.133:/var/lib/pgsql/11/data/postgresql.conf'.

192.168.100.133:5432: GRANT new node on members to do pg_basebackup.

192.168.100.125:5432: granting 192.168.100.133:5432.

192.168.100.133:5432: Stopping slave.

192.168.100.133:5432: Stopping PostgreSQL node.

192.168.100.133: waiting for server to shut down.... done

server stopped

…

192.168.100.133: waiting for server to start....2019-11-12 15:51:11.767 UTC [8005] LOG:  listening on IPv4 address "0.0.0.0", port 5432

2019-11-12 15:51:11.767 UTC [8005] LOG:  listening on IPv6 address "::", port 5432

2019-11-12 15:51:11.769 UTC [8005] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"

2019-11-12 15:51:11.774 UTC [8005] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"

2019-11-12 15:51:11.798 UTC [8005] LOG:  redirecting log output to logging collector process

2019-11-12 15:51:11.798 UTC [8005] HINT:  Future log output will appear in directory "log".

 done

server started

192.168.100.133:5432: Grant cluster members on the new node (for failover).

Grant connect access for new host in cluster.

Adding grant on 192.168.100.125:5432.

192.168.100.133:5432: Waiting until the service is started.

Replication slave job finished.

Zastavit/Spustit podřízenou replikaci

Jak jsme zmínili v sekci uživatelského rozhraní, zastavení a spuštění replikace v PostgreSQL znamená její pozastavení a obnovení, ale tyto termíny používáme, abychom zachovali paralelismus s ostatními technologiemi.

Můžete zastavit replikaci dat z Master Clusteru tímto způsobem:

$ s9s replication --stop --slave="192.168.100.133" --cluster-id=26 --log

Uvidíte toto:

192.168.100.133:5432: Pausing recovery of the slave.

192.168.100.133:5432: Successfully paused recovery on the slave using select pg_wal_replay_pause().

A teď to můžete začít znovu:

$ s9s replication --start --slave="192.168.100.133" --cluster-id=26 --log

Uvidíte tedy:

192.168.100.133:5432: Resuming recovery on the slave.

192.168.100.133:5432: Collecting replication statistics.

192.168.100.133:5432: Slave resumed recovery successfully using select pg_wal_replay_resume().

Nyní se podíváme na použité parametry.

  • Replikace:Sledování a řízení replikace dat.
  • Stop/Start:Chcete-li, aby se slave zastavil/spustil replikaci.
  • Slave:Podřízený uzel replikace.
  • Cluster-id:ID clusteru, ve kterém je podřízený uzel.
  • Protokol:Čekejte a sledujte zprávy úloh.

Závěr

Tato nová funkce ClusterControl vám umožní rychle nastavit replikaci mezi různými clustery PostgreSQL a spravovat nastavení snadným a přátelským způsobem. Vývojářský tým společnosti Somenines pracuje na vylepšení této funkce, takže jakékoli nápady nebo návrhy budou velmi vítány.


  1. Jak generovat data v MySQL?

  2. Jak deklarovat a zobrazit proměnnou v Oracle

  3. Jak nasadit aplikaci s databází serveru SQL na klientech

  4. SQL Server Vysvětlení NĚKTERÉHO operátora