PostgreSQLストリームレプリケーションクラスタデータベースのアップグレード事例
3667 ワード
一、背景紹介
ユーザーが使用するのは2ノードのPostgreSQL HotStandbyクラスタで、バージョンはv 9です.1.6ユーザの要求によりv 9にアップグレードする.3.3.
ホスト:192.168.100.157
スペア:192.168.100.158
(1)お客様の現在の総データ量は29 Gで、現在のPgバージョンは9.1.6である.大きなバージョンにまたがるアップグレードのため、小さなバージョンのアップグレードに適した直接上書きインストールは使用できません.
(2)アップグレード時のダウンタイム処理が許可され、データ量が特に大きくないことを考慮して、今回pg_upgrade方式でアップグレードします.
(3)現在のデータベースにユーザ定義パスが存在しない表領域
二、アップグレード手順1プライマリ・スペアに新しいデータベース(インストールパスの指定に注意) をインストールします.2プライマリ・スペアに新規データベース・データ・ディレクトリとアーカイブ・ディレクトリ をそれぞれ作成する. 3インストール拡張pg_upgrade/pg_upgrade_support(ホストのみ) 4新規データベースの初期化(ホストのみ) 5アプリケーションの停止 プライマリ・データベース を閉じる7マスター・ライブラリ・データのコピー(ホストのみ) 8アーカイブログをコピー(ホストのみ) 9アップグレードテスト を実行 10アップグレード を実行 11メイン・スペア環境変数(メイン・スペアが変更) を変更 12新しいマスターライブラリ を構成する.
(HotStandbyを満たすように構成し、旧バージョンの構成に従って構成する)3新しいマスターライブラリを起動し、 を確認します.
起動後、データベースのバージョンが正しいかどうかを確認し、データが古いライブラリと一致しているかどうかを確認します. 14 analyzeスクリプト を実行
(つまり各ライブラリに対してvacuumを実行する) 15は、スタンバイ上で を同期する. 16構成スペア (旧バージョンの構成による) 17リポジトリ を起動 18試験同期状況 19アプリケーションを起動し、 をテストする旧バージョン処理 ユーザの実情に基づいてユーザが最終的に古いバージョンのデータベースと古いデータの処理を決定する
ユーザーが使用するのは2ノードのPostgreSQL HotStandbyクラスタで、バージョンはv 9です.1.6ユーザの要求によりv 9にアップグレードする.3.3.
ホスト:192.168.100.157
スペア:192.168.100.158
(1)お客様の現在の総データ量は29 Gで、現在のPgバージョンは9.1.6である.大きなバージョンにまたがるアップグレードのため、小さなバージョンのアップグレードに適した直接上書きインストールは使用できません.
(2)アップグレード時のダウンタイム処理が許可され、データ量が特に大きくないことを考慮して、今回pg_upgrade方式でアップグレードします.
(3)現在のデータベースにユーザ定義パスが存在しない表領域
二、アップグレード手順
# ./configure --prefix=/opt/pg93
# make
# make install
# mkdir -p /pgdata/data93
# mkdir -p /pgdata/archive93
# cd postgresql-9.3.3/contrib/pg_upgrade
# make
# make install
# cd postgresql-9.3.3/contrib/pg_upgrade_support
# make
# make install
$ /opt/pg93/bin/initdb -D /pgdata/data93
# cp -r /pgdata/data91 /pgdata/data91.bak
# cp -r /pgdata/archive /pgdata/archive.bak
$ /opt/pg93/bin/pg_upgrade -b /opt/pg91/bin/ -B /opt/pg93/bin/ -d /pgdata/data91 -D /pgdata/data93/ -p 5432 -P 5432 -c
Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is a superuser ok
Checking for prepared transactions ok
Checking for reg* system OID user data types ok
Checking for contrib/isn with bigint-passing mismatch ok
Checking for presence of required libraries ok
Checking database user is a superuser ok
Checking for prepared transactions ok
*Clusters are compatible*
$ /opt/pg93/bin/pg_upgrade -b /opt/pg91/bin/ -B /opt/pg93/bin/ -d /pgdata/data91 -D /pgdata/data93/ -p 5432 -P 5432
……
……
Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
analyze_new_cluster.sh
Running this script will delete the old cluster's data files:
delete_old_cluster.sh
$ vim .bash_profile
export PATH=/opt/pg93/bin:$PATH:$HOME/bin
export PGDATA=/pgdata/data93
export PGUSER=postgres
export PGPORT=5432
export LD_LIBRARY_PATH=/opt/pg93/lib:$LD_LIBRARY_PATH
(HotStandbyを満たすように構成し、旧バージョンの構成に従って構成する)
$ vim postgresql.conf
$ vim pg_hba.conf
起動後、データベースのバージョンが正しいかどうかを確認し、データが古いライブラリと一致しているかどうかを確認します.
(つまり各ライブラリに対してvacuumを実行する)
$ ./analyze_new_cluster.sh
$ pg_basebackup -h 192.168.100.157 -U postgres -p 5432 -D /pgdata/data93/ -P
64363/64363 kB (100%), 1/1 tablespace
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
$ vim postgresql.conf
$ vim pg_hba.conf
$ vim recovery.conf
standby_mode = 'on'
primary_conninfo = 'host=127.0.0.1 user=postgres port=54321'
recovery_target_timeline = 'latest'