Skip to content

Latest commit

 

History

History
773 lines (610 loc) · 39 KB

File metadata and controls

773 lines (610 loc) · 39 KB
title Tanzu Greenplum 7.7をVMware Fusion上のRocky Linux VMにインストールするメモ
summary この記事では、Intel Mac上のVMware FusionにRocky Linux VMを構築し、Tanzu Greenplumを4ノード構成でインストール・設定する手順を詳しく解説します。
tags
Greenplum
Tanzu
PostgreSQL
Rocky
categories
Middleware
RDBMS
Greenplum
date 2025-12-16 06:21:14 UTC
updated 2025-12-16 06:22:54 UTC

Tanzu Greenplumを検証するためにインストールする環境が欲しかったのですが、昨今、ラップトップもサーバーもARMにばかりしてしまい、 リソースに余裕があるx86_64環境が手元に無かったので、眠っていたIntel MacのVMware Fusion上にRocky Linux VMを構築して、その上にTanzu Greenplumをインストールすることにしました。

Rocky Linux VMの構築

今回はRocky Linux 9.7 Minimal ISO を使用しました。 https://download.rockylinux.org/pub/rocky/9/isos/x86_64/ からダウンロード可能です。

Coordinator 1台、Segment 3台の計4台構成を作ります。 まずはテンプレートとなるVMを1台作成し、そこからクローンして各サーバーを作成します。

IPアドレスは次のとおりにします。

Host IP Address
Coordinator 192.168.11.200
Segment1 192.168.11.201
Segment2 192.168.11.202
Segment3 192.168.11.203

ISOからVMを新規作成します。ここでは名前はgp-templateとしました。

各サーバー4vCPU、16GBメモリにします。(フル稼働しない前提でオーバーコミットします)

image

ディスク60GBにします

image

ネットワークはブリッジで。

言語を選択。

image

必須項目を設定します。

image

ディスクを選択。デフォルトで。

image

IPアドレスはstaticに設定します。

image

rootのパスワードを設定します。

image

"Begin Installation"をクリックしてインストール開始します。

image

完了したら"Reboot System"をクリックして再起動します。

image

VMware Fusionのコンソールで作業を進めます。

image

自分のSSH公開鍵を~/.ssh/authorized_keysに登録します。

curl https://github.com/making.keys > ~/.ssh/authorized_keys

ターミナルからsshでこのサーバーに接続します。

Greenplumのインストールに必要なパッケージをインストールします。

sudo dnf -y install apr \
apr-util \
bash \
bzip2 \
curl \
iproute \
krb5-devel \
libcurl \
libevent \
libtiff \
libuuid \
libuv \
libxml2 \
libyaml \
libzstd \
lsof \
openldap \
openssh \
openssh-clients \
openssh-server \
openssl \
openssl-libs \
perl \
python3 \
python3-psycopg2 \
python3-psutil \
python3-pyyaml \
python3.11 \
python3.11-devel \
readline \
rsync \
sed \
tar \
which \
zip \
zlib \
sshpass \
java-21-openjdk-devel

echo 2 | sudo update-alternatives --config java

cat <<EOF | sudo tee -a /etc/sysctl.d/99-sysctl.conf > /dev/null
net.ipv4.ip_local_reserved_ports=65330
EOF
sudo sysctl --system

cat <<EOF | sudo tee -a /etc/security/limits.conf > /dev/null
* soft nofile 65536
* hard nofile 65536
EOF

必須ではないけれど、VMの監視用にNode Exporterもインストールしておきます。

sudo dnf install -y epel-release
sudo dnf install -y node-exporter

Tanzu Greenplumのダウンロード

次に、GreenplumのRPMパッケージをダウンロードします。 Broadcomのアカウントが必要です。

一旦、サーバー上でDownloadsディレクトリを作成します。

mkdir -p ~/Downloads

Broadcom Supportにログインして、Tanzu Greenplumのダウンロードページにアクセスします。

最新バージョンを選択します。

image

RHEL 9用のRPMパッケージをダウンロードします。必要に応じて他のパッケージもダウンロードしてください。

image

サーバーを抜けて、端末上で次のコマンドでダウンロードしたRPMパッケージをサーバーに転送します。

scp *.rpm [email protected]:~/Downloads/

