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

Jak spravovat své databáze PostgreSQL z rozhraní CLI ClusterControl

Věděli jste, že kromě webového uživatelského rozhraní ClusterControl můžete pro správu instancí PostgreSQL používat také rozhraní příkazového řádku?

ClusterControl podporuje streamovací replikaci PostgreSQL (asynchronní i synchronní replikaci), stejně jako samostatnou instanci PostgreSQL. Vynaložili jsme maximální úsilí, aby rozhraní příkazového řádku bylo co do funkčnosti co nejblíže uživatelskému rozhraní.

Proč byste chtěli používat CLI?

Umožňuje vám nasadit celé nastavení replikace jedním příkazem nebo provést převzetí služeb při selhání nebo přidat do nastavení nové uzly. To se velmi dobře integruje s vaším stávajícím kódem automatizace infrastruktury napsaným v Ansible, Chef nebo Puppet.

Tento blogový příspěvek poskytuje návod, jak spravovat cluster streamovací replikace PostgreSQL pomocí ClusterControl CLI nebo s9s.

Pamatujte, že většina funkcí uvedených v tomto příspěvku na blogu vyžaduje, abyste měli nainstalovaný a spuštěný ClusterControl s platným předplatným, ať už komerční licencí, nebo bezplatnou zkušební licencí (platnou až 30 dní po instalaci ClusterControl).

Nasazení a import clusteru

Nasazení nového clusteru

Před nasazením nového clusteru nebo importem existujícího clusteru PostgreSQL do ClusterControl se ujistěte, že je předem nakonfigurováno SSH bez hesla z uzlu ClusterControl do všech databázových uzlů. Předpokládejme, že bychom chtěli nasadit novou tříuzlovou streamovací replikaci PostgreSQL, spusťte v uzlu ClusterControl následující příkazy:

$ whoami
root
$ ssh-keygen -t rsa # if you haven't generated SSH key
$ ssh-copy-id 192.168.0.91 # PostgreSQL1
$ ssh-copy-id 192.168.0.92 # PostgreSQL2
$ ssh-copy-id 192.168.0.93 # PostgreSQL3

V uzlu ClusterControl ověřte, zda můžete provést následující příkaz bez hesla:

$ ssh 192.168.0.91 "ls /root"

Pokud vidíte obsah adresáře, jste v dobré kondici. Dále použijte ClusterControl CLI s příznakem --create k nasazení clusteru:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.91?master;192.168.0.92?slave;192.168.0.93?slave" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='PostgreSQL 11 Streaming Replication' \
--wait
Creating PostgreSQL Cluster
\ Job 259 RUNNING    [█▋        ]  15% Installing helper packages

Zadali jsme první uzel, 192.168.0.91 jako hlavní a zbytek jsou podřízené. Protože jsme již nakonfigurovali SSH bez hesla přes uživatele root, specifikovali jsme uživatele OS jako „root“ spolu s odpovídajícím souborem klíčů SSH pomocí příznaku --os-key-file. Příznak --wait znamená, že úloha bude čekat a hlásit průběh, dokud nebude dokončena.

Průběh nasazení můžete také sledovat z uživatelského rozhraní ClusterControl v části Aktivita> Úlohy> Vytvoření clusteru PostgreSQL :

Po dokončení nasazení můžeme vidět souhrn běžícího clusteru pomocí parametru --stat:

$ s9s cluster --stat

Import existujícího clusteru

Pokud řekněme, že již máte cluster streamovací replikace PostgreSQL nasazený ručně, můžete jej importovat do ClusterControl pomocí příznaku --register, jak je znázorněno v následujícím příkazu:

$ s9s cluster \
--register \
--cluster-type=postgresql \
--nodes="192.168.0.91;192.168.0.92;192.168.0.93" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 11" \
--wait
Register PostgreSQL
- Job 263 RUNNING    [        █ ] ---% Importing Cluster

