Babelfish 问题排查
下文介绍了 Babelfish for Aurora PostgreSQL 数据库集群某些问题的排查思路和解决方法。
连接失败
导致新 Aurora 数据库集群与 Babelfish 连接失败的常见原因包括:
-
安全组不允许访问 – 如果您在连接到 Babelfish 时遇到问题,请确保将 IP 地址添加到原定设置的 Amazon EC2 安全组中。您可以使用 https://checkip.amazonaws.com/
以确定您的 IP 地址,然后将其添加到 TDS 端口和 PostgreSQL 端口的入站规则中。有关更多信息,请参阅《Amazon EC2 用户指南》中的向安全组添加规则。
有关 Aurora 连接问题排查的更多信息,请参阅 无法连接到 Amazon RDS 数据库实例。
使用 pg_dump
和 pg_restore
需要额外设置
目前,如果尝试使用 PostgreSQL 实用程序 pg_dump
和 pg_restore
将数据库从一个 Babelfish for Aurora PostgreSQL 数据库集群移动到另一个这样的数据库集群,会出现以下错误消息:
psql:bbf.sql:29: ERROR: role "db_owner" does not exist
psql:bbf.sql:49: ERROR: role "dbo" does not exist
若要解决此问题,首先在目标集群上创建与源集群上相同的逻辑数据库。完成后,您就可以创建运行 pg_dump
和 pg_restore
所需的角色。
使用 pg_dump
和 pg_restore
在 Babelfish 数据库集群之间移动数据库
使用
psql
或pgAdmin
连接到 Babelfish for Aurora PostgreSQL 目标数据库集群。下面的示例使用了psql
。有关更多信息,请参阅 使用 psql 连接到数据库集群。在目标上创建与源上相同的逻辑数据库。
CREATE DATABASE
your-DB-name
连接到 Babelfish 数据库实例并创建必要角色。
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;
使用
pg_restore
将数据库实例从源还原到目标。
若要了解有关使用这些 PostgreSQL 实用程序的更多信息,请参阅 pg_dump