Tanzu Greenplumのインストール

サーバーに再度sshで接続します。

gpadminユーザーを作ってダウンロードしたrpmをインストールします。

sudo groupadd gpadmin
sudo useradd -m gpadmin -g gpadmin
echo gpadmin:Greenplum123 | sudo chpasswd
echo 'gpadmin ALL=(ALL) NOPASSWD: ALL' | sudo EDITOR='tee -a' visudo

sudo yum -y install /root/Downloads/greenplum-db-7.7.0-el9-x86_64.rpm
sudo chown -R gpadmin:gpadmin /usr/local/greenplum*
sudo chown -R gpadmin:gpadmin /root/Downloads
sudo chgrp -R gpadmin /usr/local/greenplum*

Greenplum用の環境変数などが設定されたスクリプトを.bashrcで読み込むようにします。

cat <<EOF | sudo su - gpadmin bash -c 'tee -a /home/gpadmin/.bashrc'
source /usr/local/greenplum-db/greenplum_path.sh
EOF

Firewallを無効にします。

https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/install_guide-prep_os.html#deactivate-or-configure-firewall-software-1

sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

一旦サーバーをシャットダウンします。

sudo systemctl poweroff -i

クローンの作成

VMware Fusionの管理画面で、先ほど作成したgp-template VMを右クリックして"フルクローンを作成"を選択します。

image

次の4 VMを作成し、それぞれ起動します。

  • gp-coordinator
  • gp-segment1
  • gp-segment2
  • gp-segment3

image

各サーバーでホスト名とIPアドレスを設定します。クローン後はIPアドレスが重複しているので、VMware Fusionのコンソール上で作業します。

gp-coordinatorはIPアドレスの変更は不要なので、ホスト名だけ変更します。

hostnamectl set-hostname gp-coordinator

gp-segment1~3は、次のコマンドでホスト名とIPアドレスを設定します。サーバー毎にホスト名とIPアドレスを変更してください。

hostnamectl set-hostname gp-segment1
nmcli connection show ens160
nmcli connection modify ens160 ipv4.addresses 192.168.11.201/24
nmcli connection down ens160
nmcli connection up ens160
ip addr

それぞれ次のような作業画面になります。

  • gp-segment1 image
  • gp-segment2 image
  • gp-segment3 image

設定が完了したら、各サーバーにsshで接続し、hostnameが正しく設定されていることを確認します。

$ for i in 200 201 202 203;do
ssh [email protected].$i "hostname"
done
gp-coordinator
gp-segment1
gp-segment2
gp-segment3

次に、各サーバーの/etc/hostsファイルを次の内容で更新します。

$ cat <<EOF > hosts 
192.168.11.200 gp-coordinator
192.168.11.201 gp-segment1
192.168.11.202 gp-segment2
192.168.11.203 gp-segment3
127.0.0.1 localhost
EOF

それぞれのサーバーに/etc/hostsファイルをSCPで配布します。

for i in 200 201 202 203;do
scp hosts [email protected].$i:/etc/hosts
done

SSHの設定

各ノード間をパスワードレスでssh通信できるようにする必要があります。

for i in 200 201 202 203;do
ssh [email protected].$i "su - gpadmin bash -c 'ssh-keygen -m PEM -t rsa -b 4096 -q -N \"\" -f /home/gpadmin/.ssh/id_rsa'"
done

以下はgp-coordinatorノード上で作業します。

gp-coordinator の公開鍵を各ホストの /home/gpadmin/.ssh/authorized_keys に追記します。

sudo su - gpadmin
SSHPASS=Greenplum123 sshpass -e ssh-copy-id -o StrictHostKeyChecking=no gp-coordinator
SSHPASS=Greenplum123 sshpass -e ssh-copy-id -o StrictHostKeyChecking=no gp-segment1
SSHPASS=Greenplum123 sshpass -e ssh-copy-id -o StrictHostKeyChecking=no gp-segment2
SSHPASS=Greenplum123 sshpass -e ssh-copy-id -o StrictHostKeyChecking=no gp-segment3

次のコマンドで各ホストの公開鍵を各ホストの /home/gpadmin/.ssh/known_hosts に追記します。

