排查 Azure Database for PostgreSQL 灵活服务器中的 Fabric 镜像数据库问题

本文介绍镜像 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 有关不支持的数据类型的列表,请参阅 “限制”。 仅支持具有以下类型的列:

  • 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 中,两个“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 查询

如果遇到镜像问题,请使用系统视图和函数执行以下服务器级别检查来验证配置。

  1. 执行以下查询,检查更改是否正确流动:

    select * from azure_cdc.tracked_publications;
    

    检查发布是否处于活动状态,并且已生成快照。 还可以通过查询检查后续更改批处理是否已生成:

    select * from azure_cdc.tracked_batches;
    
  2. azure_cdc.tracked_publications如果视图在处理增量更改时未显示任何进度,请执行以下 SQL 查询来检查是否报告了任何问题:

    SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
    
  3. 如果没有报告任何问题,请执行以下命令以查看镜像 PostgreSQL 数据库的当前配置。 确认它已正确启用。

    SELECT * FROM pg_replication_slots;
    

    要在此处查找的键列是 slot_nameactive。 除 (true) 之外 t 的任何值都表示存在潜在问题。

  4. 如果需要故障排除,请联系支持人员

托管标识

需要启用 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 权限或权限未正确设置,请使用以下步骤。

  1. 通过选择 ... 镜像数据库项上的省略号选项,将灵活服务器 SAMI 添加为用户。
  2. 选择“ 管理权限 ”选项。
  3. 输入 Azure Database for PostgreSQL 灵活服务器的名称。 提供 读取写入 权限。