注意:
|
Fujitsu Enterprise PostgreSQL
Fujitsu PostgreSQLには、Fujitsu PostgreSQLが提供する共有ライブラリで動作するように設計された、カスタマイズされたODBCドライバが含まれています。適切な設定を確保するためには、実行時に正しいライブラリが見つかるようにシンボリックリンクを作成する必要があります。
問題の説明:
シンボリックリンクを作成する前にpg_setupプログラムを実行しようとすると、以下のエラーメッセージが表示されてpg_setupは失敗します。
Error: [unixODBC]invalid connection option "target_server"
シンボリックリンクを作成するには:
適切なライブラリがロードされるように、まずFujitsu PostgreSQLライブラリがインストールされているディレクトリのパスを確認します(例: /opt/fsepv95server64/lib)。次に、Fujitsu PostgreSQLライブラリディレクトリのlibpq.so.5ライブラリを指すSharePlex OPTDIR/lib/hooksディレクトリにシンボリックリンクを作成します。例:
cd /opt/splex/lib/hooks
ln –s /opt/fsepv95server64/lib/libpq.so.5
PostgreSQL用のPG Setupユーティリティ(pg_setup)を実行して、SharePlexで使用するユーザアカウント、スキーマ、テーブルを確立します。
DSN (データソース名)を指定します。
Linuxでの接続タイプ | 操作 |
---|---|
DSN |
DSNが定義されており、それをSharePlex接続に使用する場合は、そのDSNが定義されているODBCファイル(odbc.iniとodbcinst.ini)をSharePlex変数データディレクトリのodbcサブディレクトリにコピーまたはリンクします。これにより、SharePlexプロセスがデータベースに接続する際の接続エラーを防ぐことができます。 DSNが定義されていないときにこれを使用するには場合は、odbcサブディレクトリにあるテンプレートファイルで作成することができます。 |
サンプルのodbc.iniおよびodbcinst.iniファイルについては、以下の例を参照してください。
セットアップが確実に成功するように、以下の要件を確認してください。
(Symfowareのみ)セットアップユーティリティを実行するユーザがFujitsu Enterprise PostgreSQLのオーナーでない場合、Fujitsu Enterprise PostgreSQLのインストールディレクトリのlibサブディレクトリへのパスを環境変数LD_LIBRARY_PATHに設定します。LD_LIBRARY_PATHはFujitsu Enterprise PostgreSQLオーナーの.bash_profileファイルで設定します。
例:
export LD_LIBRARY_PATH= /opt/symfoserver64/lib:$LD_LIBRARY_PATH
このパスを設定しないと、以下のエラーが発生します。
symbol lookup error: /opt/fsepv95client64/odbc/lib/psqlodbca.so: undefined symbol: PQconnectdbParams
以下の例に示すように、ターゲットスキーマおよびテーブルの使用/権限をSharePlexユーザに付与しなければならないことがあります。
スキーマ所有者としてログインし、以下のコマンドを実行します。
grant usage on schema schema_name to user_name;(スキーマschema_nameの使用をuser_nameに付与)
grant all privileges on all tables in schema schema_name to user_name;(スキーマschema_nameですべてのテーブルのすべての権限をuser_nameに付与)
Google Cloudデータベースの場合、レプリケーションでテーブルの所有者を変更したい場合は、以下の権限を付与してください:
alter user splex_user createdb createrole login;
create role role_name;
grant role_name to splex_user;
以下の手順に従って、PostgreSQL用のPG Setupを実行してください:
SharePlex製品ディレクトリのbinサブディレクトリからpg_setupプログラムを実行します。
重要! SharePlexインスタンスをデフォルトの2100以外のポートにインストールした場合は、-pオプションを使用してポート番号を指定します。例えば、以下のコマンドではポート番号は9400です。
$ /users/splex/bin> pg_setup -p9400
表14: セットアップのプロンプトと対応
プロンプト | 対応 |
---|---|
(Linux) Enter the PostgreSQL DSN name: |
DSNを入力します。 |
Is DB hosted over "Azure Single Server"? |
「Azure単一サーバ」以外のプラットフォームでホストされているデータベースでは「n」と入力します。 注意: セットアップを開始する前に、Adminユーザが以下のロールを持っていることを確認します。 オンプレミスDB: superuser AWSでホストされるDB: rds_superuser AzureでホストされるDB: azure_pg_admin |
Enter the PostgreSQL Administrator name : |
PostgreSQL管理者の名前を入力します。このユーザはSharePlexアカウントで作業を行います。 |
Enter the password for the Administrator account : |
管理者のパスワードを入力します。 |
Enter the database name: |
SharePlexで使用するSharePlexテーブルやその他のオブジェクトを格納するデータベースの名前を入力します新規または既存のデータベース名を入力できます。 |
Database name database does not exist. Would you like to create it? [y] : |
このプロンプトが表示される場合、指定されたデータベースは存在しません。Enterキーを押し、セットアップユーティリティで作成します。 |
Would you like to create a new SharePlex user [y]: |
Enterキーを押してデフォルトを受け入れ、指定したデータベースに新しいSharePlexデータベース・ユーザ・アカウントを作成するか、「n」と入力して既存のSharePlexアカウントを使用します。 |
Enter the name of the new SharePlex user: Enter the name of the existing SharePlex user: |
新規ユーザを作成するか、既存のユーザを使用するかによって、これらのプロンプトのいずれかが表示されます。SharePlexユーザの名前を入力します。 注意: ユーザ名は小文字のみで入力してください。 |
Enter the password of the SharePlex user : |
SharePlexユーザアカウントのパスワードを入力します。 |
Re-enter the password for the SharePlex user : |
このプロンプトは、新規ユーザを作成した場合にのみ表示されます。SharePlexのパスワードを再度入力します。 |
Will this database be used as a source? [n] : |
ソースのDB接続を使用する場合は「Y」と入力します。以下のプロンプトは、ソースのDB接続にのみ表示されます。 ターゲットのDB接続を使用する場合は「N」と入力します。 |
Enter the replication slot name? [test_slot] : |
レプリケーションスロット名を入力します。 注意: 設定のアクティベーションに成功すると、レプリケーションスロットtest_slotがデータベースに作成されます。 |
Enter the default tablespace for use by SharePlex [pg_default] : | SharePlexのデフォルトのテーブルスペースを入力します |
Enter the index tablespace for use by SharePlex [pg_default] : | SharePlexのインデックステーブルスペースを入力します |
Do you want Logical replication? [n] : |
このプロンプトは、オンプレミスでホストされているPostgreSQLデータベースに対してのみ表示されます。 論理レプリケーションを実行するには「y」を入力します。 物理レプリケーションを実行するには「n」を入力します。 セットアップによりSharePlexオブジェクトがインストールされます。 |
正常にセットアップされると、次のようなメッセージで終了します:
Completed SharePlex for PostgreSQL database configuration
SharePlex User name: splexab
Database name: testdb
-- The datasource identifier in the SharePlex configuration is 'r.testdb' --
重要! ソース設定にのみ適用されます: SharePlexは、設定がアクティブでないときにWALログを保持します。SharePlex 11.0では、pg_setupを実行するとレプリケーションスロットが作成されます。SharePlex 11.1以降では、設定のアクティベーション時にスロットが作成されます。このレプリケーションスロットは、Captureが受信して処理したWALレコードの最新のLSN値を保持します。また、このスロットに格納されたLSNを起点として、すべてのWALファイルが削除されたりアーカイブされたりしないように保持します。 SharePlex 11.1以降では、設定を非アクティブにすると、レプリケーションスロットが削除されます。 設定ファイルを非アクティベーションせずにSharePlexを停止した場合は、pg_cleanspユーティリティを実行してスロットを削除します。このユーティリティは、バージョン11.0のインストールからconnection.yamlに存在するスロット名も削除します。 pg_cleanspの実行を希望しない場合は、以下の手順を実行する必要があります。
|
データベース名にハイフン、ドット、またはプラス(-、.、+)の特殊文字が含まれている場合は、これらの文字を削除します。識別子に_<count>の値を追加します。ここでcountは、connection.yamlファイルに存在するデータソースの識別子に依存します。
例:
データベース名aaa.dbでは、データソース識別子はr.aaadb_1となります。
データベース名aaa+dbでは、データソース識別子はr.aaadb_2となります。これは、r.aaadb_1がaaa.dbデータベースを既に指しているからです。
データベースに特殊文字が含まれていないにもかかわらず、そのエントリがconnection.yamlファイルに存在する場合は、識別子に_<count>を追加します。
例:
データベース名がaaadb_1で、そのエントリがconnection.yamlファイルに存在し、データベース名が異なる場合は、識別子はr.aaadb_1_1になります。
データベース名にハイフン、ドット、またはプラス文字が含まれていない場合、データベース名はデータソース識別子と同じになります。
以下の手順を使用して、Azureプラットフォーム上でPostgreSQLデータベースをサポートするようにSharePlexを設定できます。
注意: PostgreSQL PaaS(Azure)でDML操作を一括で行うと、パフォーマンス低下の問題が発生します。
表15: セットアップのプロンプトと対応
プロンプト | 対応 |
---|---|
Enter the PostgreSQL DSN name or connection string [] : |
PostgreSQLデータベースシステムに接続するPostgreSQL DSN名または接続文字列を入力します。 例: pslazpgdb02 |
Is DB hosted over "Azure Single Server"? |
PostgreSQL DBを「Azure単一サーバ」でホストする場合のみ「Y」と入力します。 |
Enter the PostgreSQL Administrator name : |
PostgreSQL管理者の名前を入力します。このユーザは、SharePlexアカウントおよびスキーマでセットアップ作業を実行します。 例: PostgreSQL |
Enter the password for the Administrator account: |
管理者のパスワードを入力します。 |
Enter the replication target database name : |
レプリケーションを実行する必要があるターゲットデータベース名を入力します。 例: sp_mk |
Would you like to create a new SharePlex user? Enter the name of the existing SharePlex user: |
N(ユーザを作成する場合は「y」と入力)
SharePlexユーザの名前を入力します。 |
Enter the password of the SharePlex user: |
SharePlexユーザアカウントのパスワードを入力します。 |
Re-enter the password for the SharePlex user: |
このプロンプトは、新規ユーザを作成した場合にのみ表示されます。SharePlexのパスワードを再度入力します。 |
正常にセットアップされると、次のようなメッセージで終了します:
Completed SharePlex for PostgreSQL database configuration
SharePlex User name: postgres@pslazpgdb02.postgres.database.azure.com
Database name: sp_mk
The data source identifier in the SharePlex configuration is 'r.sp_mk' –
クラウドデータベースのパラメーターを変更します。
AWS : rds.logical_replication 1
Azure : wal_level LOGICAL
SharePlexvar/odbcディレクトリのODBCファイルにデータベース接続の詳細を追加します。サンプルスクリーンショットをご覧ください。
注意:
|
PostgreSQL用のPG Setupユーティリティ(pg_setup)を実行して、SharePlexで使用するユーザアカウント、スキーマ、テーブルを確立します。
PostgreSQL Database as a Serviceの場合は、それぞれのベンダーが推奨する接続処理のベストプラクティスに従ってください。
DSN(データソース名)を指定できます。Linuxでの接続方法を決める際には、以下の点に注意すること:
Linuxでの接続タイプ | 操作 |
---|---|
DSN |
DSNが定義されており、それをSharePlex接続に使用する場合は、そのDSNが定義されているODBCファイル(odbc.iniとodbcinst.ini)をSharePlex変数データディレクトリのodbcサブディレクトリにコピーまたはリンクします。これにより、SharePlexプロセスがデータベースに接続する際の接続エラーを防ぐことができます。 DSNが定義されていないときにこれを使用したい場合は、odbcサブディレクトリにあるテンプレートファイルで作成することができます。 |
セットアップが確実に成功するように、以下の要件を確認してください。
(Symfowareのみ)Fujitsu Enterprise PostgreSQLのオーナーでないユーザがセットアップユーティリティを実行する場合、Fujitsu Enterprise PostgreSQLのインストールディレクトリのlibサブディレクトリへのパスを環境変数LD_LIBRARY_PATHに設定します。LD_LIBRARY_PATHはFujitsu Enterprise PostgreSQLオーナーの.bash_profileファイルで設定します。
例:
export LD_LIBRARY_PATH= /opt/symfoserver64/lib:$LD_LIBRARY_PATH
このパスを設定しないと、以下のエラーが発生します。
symbol lookup error: /opt/fsepv95client64/odbc/lib/psqlodbca.so: undefined symbol: PQconnectdbParams
以下の例に示すように、ターゲットスキーマおよびテーブルの使用権/特権をSharePlexユーザに付与することが必要になる場合があります。
スキーマ所有者としてログインし、以下のコマンドを実行します。
grant usage on schema schema_name to user_name;
grant all privileges on all tables in schema schema_name to user_name;
Google Cloudデータベースの場合、レプリケーションでテーブルの所有者を変更したい場合は、以下の権限を付与してください:
alter user splex_user createdb createrole login;
create role role_name;
grant role_name to splex_user;
以下の手順に従って、PostgreSQL用のPG Setupを実行してください:
SharePlex製品ディレクトリのbinサブディレクトリからpg_setupプログラムを実行します。
重要! SharePlexインスタンスをデフォルトの2100以外のポートにインストールした場合は、-pオプションを使用してポート番号を指定します。例えば、以下のコマンドではポート番号は9400です。
$ /users/splex/bin> pg_setup -p9400
表16: セットアップのプロンプトと応答
プロンプト | 回答 |
---|---|
Enter the PostgreSQL DSN name: |
DSNと入力します。 |
Is DB hosted over "Azure Single Server"? |
「Azure シングルサーバー」以外のプラットフォームでホストされているデータベースには「n」を入力します。 注意: セットアップを開始する前に、管理者ユーザが以下のロールを持っていることを確認します。 オンプレミスDB: superuser AWSホストDB: rds_superuser AzureホストDB: azure_pg_admin |
Enter the PostgreSQL Administrator name : |
PostgreSQL管理者の名前を入力します。このユーザはSharePlexアカウントで作業を行います。 |
Enter the password for the Administrator account : |
管理者のパスワードを入力します。 |
Enter the database name: |
SharePlexで使用するSharePlexテーブルやその他のオブジェクトを格納するデータベースの名前を入力します。新規または既存のデータベース名を入力できます。 |
Database name database does not exist. Would you like to create it? [y] : |
このプロンプトが表示される場合、指定されたデータベースは存在しません。Enterキーを押すと、セットアップユーティリティによって作成されます。 |
Would you like to create a new SharePlex user [y]: |
Enterを押してデフォルトを受け入れ、指定したデータベースに同じ名前の新しいSharePlexデータベース・ユーザ・アカウントおよびスキーマを作成するか、nを入力して既存のSharePlexアカウントを使用します。 |
Enter the name of the new SharePlex user: Enter the name of the existing SharePlex user: |
新規ユーザを作成するか、既存のユーザを使用するかによって、これらのプロンプトのいずれかが表示されます。SharePlexユーザの名前を入力します。 注意: ユーザ名は小文字のみで入力してください。 |
Enter the password of the SharePlex user : |
SharePlexユーザアカウントのパスワードを入力します。 |
Re-enter the password for the SharePlex user : |
このプロンプトは、新規ユーザを作成した場合にのみ表示されます。SharePlexパスワードを再度入力します。 |
Will this database be used as a source? [n] : |
DB接続をソースに使用する場合は「Y」と入力します。以下のプロンプトは、ソースのDB接続だけで表示されます。 ターゲットのDB接続を使用する場合は「N」と入力します。 |
Enter the replication slot name? [test_slot] : |
レプリケーションスロット名を入力します。 注意: 設定のアクティベーションに成功すると、レプリケーションスロットtest_slotがデータベースに作成されます。 |
Enter the default tablespace for use by SharePlex [pg_default] : | SharePlexのデフォルトのテーブルスペースと入力します |
Enter the index tablespace for use by SharePlex [pg_default] : | SharePlexのインデックステーブルスペースと入力します |
Do you want Logical replication? [n] : |
このプロンプトは、オンプレミスでホストされているPostgreSQLデータベースに対してのみ表示されます。 論理レプリケーションを実行するには "y "を入力します。 物理レプリケーションを実行するには「n」を入力します。 セットアップによりSharePlexオブジェクトがインストールされます。 |
正常にセットアップされると、次のようなメッセージで終了します:
Completed SharePlex for PostgreSQL database configuration
SharePlex User name: splexab
Database name: testdb
-- The datasource identifier in the SharePlex configuration is 'r.testdb' --
pg_hint_planをインストールするには:
オンプレミスデータベースの場合:
https://github.com/ossc-db/pg_hint_planのPostgreSQLバージョンサポート表に従ってRPMをインストールします。
ユーザ[Shareplex user]でクエリを実行します: CREATE EXTENSION IF NOT EXISTS pg_hint_plan;
インスタンスを再起動します。
Cloud PostgreSQLの場合:
パラメーターグループに静的パラメーターを設定します。shared_preload_libraries=pg_hint_plan。
インスタンスを再起動します。
注意: 一度に存在できるバックグラウンドワーカーの総数は、max_worker_processesとmax_parallel_workersの両方によって制限されます。
|
概要
この章では、SharePlexのインストール後、初めてSharePlexをインストールまたは実行する際に発生する可能性のある一般的な問題について説明します。
場合によっては、本書の特定の手順に優先する、または手順を補足する特別なインストール手順があります。更にこのバージョンには、インストール中またはインストール後に注意すべき既知の問題が存在する可能性があります。インストールプロセスを開始する前に、インストールするバージョンのSharePlexのリリースノートをお読みください。
© ALL RIGHTS RESERVED. 使用条款 隐私 Cookie Preference Center