cat <<EOF > hostfile_exkeys
gp-coordinator
gp-segment1
gp-segment2
gp-segment3
EOF

gpssh-exkeys -f hostfile_exkeys

Tanzu Greenplumのセットアップ

次のセグメント構成でGreenplumクラスタをセットアップします。

項目
セグメント数/サーバー 2
合計プライマリセグメント 6
合計ミラーセグメント 6
合計インスタンス/サーバー 4(2プライマリ + 2ミラー)

以下の作業は gp-coordinator 上でのみ行います。gpadmin ユーザーで作業します。

coordinatorのディレクトリを作成します。

sudo mkdir -p /data/coordinator
sudo chown gpadmin:gpadmin /data/coordinator

セグメントサーバーのホストファイルを作成します。

cat <<EOF > hostfile_gpssh_segonly
gp-segment1
gp-segment2
gp-segment3
EOF

各セグメントサーバーにディレクトリを作成します。

gpssh -f hostfile_gpssh_segonly -e 'sudo mkdir -p /data/primary'
gpssh -f hostfile_gpssh_segonly -e 'sudo mkdir -p /data/mirror'
gpssh -f hostfile_gpssh_segonly -e 'sudo chown -R gpadmin /data/*'

Greenplum初期化用の設定ファイルを準備します。

mkdir -p gpconfigs

cat <<EOF > gpconfigs/hostfile_gpinitsystem
gp-segment1
gp-segment2
gp-segment3
EOF

gpinitsystemの設定ファイルを作成します。

cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config

sed -i.bak \
  -e 's|^declare -a DATA_DIRECTORY=.*|declare -a DATA_DIRECTORY=(/data/primary /data/primary)|' \
  -e 's|^#declare -a MIRROR_DATA_DIRECTORY=.*|declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)|' \
  -e 's|^#MIRROR_PORT_BASE=.*|MIRROR_PORT_BASE=7000|' \
  -e 's|^COORDINATOR_HOSTNAME=.*|COORDINATOR_HOSTNAME=gp-coordinator|' \
  gpconfigs/gpinitsystem_config

変更内容:

  • DATA_DIRECTORY: 各サーバーに2つのプライマリセグメント
  • MIRROR_DATA_DIRECTORY: 各サーバーに2つのミラーセグメント
  • MIRROR_PORT_BASE: ミラーのベースポート番号を有効化
  • COORDINATOR_HOSTNAME: coordinatorホスト名を設定

sed後の設定ファイルを確認します。

grep -E "^(declare -a DATA_DIRECTORY|declare -a MIRROR_DATA_DIRECTORY|MIRROR_PORT_BASE|COORDINATOR_HOSTNAME|PORT_BASE)" gpconfigs/gpinitsystem_config

以下のように表示されることを確認します:

PORT_BASE=6000
declare -a DATA_DIRECTORY=(/data/primary /data/primary)
COORDINATOR_HOSTNAME=gp-coordinator
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)

Greenplumクラスタを初期化します。

gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem

初期化時に確認メッセージが表示されたら y を入力してください。

