目次
2つ目は、システムテーブルgp_segment_configurationです。
2.2クラスター内の各サーバーで実行されているノードの数を一覧表示します
1つ、gpstate
gpstateは、Greenplumのステータスを理解するための基本的なコマンドです。このコマンドを使用すると、データベースが正常に実行されているかどうかに関係なく、現在のデータベースのステータス情報を取得できます。
ターミナルでgpstateコマンドを入力しても機能しない場合は、以下を確認することをお勧めします。
❏ソース<Greenplumインストールディレクトリ> /greenplum_path.shが実行されているかどうか。
❏MASTER_DATA_DIRECTORYおよびPGPORT環境変数が正しく設定されているかどうか。
1.1 gpstate -s
各ノードの詳細な構成およびステータス情報を表示します
~]$ gpstate -s
20210222:17:15:51:055081 gpstate:gpmaster:gpadmin-[INFO]:-Starting gpstate with args: -s
20210222:17:15:51:055081 gpstate:gpmaster:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b'
20210222:17:15:51:055081 gpstate:gpmaster:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.24 (Greenplum Database 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 16 2020 02:24:06'
20210222:17:15:51:055081 gpstate:gpmaster:gpadmin-[INFO]:-Obtaining Segment details from master...
20210222:17:15:51:055081 gpstate:gpmaster:gpadmin-[INFO]:-Gathering data from segments...
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:--Master Configuration & Status
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master host = gpmaster
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master postgres process ID = 25885
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master data directory = /greenplum/gpdata/master/gpseg-1
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master port = 5432
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master current role = dispatch
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Greenplum initsystem version = 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Greenplum current version = PostgreSQL 9.4.24 (Greenplum Database 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 16 2020 02:24:06
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Postgres version = 9.4.24
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Master standby = No master standby configured
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:-Segment Instance Status Report
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Segment Info
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Hostname = gpseg01
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Address = gpseg01
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Datadir = /greenplum/gpdata/primary/gpseg0
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Port = 55000
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Mirroring Info
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Current role = Primary
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Preferred role = Primary
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Mirror status = Synchronized
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Status
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- PID = 24988
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Configuration reports status as = Up
20210222:17:15:52:055081 gpstate:gpmaster:gpadmin-[INFO]:- Database status = Up
1.2 gpstate -e
すべてのセグメントのステータスをチェックして、オフライン、データの回復、不均衡などの異常な状態がないかどうかを確認します。
~]$ gpstate -e
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-Starting gpstate with args: -e
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b'
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.24 (Greenplum Database 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 16 2020 02:24:06'
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-Obtaining Segment details from master...
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-Gathering data from segments...
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-Segment Mirroring Status Report
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-----------------------------------------------------
20210222:17:17:03:055291 gpstate:gpmaster:gpadmin-[INFO]:-All segments are running normally
1.3 gpstate -Q
オフラインノードの情報をすばやく確認して一覧表示します
1.4 gpstate -m
すべてのミラーセグメントの構成情報を一覧表示します
1.5 gpstate -f
スタンバイマスターノードに関する情報を表示します
~]$gpstate -f
20210222:17:20:15:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-Starting gpstate with args: -f
20210222:17:20:15:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 4.3.27.0 build 1'
20210222:17:20:15:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.2.15 (Greenplum Database 4.3.27.0 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on Jul 11 2018 19:48:18'
20210222:17:20:15:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-Obtaining Segment details from master...
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-Standby master details
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:-----------------------
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:- Standby address = P1QMSMDW02
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:- Standby data directory = /gpmaster/gpseg-1
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:- Standby port = 5432
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:- Standby PID = 25445
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:- Standby status = Standby host passive
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--------------------------------------------------------------
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--pg_stat_replication
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--------------------------------------------------------------
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--WAL Sender State: streaming
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--Sync state: sync
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--Sent Location: 6CC/7ABFAA50
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--Flush Location: 6CC/7ABFAA50
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--Replay Location: 6CC/7ABEDFA8
20210222:17:20:16:033853 gpstate:P1QMSMDW01:gpadmin-[INFO]:--------------------------------------------------------------
1.6 gpstate -i
Greenplumのバージョン情報を表示する
~]$ gpstate -i
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:-Starting gpstate with args: -i
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b'
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.24 (Greenplum Database 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 16 2020 02:24:06'
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:-Obtaining Segment details from master...
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:-Loading version information
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:- Host Datadir Port Version
20210222:17:20:22:055731 gpstate:gpmaster:gpadmin-[INFO]:- gpmaster /greenplum/gpdata/master/gpseg-1 5432 PostgreSQL 9.4.24 (Greenplum Database 6.7.0 build commit:2fbc274bc15a19b5de3c6e44ad5073464cd4f47b) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Apr 16 2020 02:24:06
2つ目は、システムテーブルgp_segment_configurationです。
Greenplumクラスターが機能している場合は、gp_segment_configurationを照会して、すべてのノードの構成と実行状況を取得できます。gp_segment_configurationはpg_globalテーブルスペースにあり、現在のSQLクライアントが接続されているデータベース名に関係なく、システムテーブルを照会できます。
postgres=# select * from gp_segment_configuration;
dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir
------+---------+------+----------------+------+--------+-------+----------+----------+----------------------------------
1 | -1 | p | p | n | u | 5432 | gpmaster | gpmaster | /greenplum/gpdata/master/gpseg-1
5 | 3 | p | p | s | u | 55000 | gpseg02 | gpseg02 | /greenplum/gpdata/primary/gpseg3
11 | 3 | m | m | s | u | 56000 | gpseg01 | gpseg01 | /greenplum/gpdata/mirror/gpseg3
6 | 4 | p | p | s | u | 55001 | gpseg02 | gpseg02 | /greenplum/gpdata/primary/gpseg4
12 | 4 | m | m | s | u | 56001 | gpseg01 | gpseg01 | /greenplum/gpdata/mirror/gpseg4
7 | 5 | p | p | s | u | 55002 | gpseg02 | gpseg02 | /greenplum/gpdata/primary/gpseg5
13 | 5 | m | m | s | u | 56002 | gpseg01 | gpseg01 | /greenplum/gpdata/mirror/gpseg5
4 | 2 | p | p | s | u | 55002 | gpseg01 | gpseg01 | /greenplum/gpdata/primary/gpseg2
10 | 2 | m | m | s | u | 56002 | gpseg02 | gpseg02 | /greenplum/gpdata/mirror/gpseg2
2 | 0 | p | p | s | u | 55000 | gpseg01 | gpseg01 | /greenplum/gpdata/primary/gpseg0
8 | 0 | m | m | s | u | 56000 | gpseg02 | gpseg02 | /greenplum/gpdata/mirror/gpseg0
3 | 1 | p | p | s | u | 55001 | gpseg01 | gpseg01 | /greenplum/gpdata/primary/gpseg1
9 | 1 | m | m | s | u | 56001 | gpseg02 | gpseg02 | /greenplum/gpdata/mirror/gpseg1
出力の各行はGreenplumのノードを表し、フィールドと意味は表に示されています
2.1現在オフラインになっているノードを一覧表示します
このSQLに基づいてノードのステータスを監視できます。
SELECT '当前segment host: '|| hostname||' 的role: '||role|| '状态为: '|| status FROM gp_segment_configuration
postgres-# WHERE status <> 'u';
2.2クラスター内の各サーバーで実行されているノードの数を一覧表示します
=# SELECT hostname,count(distinct dbid) FROM gp_segment_configuration
WHERE status = 'u' and role = 'p' group by hostname;
hostname | count
----------+-------
gpmaster | 1
gpseg01 | 3
gpseg02 | 3
クラスター内の各サーバーで実行されているノードの数に一貫性がない場合、クラスター全体が不均衡な状態になり、クラスター全体のスループットに影響を与えることに注意してください。
3.セグメント障害の回復とリバランス
Greenplumクラスターのデータノード(プライマリまたはミラー)に障害が発生する可能性があります。障害の原因には、クラスター内の一部のホストのオペレーティングシステム、電源、ネットワーク、およびディスクの障害が含まれますが、これらに限定されません。MirrorSegmentで構成されたGreenplumクラスターは、高可用性特性を備えています。障害が原因でノードがオフラインになった場合でも、クラスターはデータの整合性を維持し、読み取りと書き込みを行うことができます。考えられるハードウェア障害のトラブルシューティングと修復の後、管理者はgprecoversegコマンドを使用して、障害が発生したノードをできるだけ早く通常の動作状態に復元する必要があります。
ノードに障害が発生すると、Greenplumクラスターは次の状況になる可能性があります。
- プライマリにミラーがないクラスターのみがあります。プライマリに障害が発生すると、データの整合性を保証できず、Greenplumクラスターは使用できなくなります。
- ミラーで構成されたクラスターでは、プライマリセグメントに障害が発生すると、対応するMirrorSegmentが自動的にプライマリロールに切り替わり、障害が発生したノードを置き換えて、クラスターが使用可能であることを確認し続けます。同時に、障害時のデータベースの変更が記録されるため、障害が発生したノードをリカバリ中に最新の状態に同期させることができます。プライマリとミラーのペアはデフォルトでは同じサーバー上に存在しないため、この種類のミラーはプライマリの一時的な動作状態を置き換え、クラスター内のサーバー間のワークロードの不均衡を引き起こし、スループットに影響を与えるため、修復する必要があります時間内に。
- ミラーセグメントのみに障害が発生した場合、対応するプライマリセグメントは、障害時のデータベースの変更を記録します。各ノードの役割は変わらないため、クラスターのパフォーマンスへの影響は小さいですが、それでもできるだけ早く修復する必要があります。
以下では、図に示されているクラスターを例として取り上げ、gprecoversegを使用して障害が発生したクラスターデータを回復するプロセスを示します。
1)初期ノード割り当て状態では、クラスター内に2つのセグメントホストがあり、ノード1と2のプライマリセグメントはホスト1で実行され、ノード3と4のプライマリセグメントはホスト2で実行されます。図13-1に示すように。
2)このとき、ホスト2のプライマリセグメントNo. 3に障害が発生し、ホスト1のミラーセグメントが自動的にプライマリセグメントに切り替わり、データの完全なクラスターを使用できるようになります。示されているように
3)ホスト2で発生する可能性のあるハードウェアシステム障害が解決されたら、管理者はマスターでgprecoversegコマンドを実行する必要があります。このコマンドはオフラインノードを起動します。起動が成功すると、アクティブノードとスタンバイノード間の増分同期が開始され、オフライン期間中のデータ変更の復元が開始されます。上記の回復および同期期間中、クラスターは完全に使用可能のままですが、パフォーマンスに影響があります。同期プロセスに費やされる時間は、ノードの障害時にデータベースで変更されたデータのサイズによって異なります。示されているように
4)同期が完了すると、システムは次の図のようになります。クラスターは障害および回復プロセス全体を通じて常に使用可能ですが、現在の状態で各ホストでアクティブ化されているプライマリセグメントの実際の数に一貫性がない場合があることに注意してください。ホスト1には3つのプライマリセグメントがあり、ホスト2には1つのプライマリセグメントしかありません。プライマリセグメントは実際にクエリ計算の実行に参加するため、この状態ではホスト1のワークロードがホスト2の3倍になり、クラスターのスループットに深刻な影響を及ぼします。
この状態は不平衡状態と呼ばれます。管理者は、マスターで次のコマンドを実行してノードを再平衡化し、クラスターのパフォーマンスを復元する必要があります。
gprecovery -r
、rebalanceコマンドを使用すると、ノードのプライマリとミラーが同時にオフラインで同期され、ユーザーセッションは接続されたままになりますが、実行中のクエリと操作はキャンセルまたはロールバックされるため、管理者は実行する必要があります。生産への影響を最小限に抑えるための適切なタイミングでのリバランス操作。示されているように
リバランスが完了すると、システムは最高のパフォーマンスで初期ノード割り当て状態に戻ります。
gprecoverseg -Fコマンドを使用して、ノードをフルテキストコピーモードで復元できます。最初にデフォルトの増分同期を試すことをお勧めします。
参照:https://blog.csdn.net/MyySophia/article/details/102812733