Babelfish のトラブルシューティング - Amazon Aurora

Babelfish のトラブルシューティング

以下に、いくつかの Babelfish for Aurora PostgreSQL DB クラスターの問題のトラブルシューティングのヒントと回避策を示します。

接続障害

Babelfish と Aurora DB クラスターの接続障害の一般的な原因は、以下を含みます:

  • セキュリティグループはアクセスを許可していません — Babelfish への接続に問題がある場合は、デフォルトの Amazon EC2 セキュリティグループに IP アドレスが追加されていることを確認してください。https://checkip.amazonaws.com/を使用して IP アドレスを特定し、TDS ポートと PostgreSQL ポートのインバウンドルールに追加します。詳細については、Amazon EC2 ユーザーガイドセキュリティグループへのルールの追加を参照してください。

  • SSL 設定の不一致 — Aurora PostgreSQL で rds.force_ssl パラメータがオン (1 に設定) の場合、クライアントは SSL 経由で Babelfish に接続する必要があります。クライアントが正しく設定されていない場合は、次のようなエラーメッセージが表示されます。

    Cannot connect to your-Babelfish-DB-cluster, 1433 --------------------- ADDITIONAL INFORMATION: no pg_hba_conf entry for host "256.256.256.256", user "your-user-name", "database babelfish_db", SSL off (Microsoft SQL Server, Error: 33557097) ...

    このエラーは、ローカルクライアントと Babelfish DB クラスターの間で SSL 設定の問題が発生する可能性があり、クラスターがクライアントに SSL を使用する必要があることを示します (rds.force_ssl パラメータが 1 に設定されます)。SSL 設定の詳細については、Amazon RDS ユーザーガイドの「PostgreSQL DB インスタンスで SSL を使用する」を参照してください。

    Babelfish に接続するために SQL Server Management Studio (SSMS) を使用していてこのエラーが発生する場合は、[Connection Properties] (接続プロパティ) ペインで [Encrypt connection] (接続の暗号化) と [Trust server certificate] (サーバー証明書を信頼する) 接続オプションを選択して、もう一度試すことができます。これらの設定は、SSMS の SSL 接続要件を処理します。

Aurora 接続不具合のトラブルシューティングの詳細については、Amazon RDS DB インスタンスに接続できない を参照してください。

pg_dumppg_restore を使用するには追加設定が必要

現在、PostgreSQL ユーティリティ pg_dump および pg_restore を使用して、データベースをある Babelfish for Aurora PostgreSQL DB クラスターから別のクラスターに移動しようとすると、次のエラーメッセージが表示されます。

psql:bbf.sql:29: ERROR: role "db_owner" does not exist psql:bbf.sql:49: ERROR: role "dbo" does not exist

この問題を回避するには、まず、ソース上にあるのと同じ論理データベースをターゲットクラスターで作成します。それが作成されたら、pg_dumppg_restore の実行に必要なロールを作成できます。

pg_dumppg_restore を使用して Babelfish DB クラスター間でデータベースを移動するには

  1. psql または pgAdmin を使用して Aurora PostgreSQL DB クラスターのターゲット Babelfish に接続します。次の例では psql を使用しています。詳細については、「psql を使用したクラスターへの接続」を参照してください。

  2. ソース上にあるのと同じ論理データベースを、ターゲット上に作成します。

    CREATE DATABASE your-DB-name
  3. Babelfish DB インスタンスに接続し、必要なロールを作成します。

    CREATE ROLE db_owner; ALTER ROLE db_owner WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION NOBYPASSRLS; CREATE ROLE dbo; ALTER ROLE dbo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION NOBYPASSRLS; GRANT db_owner TO dbo GRANTED BY sysadmin; GRANT dbo TO sysadmin GRANTED BY sysadmin;
  4. pg_restore を使用して DB インスタンスをソースからターゲットに復元します。

これらの PostgreSQL ユーティリティの使用の詳細については、「pg_dump」と「pg_restore」を参照してください。