20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Reading Greenplum configuration file gpconfigs/gpinitsystem_config
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Locale has not been set in gpconfigs/gpinitsystem_config, will set to default value
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-COORDINATOR_MAX_CONNECT not set, will set to default value 250
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Checking configuration parameters, Completed
20251212:20:45:29:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
...
20251212:20:45:30:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Configuring build for standard array
20251212:20:45:30:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20251212:20:45:30:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Building primary segment instance array, please wait...
......
20251212:20:45:33:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Building group mirror array type , please wait...
......
20251212:20:45:36:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Checking Coordinator host
20251212:20:45:36:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Checking new segment hosts, please wait...
............
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Checking new segment hosts, Completed
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Greenplum Database Creation Parameters
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:---------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator Configuration
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:---------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator hostname       = gp-coordinator
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator port           = 5432
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator instance dir   = /data/coordinator/gpseg-1
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator LOCALE         = 
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Greenplum segment prefix   = gpseg
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator Database       = 
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator connections    = 250
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator buffers        = 128000kB
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Segment connections        = 750
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Segment buffers            = 128000kB
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Encoding                   = UNICODE
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Postgres param file        = Off
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Initdb to be used          = /usr/local/greenplum-db-7.7.0/bin/initdb
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-GP_LIBRARY_PATH is         = /usr/local/greenplum-db-7.7.0/lib
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-HEAP_CHECKSUM is           = on
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-HBA_HOSTNAMES is           = 0
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Ulimit check               = Passed
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Array host connect type    = Single hostname per node
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator IP address [1]      = ::1
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator IP address [2]      = 192.168.11.200
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator IP address [3]      = 192.168.11.69
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Coordinator IP address [4]      = fe80::20c:29ff:fe61:b08
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Standby Coordinator             = Not Configured
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Number of primary segments = 2
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total Database segments    = 6
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Trusted shell              = ssh
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Number segment hosts       = 3
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Mirror port base           = 7000
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Number of mirror segments  = 2
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Mirroring config           = ON
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Mirroring type             = Group
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:----------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Greenplum Primary Segment Configuration
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:----------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment1 	6000 	gp-segment1 	/data/primary/gpseg0 	2
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment1 	6001 	gp-segment1 	/data/primary/gpseg1 	3
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment2 	6000 	gp-segment2 	/data/primary/gpseg2 	4
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment2 	6001 	gp-segment2 	/data/primary/gpseg3 	5
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment3 	6000 	gp-segment3 	/data/primary/gpseg4 	6
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment3 	6001 	gp-segment3 	/data/primary/gpseg5 	7
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:---------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Greenplum Mirror Segment Configuration
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:---------------------------------------
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment2 	7000 	gp-segment2 	/data/mirror/gpseg0 	8
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment2 	7001 	gp-segment2 	/data/mirror/gpseg1 	9
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment3 	7000 	gp-segment3 	/data/mirror/gpseg2 	10
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment3 	7001 	gp-segment3 	/data/mirror/gpseg3 	11
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment1 	7000 	gp-segment1 	/data/mirror/gpseg4 	12
20251212:20:45:49:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-gp-segment1 	7001 	gp-segment1 	/data/mirror/gpseg5 	13

Continue with Greenplum creation Yy|Nn (default=N):
> 

yを入力すると、次のようなログが出力されます。

