sql >> データベース >  >> RDS >> PostgreSQL

ClusterControlCLIからPostgreSQLデータベースを管理する方法

    ClusterControl Web UIの他に、コマンドラインインターフェイスを使用してPostgreSQLインスタンスを管理できることをご存知ですか?

    ClusterControlは、PostgreSQLストリーミングレプリケーション(非同期レプリケーションと同期レプリケーションの両方)、およびスタンドアロンPostgreSQLインスタンスをサポートします。利用可能な機能の点で、コマンドラインインターフェイスをUIに近づけるように最善を尽くしました。

    なぜCLIを使用したいのですか?

    これにより、レプリケーションセットアップ全体を1つのコマンドで展開したり、フェイルオーバーを実行したり、セットアップに新しいノードを追加したりできます。これは、Ansible、Chef、またはPuppetで記述された既存のインフラストラクチャ自動化コードと非常によく統合されます。

    このブログ投稿では、ClusterControlCLIまたはs9sを使用してPostgreSQLストリーミングレプリケーションクラスターを管理する方法についてのウォークスルーを提供します。

    このブログ投稿に示されているほとんどの機能では、ClusterControlをインストールして、商用ライセンスまたは無料試用ライセンス(ClusterControlのインストール後30日まで有効)の有効なサブスクリプションで実行する必要があることに注意してください。

    クラスターの展開とインポート

    新しいクラスターの展開

    新しいクラスターをデプロイする前、または既存のPostgreSQLクラスターをClusterControlにインポートする前に、ClusterControlノードからすべてのデータベースノードへのパスワードなしのSSHが事前に構成されていることを確認してください。新しい3ノードのPostgreSQLストリーミングレプリケーションをデプロイする場合は、ClusterControlノードで次のコマンドを実行します。

    $ 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

    ClusterControlノードで、パスワードなしで次のコマンドを実行できるかどうかを確認します。

    $ ssh 192.168.0.91 "ls /root"

    ディレクトリの内容を見ることができれば、あなたは良い状態にあります。次に、-createフラグを指定してClusterControlCLIを使用してクラスターをデプロイします。

    $ 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

    最初のノードである192.168.0.91をマスターとして指定し、残りはスレーブです。 rootユーザーを介してパスワードなしのSSHをすでに構成しているため、-os-key-fileフラグを使用して、対応するSSHキーファイルとともにOSユーザーを「root」として指定しました。 --waitフラグは、ジョブが終了するまで待機して進行状況を報告することを意味します。

    ClusterControl UIから、アクティビティ>ジョブ>PostgreSQLクラスターの作成で展開の進行状況を監視することもできます。 :

    展開が完了すると、-statフラグを使用して実行中のクラスターの概要を確認できます:

    $ s9s cluster --stat

    既存のクラスターのインポート

    PostgreSQLストリーミングレプリケーションクラスターが既に手動でデプロイされている場合は、次のコマンドに示すように、-registerフラグを使用してClusterControlにインポートできます。

    $ 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は指定されたノードに接続し、トポロジーを検出して、クラスターをClusterControlに登録します。上記のように、「s9scluster--stat」コマンドで確認できます。

    ノードとクラスターの管理

    サービス制御

    クラスタのローリングリスタートを実行するには、クラスタIDを指定し、-rolling-restartフラグを使用します。

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

    コンポーネント「cluster」の--stopフラグを使用して、クラスターを停止します。プログレスバーの代わりにジョブ出力を表示するには、代わりに--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.

    WebUIと同じジョブメッセージを報告します。上記と同様に、クラスターを開始するには、-startフラグを使用します(ジョブログの代わりに進行状況を確認するには、代わりに--waitフラグを使用します):

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

    データベースノードでPostgreSQLサービスを再起動するには、「node」コンポーネントと--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.

    PostgreSQLノードを停止および開始するには、以下に示すように、-stopまたは--startフラグを指定して同じコマンドを適用するだけです。

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

    これらのアクションはシステムを再起動しないことに注意してください。

    スケーリングノード

    クラスタからノードを削除するには、-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.

    新しいノードの追加も同様に機能しますが、事前にパスワードなしのSSHを介してノードにアクセスできることを確認する必要があります。最初に構成してから、-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'.

    ジョブログから、クラスターにはすでにマスターが実行されているため(192.168.0.91)、新しいノードがマスターのスレーブとしてデプロイされることがわかります。その後、ClusterControlは必要なすべてのアクションを実行し、それに応じて新しいノードを指定された役割として準備します。

    新しいマスターへの切り替え

    スイッチオーバーを実行するには、スレーブの1つを選択して、-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.

    ジョブメッセージは、ClusterControlが最初に現在のトポロジを検出し、クラスター内のすべてのノードを停止することを示しています。次に、新しいマスターを構成し、そこから複製する他のノードを取得します。また、 pg_rewindの実行も試みます。 ダウングレードされたマスターのPGDATAを新しいベースバックアップと再同期します。ジョブの最後に、ClusterControlは現在のトポロジとプロモーションの状態を報告します。

    次に、クラスター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.

    左端の列の状態「poM-」には、次の意味があります。

    • p-PostgreSQLノード
    • o-オンライン
    • M-マスター

    データベース管理

    クラスタで見つかったすべてのデータベースを一覧表示するには、コンポーネントクラスタで--list-databaseフラグを使用します。

    $ 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

    クラスタに多数のデータベースがある場合、このオプションでは一部のデータベースが表示されない場合があることに注意してください。膨大な数のデータベースをサンプリングすると高負荷が発生するため、コントローラーには上限が組み込まれています。

    クラスタ用の新しいデータベースを作成する場合は、次のようにします。

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

    (同じデータベース名を使用して)関連付けられたデータベースとともに新しいデータベースユーザーを作成するには、-create-accountと--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は、適切な権限を持つデータベースとユーザーアカウントを作成し、すべてのデータベースノードでそれを許可するために必要なアクションを実行します。

    バックアップ管理

    ClusterControlは、PostgreSQLの2つのバックアップ方法をサポートしています。

    • pgdump-クラスターのすべてのPostgreSQLデータベースを1つのスクリプトファイルに書き出すためのユーティリティであるpg_dumpallのエイリアス。
    • pg_basebackup-PostgreSQLデータベースの完全なファイルシステムレベルのバックアップを作成するためのユーティリティ。

    バックアップの作成

    pg_dumpallを使用して新しいバックアップを作成するには、データベースノードを1つ選択し、-backup-methodフラグで「pgdump」を指定します。

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

    --on-controllerフラグは、作成されたバックアップをClusterControlノードの/ storage/backupsディレクトリに保存することを示します。データベースノード自体にフラグを保存する場合は、フラグを省略します。同じコマンドを適用して、pg_basebackupバックアップを作成できます。 「pgdump」を「pg_basebackup」に置き換えるだけです。

    バックアップを一覧表示するには、-listフラグと--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

    バックアップのスケジュール

    バックアップのスケジュールは、バックアップの作成に使用したコマンドに似ていますが、-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 * * *'

    再発の値は、引用符で囲み、crontab形式で囲む必要があります。

    バックアップの復元

    クラスターにバックアップを復元するには、-restoreフラグを使用して、使用するバックアップIDを指定します。

    $ 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.

    pg_basebackupのバックアップの場合、復元操作にはデータベースのダウンタイムが必要であることに注意してください。すべてのPostgreSQLノードは復元前に停止され、復元は最後の既知のマスターで行われます。復元が完了した後、このマスターが最初に起動され(その後にすべてのスレーブが続きます)。

    バックアップの確認

    バックアップを復元して検証するには、-verifyフラグを使用し、-test-serverフラグを使用して宛先サーバーを指定します。

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

    テストサーバーはクラスターの一部であってはならず、ClusterControlノードからパスワードなしのSSHを介してアクセスできる必要があります。 ClusterControlは、最初に同じPostgreSQLバージョンのターゲットサーバーをインストールし、そのノードでバックアップをストリーミングおよび復元します。バックアップ検証では、復元後の最後の終了コードが検索されます。バックアップが復元可能な場合、ClusterControlはテストサーバーを停止し、ClusterControlから削除します(ただし、ClusterControlはバックアップをシャットダウンしません)。ジョブが完了すると、次のように表示されます。

    Backup 9 was successfully verified.

    バックアップからクラスターを作成

    ClusterControlは、v1.7.1で新機能を導入しました。この機能では、既存のクラスターによって作成されたバックアップに基づいて新しいクラスターを作成できます。これは、別のプラットフォームまたはデータベースバージョンでデータベースをテストする場合に非常に役立ちます。この例では、バックアップID214に基づいて2ノードのPostgreSQL9.6クラスターをデプロイします。

    $ 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

    新しいクラスターの管理者ユーザーのパスワードは、バックアップに含まれているPostgreSQLの管理者パスワードと同じである必要があることに注意してください。基本的に、ClusterControlは次の順序に基づいて展開ジョブを実行します。

    1. 必要なソフトウェアと依存関係をすべてのPostgreSQLノードにインストールします。
    2. 最初のノードを開始します。
    3. 最初のノードでバックアップをストリーミングおよび復元します(自動再起動フラグを使用)。
    4. 残りのノードを構成して追加します。

    次に、次のコマンドを使用してクラスターリストを確認できます。

    $ s9s cluster --stat

    構成管理

    ノードのPostgreSQL構成を一覧表示するには、-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は、それに応じてOPTIONNAMEとVALUEの出力を返します。 GROUP列はPostgreSQLには適用されないため、「-」の値が表示されます。

    構成オプションを変更するには、-change-configフラグを使用し、-opt-nameと--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.

    ClusterControlが構成変更ステータスを返すのを確認し、構成変更が有効になるようにフォローアップ手順をアドバイスする必要があります。次に、「s9s node --restart」コマンドを使用して、特定のノードを再起動できます。

    最終的な考え

    ClusterControlは、PostgreSQLデータベースクラスターの管理と監視に関して優れた柔軟性を提供します。 Web UIを選択できます。これは、スクリプトを介して完全なデータベース自動化を実現できる、非常にシンプルでわかりやすいコマンドラインインターフェイスです。ハッピー管理!


    1. SelectSUMクエリはnullを返します。 0を返す必要があります

    2. 再帰CTEで重複アイテムを検出する

    3. LogMinerを使用して現在の変更を見つける

    4. postgres CLOSESTオペレーターはありますか?