バッキングPostgresデータベースのアップグレード¶
PEMコンポーネントとPEMバッキングデータベースの両方を更新する場合は、バッキングデータベースを更新する前にPEMコンポーネントの更新(サーバー、エージェント、およびクライアント)を実行する必要があります。 PEMコンポーネントソフトウェアの更新の詳細については、「 PEMインストールのアップグレード 」を参照してください。
このセクションで説明する更新プロセスでは、 pg_upgradeユーティリティを使用して、バッキングサーバーのあるバージョンからより新しいバージョンに移行します。 pg_upgradeは、Postgresの任意のバージョン(バージョン9.3以降)と、同じプラットフォームでサポートされるPostgresの後続のリリース間の移行を容易にします。
pg_upgradeは、同じタイプのサーバー間のデータ転送をサポートします。たとえば、 pg_upgradeを使用して、PostgreSQL 9.6バッキングデータベースからPostgreSQL 10バッキングデータベースにデータを移動できますが、Advanced Server 10バッキングデータベースには移動できません。別の種類のバッキングデータベースに移行する場合(PostgreSQLサーバーからAdvanced Serverへ)、 Postgres Enterprise Manager™サーバーの移動を参照してください。
pg_upgradeの使用に関する詳細については、次を参照してください。
手順1-更新されたバッキングデータベースインストーラーのダウンロードと起動
PostgreSQLおよびAdvanced Serverのインストーラーは、EnterpriseDB Webサイトから入手できます。
アップグレードするサーバーバージョンのインストーラーをダウンロードした後、PEMサーバーのホストでインストーラーを起動します。インストールウィザードの画面上の指示に従って、Postgresサーバーを構成およびインストールします。
オプションで、カスタム構築のPostgreSQLサーバーをPEMバッキングデータベースのホストとして使用できます。ポート5432でリッスンするPostgreSQLバッキングデータベースからアップグレードする場合、新しいサーバーは別のポートでリッスンするように構成する必要があることに注意してください。
手順2-新しいサーバーでSSLユーティリティを構成する
新しいバッキングデータベースは、現在のバッキングデータベースが実行しているのと同じバージョンのsslutilsを実行している必要があります。 EnterpriseDBインストーラーで使用されるSSL Utilsパッケージは、次の場所からダウンロードできます。
Advanced Serverを新しいバッキングデータベースとして使用する場合、 sslutils拡張機能を手動で追加する必要はありません 。 sslutilsの構成sslutilsはプラットフォーム固有です。
Linuxの場合
Linuxを使用している場合、アーカイブされたSSL Utilsファイルのバージョンを次からダウンロードできます。
ダウンロードが完了したら、 sslutilsフォルダーを抽出し、アップグレード先のPostgresバージョンのPostgresインストールディレクトリに移動します。
コマンドラインを開き、スーパーユーザー権限を引き継ぎ、PATH環境変数の値を設定して、makeがpg_configプログラムを見つけられるようにします。
export PATH=$PATH:/opt/<Postgres>/<xx>/bin/
どこで:
Postgresは、次のいずれかを指定します。
-
PostgreSQLサーバーにアップグレードする場合はPostgreSQL。 - Advanced Serverサーバーにアップグレードする場合は、
PostgresPlus。 -
xxは、移行先のPostgresのバージョンを指定します。
次に、 yumを使用してsslutil依存関係をインストールしsslutil 。
yum install openssl-devel
sslutilsフォルダーに移動し、次を入力してsslutilsパッケージをビルドします。
make USE_PGXS=1
make USE_PGXS=1 install
Windows
sslutilsは、元のバッキングデータベースでsslutilsをコンパイルするために使用されたのと同じコンパイラを使用して、新しいバッキングデータベースでコンパイルするsslutilsがあります。 PostgreSQLワンクリックインストーラー(EnterpriseDBから)またはAdvanced Serverインストーラーを使用してインストールされたPostgresデータベースに移動する場合は、Visual Studioを使用してsslutilsをビルドしsslutils 。 PostgreSQL 9.3以降にアップグレードする場合は、Visual Studio 2010を使用してください。
WindowsでPostgresの特定のバージョンをビルドする方法の詳細については、そのバージョンのコアドキュメントを参照してください。コアドキュメントは、PostgreSQLプロジェクトのWebサイトで入手できます。
または次のEnterpriseDB Webサイトで:
プロセスの具体的な詳細はプラットフォームとコンパイラーによって異なりますが、各プラットフォームの基本的な手順は同じです。次の例は、32ビットWindowsシステムでのPostgreSQLのOpenSSLサポートのコンパイルを示しています。
OpenSSL拡張機能をコンパイルする前に、ご使用のWindowsバージョンのOpenSSLを見つけてインストールする必要があります。 OpenSSLインストーラーを呼び出す前に、前提条件の再配布可能vcredist_x86.exe ( vcredist_x86.exeなど)をダウンロードしてインストールする必要がある場合があります。
OpenSSLのインストール後、 sslutils入手できるsslutilsユーティリティパッケージをダウンロードして解凍します。
解凍したsslutilsフォルダーをPostgresインストールディレクトリ(つまりC:\ProgramFiles\PostgreSQL\9.\<x> )にコピーします
Visual Studioコマンドラインを開き、 sslutilsディレクトリに移動します。 sslutilsをビルドするには、次のコマンドを使用します。
SET USE_PGXS=1
SET GETTEXTPATH=\ <path_to_gettext>
SET OPENSSLPATH=\ <path_to_openssl>
SET PGPATH=\ <path_to_pg_installation_dir>
SET ARCH=x86
msbuild sslutils.proj /p:Configuration=Release
どこで:
path_to_gettextは、GETTEXTライブラリとヘッダーファイルの場所を指定します。
path_to_opensslは、opensslライブラリとヘッダーファイルの場所を指定します。
path_to_pg_installation_dirは、Postgresインストールの場所を指定します。
たとえば、次のコマンドセットは、OpenSSLサポートをPostgreSQL 10サーバーに組み込みます。
SET USE_PGXS=1
SET OPENSSLPATH=C:\OpenSSL-Win32
SET GETTEXTPATH="C:\Program Files\PostgreSQL\10"
SET PGPATH="C:\Program Files\PostgreSQL\10"
SET ARCH=x86
msbuild sslutils.proj /p:Configuration=Release
ビルドが完了すると、 sslutilsディレクトリに次のファイルが含まれます。
-
sslutils--1.1.sql -
sslutils--unpackaged--1.1.sql -
sslutils--pemagent.sql.in -
sslutils.dll
コンパイル済みのsslutilsファイルをインストールに適したディレクトリにコピーします。例えば:
COPY sslutils*.sql "%PGPATH%\share\extension\"
COPY sslutils.dll "%PGPATH%\lib\"
ステップ3-サービスの停止
古いバッキングデータベースと新しいバッキングデータベースの両方のサービスを停止します。
-RHELまたはCentOS 6.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
/etc/init.d/<service_name> stop
-RHELまたはCentOS 7.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
systemctl/<service_name> stop
service_nameは、Postgresサービスの名前を指定します。
Windowsでは、[ Services ]ダイアログを使用してServicesを制御できます。 [ Services ]ダイアログを開くには、[ Control Panelから[ System and Security ]メニューに移動します。 [ Administrative Tools ]を選択し、[ Services ]アイコンをダブルクリックします。 [ Services ]ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログに表示されるオプションを使用してサービスを停止します。
ステップ4-pg_upgradeを使用してサーバーを更新する
pg_upgradeユーティリティを使用して、古いバッキングデータベースと新しいバッキングデータベース間で既存のデータのインプレース転送を実行できます。サーバーがmd5認証を強制するように構成されている場合、データベースのスーパーユーザーの接続プロパティ(およびパスワード)を指定するエントリを.pgpassファイルに追加するか、 pg_hba.confファイルを変更して信頼接続を許可してからpg_upgradeを呼び出すpg_upgrade 。 .pgpassファイルにエントリを作成する方法の詳細については、 .pgpassから入手可能なPostgreSQLコアドキュメントを参照してください。
アップグレードプロセス中に、pg_upgradeは一連のログファイルを書き込みます。クラスタ所有者は、書き込み権限があるディレクトリからpg_upgradeを呼び出す必要があります。アップグレードが正常に完了した場合、 pg_upgradeはアップグレードの完了時にログファイルを削除します。アップグレードログファイルを削除しないようにpg_upgradeに指示するには、 --retainを呼び出すときに--retainキーワードをpg_upgradeます。
pg_upgradeを呼び出すには、クラスター所有者のIDを想定し、クラスター所有者が書き込み権限を持つディレクトリに移動して、コマンドを実行します。
<path_to_pg_upgrade> pg_upgrade
-d <old_data_dir_path>
-D <new_data_dir_path>
-b <old_bin_dir_path> -B <new_bin_dir_path>
-p <old_port> -P <new_port>
-u <user_name>
どこで:
path_to_pg_upgrade* specifies the location of the pg_upgrade utility. By default, pg_upgrade is installed in the ``binあなたのPostgresのディレクトリの下にディレクトリ。
old_data_dir_pathは、古いバッキングデータベースのデータディレクトリへの完全なパスを指定します。
new_data_dir_pathは、新しいバッキングデータベースのデータディレクトリへの完全なパスを指定します。
old_bin_dir_pathは、古いバッキングデータベースのbinディレクトリへの完全なパスを指定します。
new_bin_dir_pathは、古いバッキングデータベースのbinディレクトリへの完全なパスを指定します。
old_portは、古いサーバーがリッスンしているポートを指定します。
new_portは、新しいサーバーがリッスンするポートを指定します。
user_nameは、クラスター所有者の名前を指定します。
たとえば、次のコマンド:
C:\>"C:\Program Files\PostgreSQL\10\bin\pg_upgrade.exe"
-d "C:\Program Files\PostgreSQL\9.6\data"
-D "C:\Program Files\PostgreSQL\10\data"
-b "C:\Program Files\PostgreSQL\9.6\bin"
-B "C:\Program Files\PostgreSQL\10\bin"
-p 5432 -P 5433
-u postgres
WindowsシステムでPEMデータベースをPostgreSQL 9.6からPostgreSQL 10に移行するようにpg_upgradeに指示します(バッキングデータベースがデフォルトの場所にインストールされている場合)。
pg_upgradeは、呼び出されると、データを新しいバッキングデータベースに移動する前に一貫性チェックを実行します。アップグレードが完了すると、 pg_upgradeはアップグレードが完了したことを通知します。
pg_upgradeオプションの使用またはアップグレードプロセスのトラブルシューティングの詳細については、以下を参照してください。
手順5-古いデータベースから新しいデータベースに証明書ファイルをコピーする
次の証明書ファイルをコピーしdataに古いバッキングデータベースのディレクトリdata 、新しいバッキングデータベースのディレクトリ:
-
ca_certificate.crt -
ca_key.key -
root.crt -
root.crl -
server.key -
server.crt
ターゲットサーバーに配置したら、ファイルには以下で説明する(プラットフォーム固有の)権限が必要です。
Linuxでの権限と所有権
| ファイル名 | オーナー | 許可 |
| ca_certificate.crt | ポストグレス | -rw ——- |
| ca_key.key | ポストグレス | -rw ——- |
| root.crt | ポストグレス | -rw ——- |
| root.crl | ポストグレス | -rw ——- |
| server.key | ポストグレス | -rw ——- |
| server.crt | ポストグレス | -rw-r–r– |
Linuxでは、証明書ファイルはpostgresが所有している必要があります。コマンドラインで次のコマンドを使用して、ファイルの所有権を変更できます。
chown postgres <file_name>
file_nameは、証明書ファイルの名前を指定します。
server.crtファイルは、ファイルの所有者のみが変更できますが、すべてのユーザーが読み取ることができます。次のコマンドを使用して、 server.crtファイルのファイル許可を設定できます。
chmod 644 server.crt
他の証明書ファイルは、ファイルの所有者のみが変更または読み取ることができます。次のコマンドを使用して、ファイルのアクセス許可を設定できます。
chmod 600 <file_name>
file_nameは、ファイルの名前を指定します。
Windowsでの権限と所有権
Windowsでは、ソースホストから移動した証明書ファイルは、ターゲットホストでPEMサーバーとバッキングデータベースのインストールを実行したサービスアカウントが所有している必要があります。 [ Run as Administrator ]オプション(インストーラーのコンテキストメニューから選択)を使用してPEMサーバーとPostgresインストーラーを呼び出した場合、証明書ファイルの所有者はAdministratorsます。
Windowsでファイルのアクセス許可を確認および変更するには、ファイル名を右クリックし、[ Properties ]を選択しProperties 。
- ..Figure :: images / upgrade_backingDB_permission_Windows_security.png
alt: [セキュリティ]タブ 整列: センター [セキュリティ]タブ。
[ Security ]タブに移動し、 Group or user nameを強調表示して、割り当てられたアクセス許可を表示します。 [ Editまたは[ Advancedを選択して、選択したユーザーに関連付けられている権限を変更できるダイアログにアクセスします。
手順6-新しいサーバー構成ファイルの更新
postgresql.confファイルには、サーバーの動作を指定するパラメーター設定が含まれています。古いサーバーのpostgresql.confファイルで指定された構成と一致するように、新しいサーバーのpostgresql.confファイルを変更する必要があります。
デフォルトでは、 postgresql.confファイルは次の場所にあります。
- LinuxのPostgresバージョンが10未満の場合、
/opt/PostgreSQL/<version.x>/data - LinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/opt/PostgreSQL/<version>/data - LinuxでRPMとともにインストールされたPostgresバージョン10以降の場合、
/usr/edb/PostgreSQL/<version>/data - WindowsのすべてのPostgresバージョンの場合、
C:\Program Files\PostgreSQL\<version.x>\data
versionは、システム上のPostgresのメジャーバージョンです。
選択したエディターを使用して、新しいサーバーのpostgresql.confファイルを更新します。以下のパラメーターを変更します。
- 元のバッキングデータベース(通常は
5432)によって監視されるポートでリッスンするportパラメーター -
sslパラメータはonに設定する必要があります。
また、次のパラメーターが有効になっていることを確認する必要があります。パラメーターがコメント化されている場合、各postgresql.confファイルエントリの前からポンド記号を削除します。
-
ssl_cert_file = 'server.crt' # (change requires restart) -
ssl_key_file = 'server.key' # (change requires restart) -
ssl_ca_file = 'root.crt' # (change requires restart) -
ssl_crl_file = 'root.crl'
インストールには、新しいバッキングデータベースが古いバッキングデータベースと同等の方法で動作することを保証するために変更が必要な他のパラメータ設定がある場合があります。 postgresql.confファイルを注意深く確認して、新しいサーバーの構成が古いサーバーの構成と一致することを確認します。
手順7-新しいサーバー認証ファイルの更新
pg_hba.confファイルには、サーバーがホストベースの認証を強制する方法を指定するパラメーター設定が含まれています。 PEMサーバーをインストールすると、インストーラーはpg_hba.confファイルを変更し、ファイルの先頭にエントリを追加します。
# Adding entries for PEM agents and admins to connect to PEM server
hostssl pem +pem_user 192.168.2.0/24 md5
hostssl pem +pem_agent 192.168.2.0/24 cert
# Adding entries (localhost) for PEM agents and admins to connect to PEM server
hostssl pem +pem_user 127.0.0.1/32 md5
hostssl postgres +pem_user 127.0.0.1/32 md5
hostssl pem +pem_user 127.0.0.1/32 md5
hostssl pem +pem_agent 127.0.0.1/32 cert
デフォルトでは、 pg_hba.confファイルは次の場所にあります。
- Linuxの10より前のPostgresバージョンの場合、
/opt/PostgreSQL/<version>.x/data - LinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/Opt/PostgreSQL/<version>/data - LinuxのRPMとともにインストールされたPostgresバージョン10以降の場合、
/var/lib/PostgreSQL/<version>/data - Linux上でRPMとともにインストールされたAdvanced Serverバージョン10以降の場合、
/var/lib/edb/AS<version>/data - WindowsのPostgresバージョンの場合、
C:\Program Files\PostgreSQL\version.x\data
ここで、 versionはシステム上のPostgresのメジャーバージョンであり、 xはマイナーバージョンです。
選択したエディターを使用して、古いサーバーのpg_hba.confファイルから新しいサーバーのpg_hba.confファイルにエントリをコピーします。
ステップ8-新しいPostgresサーバーを再起動します
新しいバッキングデータベースのサービスを開始します。
-RHELまたはCentOS 6.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
/etc/init.d/<service_name> start
-RHELまたはCentOS 7.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
systemctl stop <service_name>
service_nameは、バッキングデータベースサーバーの名前です。
Windowsを使用している場合は、[ Services ]ダイアログを使用してServicesを制御できます。 [ Services ]ダイアログを開くには、[ Control Panelから[ System and Security ]メニューに移動します。 [ Administrative Tools ]を選択し、[ Services ]アイコンをダブルクリックします。 [ Services ]ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログに表示されるオプションを使用してサービスを開始します。