20251212:20:47:18:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Building the Coordinator instance database, please wait...
20251212:20:47:30:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Starting the Coordinator in admin mode
20251212:20:47:31:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Commencing parallel build of primary segment instances
20251212:20:47:31:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Spawning parallel processes    batch [1], please wait...
......
20251212:20:47:31:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
..................................................
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Parallel process exit status
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as completed           = 6
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as killed              = 0
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as failed              = 0
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Removing back out file
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-No errors generated from parallel processes
20251212:20:48:21:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Restarting the Greenplum instance in production mode
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Starting gpstop with args: -a -l /home/gpadmin/gpAdminLogs -m -d /data/coordinator/gpseg-1
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Gathering information and validating the environment...
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Obtaining Greenplum Coordinator catalog information
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Obtaining Segment details from coordinator...
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4'
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Commencing Coordinator instance shutdown with mode='smart'
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Coordinator segment instance directory=/data/coordinator/gpseg-1
20251212:20:48:21:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Stopping coordinator segment and waiting for user connections to finish ...
server shutting down
20251212:20:48:22:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Attempting forceful termination of any leftover coordinator process
20251212:20:48:22:008979 gpstop:gp-coordinator:gpadmin-[INFO]:-Terminating processes for segment /data/coordinator/gpseg-1
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Starting gpstart with args: -a -l /home/gpadmin/gpAdminLogs -d /data/coordinator/gpseg-1
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Gathering information and validating the environment...
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4'
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Greenplum Catalog Version: '302307241'
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Starting Coordinator instance in admin mode
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-CoordinatorStart pg_ctl cmd is env GPSESSID=0000000000 GPERA=None COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1 $GPHOME/bin/pg_ctl -D /data/coordinator/gpseg-1 -l /data/coordinator/gpseg-1/log/startup.log -w -t 600 -o " -c gp_role=utility " start
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Obtaining Greenplum Coordinator catalog information
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Obtaining Segment details from coordinator...
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Setting new coordinator era
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Coordinator Started...
20251212:20:48:23:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Shutting down coordinator
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Commencing parallel segment instance startup, please wait...
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Process results...
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-----------------------------------------------------
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-   Successful segment starts                                            = 6
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-   Failed segment starts                                                = 0
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-   Skipped segment starts (segments are marked down in configuration)   = 0
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-----------------------------------------------------
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Successfully started 6 of 6 segment instances 
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-----------------------------------------------------
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Starting Coordinator instance gp-coordinator directory /data/coordinator/gpseg-1 
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-CoordinatorStart pg_ctl cmd is env GPSESSID=0000000000 GPERA=ab03d3b04e6ea60f_251212204823 COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1 $GPHOME/bin/pg_ctl -D /data/coordinator/gpseg-1 -l /data/coordinator/gpseg-1/log/startup.log -w -t 600 -o " -c gp_role=dispatch " start
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Command pg_ctl reports Coordinator gp-coordinator instance active
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Connecting to db template1 on host localhost
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-No standby coordinator configured.  skipping...
20251212:20:48:24:009043 gpstart:gp-coordinator:gpadmin-[INFO]:-Database successfully started
20251212:20:48:24:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Completed restart of Greenplum instance in production mode
20251212:20:48:24:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Creating core GPDB extensions
20251212:20:48:25:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Importing system collations
20251212:20:48:32:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Commencing parallel build of mirror segment instances
20251212:20:48:32:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Spawning parallel processes    batch [1], please wait...
......
20251212:20:48:32:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
.........
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Parallel process exit status
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as completed           = 6
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as killed              = 0
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Total processes marked as failed              = 0
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:------------------------------------------------
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Scanning utility log file for any warning messages
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Log file scan check passed
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Greenplum Database instance successfully created
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-------------------------------------------------------
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-To complete the environment configuration, please 
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-update gpadmin .bashrc file with the following
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-2. Add "export COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1"
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-   to access the Greenplum scripts for this instance:
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-   or, use -d /data/coordinator/gpseg-1 option for the Greenplum scripts
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-   Example gpstate -d /data/coordinator/gpseg-1
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20251212.log
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-To initialize a Standby Coordinator Segment for this Greenplum instance
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Review options for gpinitstandby
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-------------------------------------------------------
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-The Coordinator /data/coordinator/gpseg-1/pg_hba.conf post gpinitsystem
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-has been configured to allow all hosts within this new
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-new array must be explicitly added to this file
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-located in the /usr/local/greenplum-db-7.7.0/docs directory
20251212:20:48:41:002425 gpinitsystem:gp-coordinator:gpadmin-[INFO]:-------------------------------------------------------

"Successfully started 6 of 6 segment instances" と出力されたのでセットアップが成功しました。

.barshrcに次の環境変数を追加します。

cat <<EOF | tee -a /home/gpadmin/.bashrc > /dev/null
export COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpadmin
export LD_PRELOAD=/lib64/libz.so.1 ps
EOF

source /home/gpadmin/.bashrc

構成の確認

# 環境変数の読み込み(まだの場合)
source /usr/local/greenplum-db/greenplum_path.sh

# クラスタ状態確認
gpstate -s

# セグメント詳細確認
gpstate -e

# ミラー状態確認
gpstate -m

セグメント詳細確認は次のように表示されます:

$ gpstate -e
20251212:20:50:27:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-Starting gpstate with args: -e
20251212:20:50:27:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4'
20251212:20:50:27:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-Coordinator Greenplum Version: 'PostgreSQL 12.22 (Greenplum Database 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-11), 64-bit compiled on Dec  7 2025 05:50:22 Bhuvnesh C.'
20251212:20:50:27:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-Obtaining Segment details from coordinator...
20251212:20:50:27:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-Gathering data from segments...
20251212:20:50:28:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-----------------------------------------------------
20251212:20:50:28:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-Segment Mirroring Status Report
20251212:20:50:28:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-----------------------------------------------------
20251212:20:50:28:011663 gpstate:gp-coordinator:gpadmin-[INFO]:-All segments are running normally

ミラー状態確認は次のように表示されます:

