Backing 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 を設定するプロセスはプラットフォーム固有です。
Linuxで
Linuxを使用している場合、アーカイブされたSSL Utilsファイルのバージョンを次からダウンロードできます。
ダウンロードが完了したら、 sslutils フォルダーを抽出し、アップグレード先のPostgresバージョンのPostgresインストールディレクトリに移動します。
コマンドラインを開き、スーパーユーザー権限を引き継ぎ、PATH環境変数の値を設定して、makeがpg_configプログラムを見つけられるようにします。
export PATH=$PATH:/opt/<Postgres>/<x.x>/bin/
どこで:
Postgres specifies either of the folllowing:
PostgreSQLサーバーにアップグレードする場合は
PostgreSQL。Advanced Serverサーバーにアップグレードする場合は
PostgresPlus。x.xは、移行先のPostgresのバージョンを指定します。
次に、 yum を使用して sslutil の依存関係をインストールします。
yum install openssl-devel
sslutils フォルダーに移動し、次を入力して sslutils パッケージをビルドします。
make USE_PGXS=1
make USE_PGXS=1 install
Windowsで
sslutils は、元のバッキングデータベースで sslutils をコンパイルするために使用したのと同じコンパイラーを使用して、新しいバッキングデータベースでコンパイルする必要があります。 PostgreSQLワンクリックインストーラー(EnterpriseDBから)またはAdvanced Serverインストーラーを使用してインストールされたPostgresデータベースに移動する場合は、Visual Studioを使用して sslutils をビルドします。 PostgreSQL 9.3以降にアップグレードする場合は、Visual Studio 2010を使用してください。
Windowsで特定のバージョンのPostgresをビルドする方法の詳細については、そのバージョンのコアドキュメントを参照してください。コアドキュメントは、PostgreSQLプロジェクトのWebサイトで入手できます。
または次のEnterpriseDB Webサイトで:
プロセスの具体的な詳細はプラットフォームとコンパイラーによって異なりますが、各プラットフォームの基本的な手順は同じです。次の例は、32ビットWindowsシステムでのPostgreSQLのOpenSSLサポートのコンパイルを示しています。
OpenSSL拡張機能をコンパイルする前に、ご使用のWindowsバージョンのOpenSSLを見つけてインストールする必要があります。 OpenSSLインストーラーを呼び出す前に、前提条件の再配布可能ファイル( vcredist_x86.exe など)をダウンロードしてインストールする必要がある場合があります。
OpenSSLをインストールした後、次から入手できる 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.sqlsslutils--unpackaged--1.1.sqlsslutils--pemagent.sql.insslutils.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 ダイアログを開くには、 Control Panel から System and Security メニューに移動します。 Administrative Tools を選択し、 Services アイコンをダブルクリックします。 Services ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログに表示されるオプションを使用してサービスを停止します。
ステップ4-pg_upgradeを使用してサーバーを更新
pg_upgrade ユーティリティを使用して、古いバッキングデータベースと新しいバッキングデータベース間で既存のデータのインプレース転送を実行できます。サーバーが md5 認証を実施するように設定されている場合、データベーススーパーユーザーの接続プロパティ(およびパスワード)を指定する .pgpass ファイルにエントリを追加するか、 pg_hba.conf pg_upgrade を呼び出す前に信頼接続を許可するファイル。 .pgpass ファイルにエントリを作成する方法の詳細については、次の場所にあるPostgreSQLコアドキュメントを参照してください。
アップグレードプロセス中に、pg_upgradeは一連のログファイルを書き込みます。クラスターの所有者は、書き込み権限があるディレクトリから pg_upgrade を呼び出す必要があります。アップグレードが正常に完了すると、 pg_upgrade はアップグレードの完了時にログファイルを削除します。アップグレードログファイルを削除しないように pg_upgrade を指示するには、 pg_upgrade を呼び出すときに --retain キーワードを含めます。
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はpg_upgradeユーティリティの場所を指定します。デフォルトでは、pg_upgradeはPostgresディレクトリの下のbinディレクトリにインストールされます。
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.crtca_key.keyroot.crtroot.crlserver.keyserver.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 を選択します。
The Security tab.¶
Security タブに移動し、 Group or user name を強調表示して、割り当てられた権限を表示します。 Edit または Advanced を選択して、選択したユーザーに関連付けられた権限を変更できるダイアログにアクセスします。
ステップ6-新しいサーバー構成ファイルの更新
postgresql.conf ファイルには、サーバーの動作を指定するパラメーター設定が含まれています。古いサーバーの postgresql.conf ファイルで指定された構成と一致するように、新しいサーバーの postgresql.conf ファイルを変更する必要があります。
デフォルトでは、 postgresql.conf ファイルがあります:
Linuxで10未満のPostgresバージョンの場合、
/opt/PostgreSQL/<version.x>/dataLinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/opt/PostgreSQL/<version>/dataLinuxにRPMをインストールしたPostgresバージョン10以降の場合、
/usr/edb/PostgreSQL/<version>/dataWindows上のPostgresバージョンの場合、
C:/Program Files/PostgreSQL/<version.x>/data
ここで、 version はシステム上のPostgresのメジャーバージョンです。
選択したエディターを使用して、新しいサーバーの postgresql.conf ファイルを更新します。以下のパラメーターを変更します。
元のバッキングデータベースによって監視されるポートでリッスンする
portパラメーター(通常は5432)。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/dataLinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/Opt/PostgreSQL/<version>/dataLinuxにRPMをインストールしたPostgresバージョン10以降の場合、
/var/lib/PostgreSQL/<version>/dataLinux上にRPMをインストールしたAdvanced Serverバージョン10以上の場合、
/var/lib/edb/AS<version>/dataWindows上の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 ダイアログを開くには、 Control Panel から System and Security メニューに移動します。 Administrative Tools を選択し、 Services アイコンをダブルクリックします。 Services ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログで提供されるオプションを使用してサービスを開始します。