本文介绍镜像 Azure Database for PostgreSQL 灵活服务器的故障排除步骤。
排查表选择期间镜像时出现的错误/警告消息
创建新的镜像数据库时,在 “选择数据 ”页中,可能会收到有关源数据库中特定表的一些视觉反馈。 下表提供了潜在问题的列表,包括显示的消息以及有关如何解决问题的相关说明。
| 状态代码 | 状态类型 | Message | Description |
|---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
错误 | 架构 {} 不存在 | 给定架构不存在。 当 Fabric 正在拉取相关表信息时,它可能已被删除。 重试。 |
TABLE_DOES_NOT_EXIST |
错误 | 在架构 {}中,表 {} 不存在。 | 给定表不存在。 当 Fabric 正在拉取相关表信息时,它可能已被删除。 重试。 |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
错误 | 表 {}。{} 包含列名称中的禁止字符 {} | 给定列的名称中不受支持的字符。 1 |
UNSUPPORTED_DATA_TYPE |
错误 | 表 {}。{} 列中的数据类型不受支持 {} | 表的一个或多个列当前不支持数据类型。 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
错误 | 表 {}。{} 包含名称中的禁止字符 | 表名包含不受支持的字符。 1 |
NOT_REGULAR_TABLE |
错误 | 表 {}。{} 不是常规表 | 镜像不支持表类型。 2 |
HAS_PRIMARY_KEY |
好的 | 表 {}.{} 具有主键 | 表是常规表,具有用于镜像的有效主键。 |
HAS_UNIQUE_INDEX |
好的 | 表 {}。{} 具有合适的唯一索引 | 表没有主键,但具有用于镜像的唯一索引。 |
NO_INDEX_FULL_IDENTITY |
警告 | 表 {}。{} 没有合适的唯一索引。 使用完整标识 | 表没有主键或唯一索引,因此 REPLICA IDENTITY FULL 需要支持镜像,这可能会导致性能问题。 |
1 不支持具有空格 (' ') 字符的对象标识符。
2 镜像不支持此表类型。 目前不支持视图、具体化视图、外表和分区表。
3 有关不支持的数据类型的列表,请参阅 “限制”。 仅支持具有以下类型的列:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* 不作为主键) timestamp without time zonetimestamp with time zoneuuid
在 Postgres 中,两个“time with time with time”值与完全相同的时刻相对应,但在不同的时区中,被视为不同。 例如: 06:24:00.59+05 对应于 05:24:00.59+04 同一时期的时间,但 Postgres 以不同的方式对待它们。
对 Fabric 容量或工作区的更改
| 原因 | 结果 | 建议的解决方法 |
|---|---|---|
| 构造容量已暂停/删除 | 镜像停止 | 1.从 Azure 门户恢复或分配容量 2.转到 Fabric 镜像数据库项。 在工具栏中,选择“ 停止复制”。 3.通过在 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 试用容量过期。 |
| 超出结构容量 | 镜像暂停 | 等待重载状态结束或更新容量。 从 可从重载情况中恢复的作了解详细信息。 恢复容量后,镜像会继续。 |
| 任何其他资源错误 | 镜像已禁用 | 为了确保计算资源不受影响,并最大程度地减少对 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。 除 (true) 之外t的任何值都表示存在潜在问题。如果需要故障排除,请联系支持人员。
托管标识
需要启用 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 灵活服务器的名称。 提供 读取 和 写入 权限。