$ gpstate -m
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-Starting gpstate with args: -m
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4'
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-Coordinator Greenplum Version: 'PostgreSQL 12.22 (Greenplum Database 7.7.0 build commit:e7e9f681dc799e69563184bd154b910b54eb18f4) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-11), 64-bit compiled on Dec  7 2025 05:50:22 Bhuvnesh C.'
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-Obtaining Segment details from coordinator...
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:--------------------------------------------------------------
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:--Current GPDB mirror list and status
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:--Type = Group
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:--------------------------------------------------------------
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   Mirror        Datadir               Port   Status    Data Status    
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment2   /data/mirror/gpseg0   7000   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment2   /data/mirror/gpseg1   7001   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment3   /data/mirror/gpseg2   7000   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment3   /data/mirror/gpseg3   7001   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment1   /data/mirror/gpseg4   7000   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:-   gp-segment1   /data/mirror/gpseg5   7001   Passive   Synchronized
20251212:20:50:43:011700 gpstate:gp-coordinator:gpadmin-[INFO]:--------------------------------------------------------------

psqlでも構成を確認します。

psql -d postgres -c "SELECT content, role, preferred_role, hostname, port, datadir, status FROM gp_segment_configuration ORDER BY content, role;"

以下の構成になっていることを確認します:

 content | role | preferred_role |    hostname    | port |          datadir          | status 
---------+------+----------------+----------------+------+---------------------------+--------
      -1 | p    | p              | gp-coordinator | 5432 | /data/coordinator/gpseg-1 | u
       0 | m    | m              | gp-segment2    | 7000 | /data/mirror/gpseg0       | u
       0 | p    | p              | gp-segment1    | 6000 | /data/primary/gpseg0      | u
       1 | m    | m              | gp-segment2    | 7001 | /data/mirror/gpseg1       | u
       1 | p    | p              | gp-segment1    | 6001 | /data/primary/gpseg1      | u
       2 | m    | m              | gp-segment3    | 7000 | /data/mirror/gpseg2       | u
       2 | p    | p              | gp-segment2    | 6000 | /data/primary/gpseg2      | u
       3 | m    | m              | gp-segment3    | 7001 | /data/mirror/gpseg3       | u
       3 | p    | p              | gp-segment2    | 6001 | /data/primary/gpseg3      | u
       4 | m    | m              | gp-segment1    | 7000 | /data/mirror/gpseg4       | u
       4 | p    | p              | gp-segment3    | 6000 | /data/primary/gpseg4      | u
       5 | m    | m              | gp-segment1    | 7001 | /data/mirror/gpseg5       | u
       5 | p    | p              | gp-segment3    | 6001 | /data/primary/gpseg5      | u
(13 rows)

構成のポイント:

  • 合計6つのプライマリセグメント(content 0-5)
  • 各プライマリに対応するミラーが別ホストに配置
  • 各サーバーに2プライマリ + 2ミラー = 計4インスタンス

動作確認

テストデータベースを作成します。

createdb test

テーブルを作成し、動作確認します。

psql -d test -c "CREATE TABLE test_table (id int, name text) DISTRIBUTED BY (id);"
psql -d test -c "INSERT INTO test_table SELECT generate_series(1,1000), 'test_data';"
psql -d test -c "SELECT gp_segment_id, count(*) FROM test_table GROUP BY gp_segment_id ORDER BY gp_segment_id;"

次のように6つのセグメント(0-5)にデータが分散されていることを確認してください。

 gp_segment_id | count 
---------------+-------
             0 |   172
             1 |   163
             2 |   182
             3 |   164
             4 |   168
             5 |   151
(6 rows)

トラブルシューティング

初期化に失敗した場合

# クリーンアップ
gpdeletesystem -d /data/coordinator/gpsne-1 -f

# ディレクトリを削除して再作成
gpssh -f hostfile_gpssh_segonly -e 'sudo rm -rf /data/primary/*'
gpssh -f hostfile_gpssh_segonly -e 'sudo rm -rf /data/mirror/*'
sudo rm -rf /data/coordinator/*

# 手順5から再実行

ミラーが同期しない場合

# 再同期実行
gprecoverseg

# それでも同期しない場合はフル再同期
gprecoverseg -F

sedの置換が正しくできているか確認

# バックアップファイルとの差分確認
diff gpconfigs/gpinitsystem_config.bak gpconfigs/gpinitsystem_config

以上でセットアップ完了です。