ClusterControl se poté připojí k určeným uzlům, zjistí topologii a zaregistruje cluster do ClusterControl. Můžete to ověřit pomocí příkazu 's9s cluster --stat', jak je uvedeno výše.

Správa uzlů a klastrů

Řízení služeb

Chcete-li provést postupný restart klastru, zadejte ID klastru a použijte příznak --rolling-restart:

$ s9s cluster --rolling-restart --cluster-id=8 --wait
Rolling Restart
- Job 264 RUNNING    [██▊       ]  27% Waiting for 192.168.0.91

K zastavení clusteru použijte příznak --stop pro komponentu "cluster". Chcete-li vidět výstup úlohy místo ukazatele průběhu, můžeme místo toho použít příznak --log:

$ s9s cluster --stop --cluster-id=8 --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Setting cluster to 'SHUTTING_DOWN' state.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting PostgreSQL top stop.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting PostgreSQL top stop.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting PostgreSQL top stop.
Setting cluster to 'STOPPED' state.

Bude hlásit stejné zprávy úlohy jako webové uživatelské rozhraní. Podobně jako výše, ke spuštění clusteru jednoduše použijte příznak --start (místo toho používáme příznak --wait, abychom viděli průběh namísto protokolů úloh):

$ s9s cluster --start --cluster-id=8 --wait
Starting Cluster
\ Job 272 RUNNING    [     █    ] ---% Start Cluster

K restartování služby PostgreSQL na databázovém uzlu používáme komponentu "node" a příznak --restart:

$ s9s node \
--restart \
--cluster-id=8 \
--nodes=192.168.0.92 \
--log
Preparing to restart host.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting to stop.
192.168.0.92:5432: Starting PostgreSQL.
192.168.0.92:5432: The postgresql service was started.
192.168.0.92:5432: Waiting to start.

Chcete-li zastavit a spustit uzel PostgreSQL, jednoduše použijte stejný příkaz s příznakem --stop nebo --start, jak je znázorněno níže:

$ s9s node --stop --cluster-id=8 --nodes=192.168.0.92
$ s9s node --start --cluster-id=8 --nodes=192.168.0.92

Pamatujte, že tyto akce nerestartují systém.

Uzel změny velikosti

Chcete-li odebrat uzel z klastru, použijte příznak --remove-node:

$ s9s cluster \
--remove-node \
--nodes=192.168.0.93 \
--cluster-id=8 \
--log
Removing node 192.168.0.93: checking job parameters.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.93:5432: removed PostgreSQL Server
Updating load balancers.

Přidání nového uzlu funguje podobně, ale musíte předem zajistit, aby byl uzel přístupný přes SSH bez hesla. Nejprve jej nakonfigurujte a poté přidejte uzel pomocí parametru --add-node:

$ s9s cluster \
--add-node \
--nodes=192.168.0.93 \
--cluster-id=8 \
--log
addNode: Verifying job parameters.
Found a master candidate: 192.168.0.91:5432, adding 192.168.0.93:5432 as a slave.
Verifying job parameters.
192.168.0.93:5432: Disabling SELinux/Apparmor.
192.168.0.93: Checking firewall.
192.168.0.93: Disabling firewalld.
192.168.0.93: Flushing iptables.
192.168.0.93:5432: Installing new node.
192.168.0.93:5432: Using the master's data directory '/var/lib/pgsql/11/data'.
192.168.0.91: Checking size of '/var/lib/pgsql/11/data'.
192.168.0.91: /var/lib/pgsql/11/data size is 103.00 MiB.
192.168.0.93: Checking free space in '/var/lib/pgsql/11/data'.
192.168.0.93: /var/lib/pgsql/11/data has 34.19 GiB free space.
192.168.0.93:5432: Setting SELinux in permissive mode.
192.168.0.93:5432: Disabling firewall.
192.168.0.93:5432: Tuning OS parameters.
192.168.0.93:5432: Setting vm.swappiness = 1.
192.168.0.93:5432: Installing helper packages.
192.168.0.93: Upgrading nss.
192.168.0.93: Upgrading ca-certificates.
192.168.0.93: Installing net-tools.
192.168.0.93: Installing netcat.
192.168.0.93: Installing nc.
192.168.0.93: Installing socat.
192.168.0.93: Installing perl-Data-Dumper.
192.168.0.93: Installing which.
192.168.0.93: Installing perl-Data-Dumper-Names.
192.168.0.93: Installing psmisc.
192.168.0.93: Installing rsync.
192.168.0.93: Installing libaio.
192.168.0.93: Installing libevent.
192.168.0.93: Installing wget.
192.168.0.93: Installing curl.
192.168.0.93: Installing gnupg2.
192.168.0.93: Installing pigz.
192.168.0.93: Installing bzip2.
192.168.0.93: Installing iproute2.
192.168.0.93: Installing tar.
192.168.0.93: Installing openssl.
192.168.0.93: Upgrading openssl openssl-libs.
192.168.0.93: Finished with helper packages.
192.168.0.93:5432: Using External repositories.
192.168.0.93:5432: Setting up PostgreSQL repositories.
192.168.0.93:5432: Uninstalling old PostgreSQL packages.
192.168.0.93:5432: Installing PostgreSQL 11 packages (centos-7).
192.168.0.93:5432: PostgreSQL installed, init-name: postgresql-11.
192.168.0.93: Updating PostgreSQL port (5432) and directory.
192.168.0.93:5432: Granting remote access to PostgreSQL server.
192.168.0.93:5432: Granting controller (10.0.2.15,192.168.0.19).
192.168.0.93:5432: Updating configuration.
192.168.0.93:5432: Enabling stat_statements plugin.
192.168.0.93:5432: Setting wal options.
192.168.0.93:5432: Performance tuning.
192.168.0.93:5432: Selected workload type: mixed
Detected system memory: 991.18 MiB
Using the following fine-tuning options:
  checkpoint_completion_target: 0.9
  effective_cache_size: 761229kB
  maintenance_work_mem: 63435kB
  max_connections: 100
  shared_buffers: 253743kB
  wal_keep_segments: 32
  work_mem: 5074kB
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: Restarting PostgreSQL service
192.168.0.93:5432: Testing connection (attempt #1).
192.168.0.93:5432: Connected ok.
192.168.0.93:5432: Using the master's data directory '/var/lib/pgsql/11/data'.
192.168.0.91:5432(master): Verifying PostgreSQL version.
Setting up replication 192.168.0.91:5432->192.168.0.93:5432
Collecting server variables.
192.168.0.91:5432: Using the pg_hba.conf contents for the slave.
192.168.0.93:5432: Updating slave configuration.
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: GRANT new node on members to do pg_basebackup.
192.168.0.91:5432: granting 192.168.0.93:5432.
192.168.0.93:5432: Stopping slave.
192.168.0.93:5432: Cleaning up slave data directory: /var/lib/pgsql/11/data
192.168.0.93:5432: detected version: 11.1
192.168.0.93:5432: Doing initial sync (pg_basebackup) from 192.168.0.91:5432.
192.168.0.93:5432: Synchronizing pg_hba.conf from master.
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.91:5432 as master.
192.168.0.93:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.93:5432: Restarting PostgreSQL
192.168.0.93:5432: Grant cluster members on the new node (for failover).
Grant connect access for new host in cluster.
Adding grant on 192.168.0.91:5432.
Adding grant on 192.168.0.92:5432.
192.168.0.93:5432: Waiting until service starts.
192.168.0.93:5432: Registering node.
192.168.0.93:5432: Verifying configuration.
192.168.0.93:5432: Checking 'listen_addresses'.
192.168.0.93:5432: Checking variables.
192.168.0.93:5432: Detected PostgreSQL 11.1.
192.168.0.93:5432: Registering host with host manager.
192.168.0.93:5432: Added host to cluster.
Replication slave job finished.
192.168.0.93: Installing cronie.
192.168.0.91:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.92:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.

Z protokolů úloh můžeme vidět, že protože cluster již má spuštěný hlavní uzel (192.168.0.91), nový uzel bude nasazen jako podřízený uzel. ClusterControl poté provede všechny potřebné akce a podle toho připraví nový uzel jako danou roli.

Přepnutí na nového Master

Chcete-li provést přepnutí, vyberte jednoho z otroků, aby se stal novým pánem s příznakem --promote-slave:

$ s9s cluster \
--promote-slave \
--nodes=192.168.0.92 \
--cluster-id=8 \
--log
192.168.0.92:5432: Promoting server to master.
192.168.0.92:5432: Current master is 192.168.0.91:5432.

SERVER           HOST_STATUS            STATUS            ROLE RECEIVE/REPLAY
192.168.0.91     CmonHostOnline   NODE_CONNECTED         master 0/9000EF0; 0/9000EF0
192.168.0.92     CmonHostOnline   NODE_CONNECTED         slave  0/9000EF0; 0/9000EF0
192.168.0.93     CmonHostOnline   NODE_CONNECTED         slave  0/9000EF0; 0/9000EF0

Switching over to 192.168.0.92:5432 (previous master is 192.168.0.91:5432)
192.168.0.91:5432: Stopping the current master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.92:5432: Failover, using file.
192.168.0.92:5432: Waiting to become a master.
192.168.0.92:5432: Became master, ok.
Switching slaves to the new master.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.92:5432: Granting host (192.168.0.93:5432).
Running /usr/pgsql-11/bin/pg_rewind --target-pgdata=/var/lib/pgsql/11/data --source-server="host=192.168.0.92 port=5432 user=cmon password=***** dbname=postgres"
192.168.0.93: servers diverged at WAL location 0/9000F60 on timeline 1
no rewind required
192.168.0.93:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.92:5432 as master.
192.168.0.93:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.93:5432: Starting PostgreSQL.
192.168.0.93:5432: The postgresql service was started.
192.168.0.93:5432: Waiting to start.
192.168.0.93:5432: Restarted with new master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.92:5432: Granting host (192.168.0.91:5432).
Running /usr/pgsql-11/bin/pg_rewind --target-pgdata=/var/lib/pgsql/11/data --source-server="host=192.168.0.92 port=5432 user=cmon password=***** dbname=postgres"
192.168.0.91: servers diverged at WAL location 0/9000F60 on timeline 1
no rewind required
192.168.0.91:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.92:5432 as master.
192.168.0.91:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.91:5432: Starting PostgreSQL.
192.168.0.91:5432: The postgresql service was started.
192.168.0.91:5432: Waiting to start.
192.168.0.91:5432: Restarted with new master.
Servers after promote:
SERVER           HOST_STATUS            STATUS            ROLE RECEIVE/REPLAY
192.168.0.91     CmonHostOnline   NODE_CONNECTED         slave  0/9001F90; 0/9001F90
192.168.0.92     CmonHostOnline   NODE_CONNECTED         master 0/9001F90; 0/9001F90
192.168.0.93     CmonHostOnline   NODE_CONNECTED         slave  0/9001F90; 0/9001F90

192.168.0.92:5432: promote finished (this is the new master).
Successfully promoted a new master.

Zprávy úlohy ukazují, že ClusterControl nejprve zjistí aktuální topologii a zastaví všechny uzly v clusteru. Poté nakonfiguruje nový hlavní server a získá ostatní uzly, které se z něj replikují. Také se pokusí spustit pg_rewind k opětovné synchronizaci PGDATA downgradovaného hlavního serveru s novou základní zálohou. Na konci úlohy ClusterControl nahlásí aktuální topologii a stav propagace.

Poté můžeme ověřit výpisem všech uzlů pro cluster ID 8:

$ s9s node --list --cluster-id=8 --long
STAT VERSION    CID CLUSTER       HOST         PORT COMMENT
coC- 1.7.1.2985   8 PostgreSQL 11 192.168.0.19 9500 Up and running.
poS- 11.1         8 PostgreSQL 11 192.168.0.91 5432 Up and running.
poM- 11.1         8 PostgreSQL 11 192.168.0.92 5432 Up and running.
poS- 11.1         8 PostgreSQL 11 192.168.0.93 5432 Up and running.

Stav "poM-" ve sloupci zcela vlevo má následující význam:

  • p – uzel PostgreSQL
  • o – online
  • M – mistr

Správa databáze

Chcete-li vypsat seznam všech databází nalezených v clusteru, použijte příznak --list-database na clusteru komponent:

$ s9s cluster \
--list-database \
--long \
--cluster-id=8
SIZE      #TBL #ROWS   OWNER  GROUP  CLUSTER                          DATABASE
  7340032    0       0 system admins PostgreSQL Streaming Replication postgres
  7340032    0       0 system admins PostgreSQL Streaming Replication template1
  7340032    0       0 system admins PostgreSQL Streaming Replication template0
382730240   12 1156642 system admins PostgreSQL Streaming Replication sbtest

Uvědomte si, že pokud má cluster mnoho databází, tato možnost nemusí některé z nich zobrazit. Vzorkování velkého počtu databází by generovalo vysoké zatížení, a proto má řadič v sobě zabudovaný horní limit.

Pokud chcete vytvořit novou databázi pro cluster, jednoduše proveďte:

$ s9s cluster \
--create-database \
--cluster-id=8 \
--db-name=my_shopping_db

Chcete-li vytvořit nového uživatele databáze spolu s databází, která je k němu přidružena (pomocí stejného názvu databáze), použijte parametr --create-account with --with-database:

$ s9s cluster \
--create-account \
--cluster-id=1 \
--account=mysystem:[email protected] \
--with-database
Account 'mysystem' created.
192.168.0.91:5432: Allowing connections from 192.168.0.15.
192.168.0.92:5432: Allowing connections from 192.168.0.15.
192.168.0.93:5432: Allowing connections from 192.168.0.15.
Database 'mysystem' created.
Access for 'mysystem' to 'mysystem' granted.

ClusterControl provede nezbytné akce k vytvoření databáze a uživatelského účtu se správnými oprávněními a povolí je na všech databázových uzlech.

Správa zálohování

ClusterControl podporuje dvě metody zálohování pro PostgreSQL:

  • pgdump – Alias ​​k pg_dumpall, nástroj pro zápis všech PostgreSQL databází clusteru do jednoho souboru skriptu.
  • pg_basebackup – Nástroj pro vytvoření úplné zálohy databáze PostgreSQL na úrovni souborového systému.

Vytvoření zálohy

Chcete-li vytvořit novou zálohu pomocí pg_dumpall, vyberte jeden databázový uzel a zadejte "pgdump" v příznaku --backup-method:

$ s9s backup \
--create \
--backup-method=pgdump \
--cluster-id=8 \
--nodes=192.168.0.92 \
--backup-directory=/storage/backups \
    --on-controller

Příznak --on-controller označuje, že bychom chtěli, aby vytvořená záloha byla uložena v adresáři /storage/backups v uzlu ClusterControl. Vynechejte příznak, pokud jej chcete uložit v samotném uzlu databáze. Stejný příkaz lze použít k vytvoření zálohy pg_basebackup. Stačí nahradit "pgdump" za "pg_basebackup".

Chcete-li vypsat zálohu, jednoduše použijte příznaky --list a --cluster-id:

$ s9s backup --list --long --cluster-id=8
ID PI CID V I STATE     OWNER          HOSTNAME     CREATED  SIZE    TITLE
 8  -   8 - F COMPLETED admin          192.168.0.92 08:42:47    1204 Untitled Backup Record
 9  -   8 - F COMPLETED admin          192.168.0.92 08:45:52 3865462 Untitled Backup Record

Plánování zálohování

Plánování zálohování je podobné příkazu, který jsme použili k vytvoření zálohy, s dalším příznakem --recurrence:

$ s9s backup \
--create \
--backup-method=pg_basebackup \
--cluster-id=8 \
--nodes=192.168.0.92 \
--backup-directory=/storage/backups \
--on-controller \
--recurrence='30 0 * * *'

Hodnota recurrence musí být uzavřena s citací a ve formátu crontab.

Obnovení zálohy

Chcete-li obnovit zálohu do clusteru, použijte příznak --restore a uveďte ID zálohy, které chcete použít:

$ s9s backup \
--restore \
--cluster-id=8 \
--backup-id=9 \
--log
192.168.0.19: Checking 'socat' availability.
Stop slaves as restoring offline backup to master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.92:5432: Stopping node for restoring a base-backup.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting to stop.
192.168.0.92:5432: Backing up the current datadir.
192.168.0.92: Mount point of '/var/lib/pgsql/11/data': '/'
192.168.0.92: Creating copy of datadir (using 'mv'): /var/lib/pgsql/11/data_bak
192.168.0.92: Checking 'socat' availability.
192.168.0.92: Starting: su - postgres -c 'socat -u tcp-listen:9999,reuseaddr stdout | tar -C/var/lib/pgsql/11/data -xzf-' 2>&1 > /tmp/netcat.pg.log
192.168.0.92: socat/nc is started.
192.168.0.92: Restoring from '192.168.0.19':'/storage/backups/BACKUP-9/base.tar.gz'
192.168.0.92:5432: Starting node after restored a base-backup.
192.168.0.92:5432: Starting PostgreSQL.
192.168.0.92:5432: The postgresql service was started.
192.168.0.92:5432: Waiting to start.
You may now rebuild your slaves.
Finished restoring.
Checking the cluster.
Setting cluster to 'STARTING' state.
192.168.0.91:5432: Starting PostgreSQL.
192.168.0.91:5432: The postgresql service was started.
192.168.0.93:5432: Starting PostgreSQL.
192.168.0.93:5432: The postgresql service was started.
Cluster is successfully started.
Cluster status is STARTED.

Vezměte na vědomí, že pro zálohu pg_basebackup vyžaduje operace obnovy výpadek databáze. Všechny uzly PostgreSQL budou před obnovením zastaveny a obnovení proběhne na posledním známém masteru. Tento master bude vyvolán jako první (následován všemi otroky) po dokončení obnovy.

Ověření zálohy

Chcete-li obnovit a ověřit zálohu, použijte příznak --verify a zadejte cílový server pomocí příznaku --test-server:

$ s9s backup \
--verify \
--cluster-id=8 \
--backup-id=9 \
--test-server=192.168.0.99 \
--log

Testovací server nesmí být součástí clusteru a musí být přístupný přes SSH bez hesla z uzlu ClusterControl. ClusterControl nejprve nainstaluje cílový server se stejnou verzí PostgreSQL, streamuje a obnoví zálohu na tomto uzlu. Ověření zálohy hledá poslední výstupní kód po obnovení. Pokud je záloha obnovitelná, ClusterControl poté zastaví testovací server a odebere jej z ClusterControl (ale ClusterControl jej nevypne). Po dokončení úlohy byste měli vidět následující:

Backup 9 was successfully verified.

Vytvořit cluster ze zálohy

ClusterControl představil novou funkci ve verzi 1.7.1, kde lze vytvořit nový cluster na základě zálohy existujícího clusteru. To může být velmi užitečné při testování databáze na jiné platformě nebo verzi databáze. V tomto příkladu bychom chtěli nasadit dvouuzlový cluster PostgreSQL 9.6 založený na záložním ID 214:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.101?master;192.168.0.102?slave" \
--provider-version=9.6 \
--db-admin=postgres \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 9.6 - Test"
--backup-id=214 \
--wait

Vezměte na vědomí, že heslo administrátora pro nový cluster musí být totožné s heslem administrátora PostgreSQL, které je součástí zálohy. ClusterControl v zásadě provádí úlohu nasazení na základě následujícího pořadí:

  1. Nainstalujte potřebný software a závislosti na všech uzlech PostgreSQL.
  2. Spusťte první uzel.
  3. Streamujte a obnovujte zálohu na prvním uzlu (s příznakem automatického restartu).
  4. Nakonfigurujte a přidejte zbytek uzlů.

Potom můžete ověřit seznam clusterů pomocí následujícího příkazu:

$ s9s cluster --stat

Správa konfigurace

Chcete-li vypsat konfiguraci PostgreSQL uzlu, použijte příznak --list-config:

$ s9s node --list-config --cluster-id=8 --nodes=192.168.0.92
GROUP OPTION NAME                  VALUE
-     data_directory               '/var/lib/pgsql/11/data'
-     listen_addresses             '*'
-     port                         5432
-     max_connections              100
-     shared_buffers               253743kB
-     work_mem                     5074kB
-     maintenance_work_mem         63435kB
-     dynamic_shared_memory_type   posix
-     wal_level                    hot_standby
-     full_page_writes             on
-     wal_log_hints                on
-     max_wal_size                 1GB
-     min_wal_size                 80MB
-     checkpoint_completion_target 0.9
-     max_wal_senders              16
-     wal_keep_segments            32
-     hot_standby                  on
-     effective_cache_size         761229kB
-     log_destination              'stderr'
-     logging_collector            on
-     log_directory                'log'
-     log_filename                 'postgresql-%a.log'
-     log_truncate_on_rotation     on
-     log_rotation_age             1d
-     log_rotation_size            0
-     log_line_prefix              '%m [%p] '
-     log_timezone                 'UTC'
-     track_activity_query_size    2048
-     datestyle                    'iso, mdy'
-     timezone                     'UTC'
-     lc_messages                  'en_US.UTF-8'
-     lc_monetary                  'en_US.UTF-8'
-     lc_numeric                   'en_US.UTF-8'
-     lc_time                      'en_US.UTF-8'
-     default_text_search_config   'pg_catalog.english'
-     shared_preload_libraries     'pg_stat_statements'
-     pg_stat_statements.track     all

ClusterControl odpovídajícím způsobem vrátí výstup OPTION NAME a VALUE. Sloupec GROUP není v PostgreSQL použitelný, takže byste měli vidět hodnotu '-'.

Chcete-li změnit možnost konfigurace, použijte příznak --change-config a zadejte parametr a hodnotu pomocí --opt-name a --opt-value:

$ s9s node \
--change-config \
--nodes=192.168.0.92 \
--opt-name=min_wal_size \
--opt-value='100MB'
192.168.0.92:5432: Changed a read-only parameter. Node restart is required for change to take effect.

Měli byste vidět, že ClusterControl vrací stav modifikace konfigurace a doporučuje následný postup, abyste se ujistili, že se změna konfigurace projeví. Poté můžete použít příkaz "s9s node --restart" k restartování konkrétního uzlu.

Poslední myšlenky

ClusterControl nabízí velkou flexibilitu, pokud jde o správu a monitorování vašeho databázového clusteru PostgreSQL. Máte na výběr webové uživatelské rozhraní, které je poměrně jednoduché a přímočaré, plus rozhraní příkazového řádku, které vám umožňuje dosáhnout plné automatizace databáze pomocí skriptování. Šťastné řízení!


  1. Krásné bloky Boilerplate

  2. Podporuje váš ovladač ODBC zdroje uživatelských dat?

  3. návratová hodnota na pozici z STRING_SPLIT v SQL Server 2016

  4. Úvod do Oracle RMAN