本文介绍 Azure Database for PostgreSQL 灵活服务器镜像的故障排除步骤。
对镜像表选择过程中出现的错误/警告消息进行故障排除
创建新的镜像数据库时,在“选择数据”页上,你可能会收到有关源数据库中特定表的一些可视化反馈。 下表提供了潜在问题的列表,包括显示的消息以及有关如何解决问题的相关说明。
状态代码 | 状态类型 | 消息 | 说明 |
---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
ERROR | 架构 {} 不存在 | 给定架构不存在。 在 Fabric 拉取相关表信息时,它可能已被移除。 再重试。 |
TABLE_DOES_NOT_EXIST |
ERROR | 在架构 {} 中,表 {} 不存在。 | 给定表不存在。 在 Fabric 拉取相关表信息时,它可能已被移除。 再重试。 |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
ERROR | 表 {}.{} 的列 {} 的名称中包含禁止使用的字符 | 给定列的名称中包含不受支持的字符。 1 |
UNSUPPORTED_DATA_TYPE |
ERROR | 表 {}.{} 的列 {} 中包含不受支持的数据类型 | 表的一个(或多个)列当前具有不受支持的数据类型。 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
ERROR | 表 {}.{} 的名称中包含禁止使用的字符 | 表名称包含不受支持的字符。 1 |
NOT_REGULAR_TABLE |
ERROR | 表 {}.{} 不是常规表 | 镜像不支持表类型。 2 |
HAS_PRIMARY_KEY |
OK | 表 {}.{} 具有主键 | 表是常规表,并且具有用于镜像的有效主键。 |
HAS_UNIQUE_INDEX |
OK | 表 {}.{} 具有合适的唯一索引 | 表没有主键,但有一个可用于镜像的唯一索引。 |
NO_INDEX_FULL_IDENTITY |
WARNING | 表 {}.{} 没有合适的唯一索引。 使用完整标识 | 表没有主键或唯一索引,因此需要 REPLICA IDENTITY FULL 来支持镜像,这可能会导致性能问题。 |
1 不支持包含空格 (' ') 字符的对象标识符。
2 此表类型不支持镜像。 目前,视图、具体化视图、外部表和分区表均不受支持。
3 有关不支持的数据类型的列表,请参阅限制。 仅支持以下类型的列:
bigint
bigserial
boolean
bytea
character
character varying
date
double precision
integer
numeric
real
serial
oid
money
smallint
smallserial
text
time without time zone
-
time with time zone
(* 不作为主键) timestamp without time zone
timestamp with time zone
uuid
在 Postgres 中,两个精确对应同一时刻但处于不同时区的“带时区的时间”值会被视为不同的值。 例如:06:24:00.59+05
和 05:24:00.59+04
对应于相同时期时间,但 Postgres 会对它们进行不同的处理。
Fabric 容量或工作区的更改
原因 | 结果 | 建议的解决方案 |
---|---|---|
Fabric 容量已暂停/删除 | 镜像停止 | 1. 从 Azure 门户恢复或分配容量 2. 转到 Fabric 镜像数据库项。 在工具栏中,选择“停止复制”。 3. 通过在 Fabric 门户中为镜像项选择“镜像数据库”来启动复制。 |
已恢复 Fabric 容量 | 镜像将不会恢复 | 1. 转到 Fabric 镜像数据库项。 在工具栏中,选择“停止复制”。 2. 通过在 Fabric 门户中为镜像项选择“镜像数据库”来启动复制。 |
已删除工作区 | 镜像自动停止 | 如果 Azure Database for PostgreSQL 灵活服务器上的镜像仍处于活动状态,请使用服务器管理员身份进行连接,并在 PostgreSQL 服务器上执行以下命令:select azure_cdc.list_tracked_publications(); ,然后使用返回的发布名称执行 select azure_cdc.stop_publication(<publication_name>); |
Fabric 试用容量已过期 | 镜像自动停止 | 请参阅 Fabric 试用容量过期。 |
超出 Fabric 容量 | 镜像暂停 | 等待过载状态结束或更新容量。 通过为从过载情况中恢复可采取的操作了解详细信息。 容量恢复后镜像继续运行。 |
任何其他资源错误 | 镜像已禁用 | 为确保计算资源不受影响,并最大限度地减少对 Azure Database for PostgreSQL 灵活服务器的影响,在出现任何持久性资源错误时,镜像会禁用。 |
“用户可以使用 Fabric 外部的应用访问 OneLake 中存储的数据”设置已禁用 | “复制器 - 表无法达到复制状态” | 启用租户设置 用户可以使用 Fabric外部的应用访问 OneLake 中存储的数据。 |
用于故障排除的 SQL 查询
如果你遇到镜像问题,请使用系统视图和函数执行以下服务器级检查,以验证配置。
执行下面的查询,检查更改是否正确得到应用:
select * from azure_cdc.tracked_publications;
检查发布是否处于活动状态且快照是否已生成。 你也可以通过查询来检查是否已生成后续更改批处理:
select * from azure_cdc.tracked_batches;
如果
azure_cdc.tracked_publications
视图未显示处理增量更改的任何进度,请执行以下 SQL 查询以检查是否报告了任何问题:SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
如果没有报告任何问题,请执行以下命令以查看镜像的 PostgreSQL 数据库的当前配置。 请确认它已正确启用。
SELECT * FROM pg_replication_slots;
slot_name
和active
是此处需要注意的关键列。 除t
(true) 之外的任何值都表示可能存在潜在问题。如需排除故障,请联系支持人员。
托管标识
需要启用 Azure Database for PostgreSQL 灵活服务器的系统分配的托管标识 (SAMI),并且该标识必须是主标识。 有关更多信息,请参阅 PostgreSQL 灵活服务器的系统分配的托管标识。
启用后,如果 SAMI 设置状态随后被禁用,然后再次启用,Azure Database for PostgreSQL 灵活服务器到 Fabric OneLake 的镜像将失败。
使用以下查询验证 SAMI 是否已启用:show azure.service_principal_id;
SAMI 权限
请勿移除 Fabric 镜像数据库项上 Azure Database for PostgreSQL 灵活服务器的系统分配的托管标识 (SAMI) 参与者权限。
如果意外移除了 SAMI 权限,Azure Database for PostgreSQL 灵活服务器的镜像将无法按预期运行。 无法从源数据库镜像新数据。
如果移除了 Azure Database for PostgreSQL 灵活服务器的 SAMI 权限或权限设置不正确,请按照以下步骤操作。
- 通过选择镜像数据库项上的
...
省略号选项,将灵活服务器 SAMI 添加为用户。 - 选择“管理权限”选项。
- 输入 Azure Database for PostgreSQL 灵活服务器的名称。 提供读取和写入权限。