Strategy ONE

在并行升级、元数据迁移或克隆期间保持统计信息的完整性

使用 Platform Analytics 进行并行升级或元数据迁移

Platform Analytics 是一种遥测工具,支持同时从多个 MicroStrategy 部署捕获遥测。平台分析有一种独特的方法来识别与智能服务器的每个元数据连接。

当管理员使用不同的元数据备份重新配置 Intelligence Server 时,平台分析会立即识别更改并开始记录与新元数据关联的新遥测数据。

根据您的目标,无需采取进一步行动。例如,如果您创建了第二个环境作为测试或沙盒环境。如果您想继续在同一个元数据存储库下捕获遥测,请参见下文:

如果以下任何参数发生变化,Platform Analytics 会将您的元数据视为新的,并在lu_元数据桌子:

  • 元数据 _guid通过配置向导创建新的元数据时,会生成并存储唯一的元数据 GUID。
  • 主持人托管数据库服务器的服务器。
  • 港口数据库服务器运行的端口。
  • 数据库元数据数据库名称。
  • 用户 ID/sid此字段仅用于 Oracle 数据库。

上面列出的参数是根据元数据 DSN 中提供的值进行处理的。元数据 DSN 位于您的 odbc.ini Linux 的文件和数据库连接 数据源管理员对于 Windows。

要恢复遥测并确保捕获所有遥测数据,请执行以下步骤:

  1. 保持您的平台分析服务正常运行。例如Zookeeper、Kafka、PAconsumer、REDIS等。
  2. 要选择性地确保 Platform Analytics 在进行配置更改之前已完成处理现有遥测数据,请检查偏移主题的遥测消息匹配数量,或者检查遥测服务器(例如 Kafka)和 Platform Analytics 存储库之间的差异是否可忽略不计:
    1. MicroStrategy 建议您检查以下核心主题或主题领域的消息:
      1. 是否报告统计信息
      2. 是否为文档统计信息
      3. 会话状态
    2. 要从 Telemetry Server 获取结果,请转到其安装目录(例如,opt/MicroStrategy/Messaging Services/Kafka/kafka xx.xxx/bin)并执行以下查询:
      复制
      ./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <ip:port> --topic <topic> --time -1
    3. 要从 Platform Analytics 存储库获取结果,请通过数据库连接到存储库 查询工具或其他查询编辑器并执行以下查询:

      复制
      select * from platform_analytics_wh.lu_topic_partition_offset where id like '%<topic>%'
  3. 使用新的元数据重新配置 Intelligence Server

  4. 通过数据库查询工具或其他查询编辑器连接到 Platform Analytics 存储库,并验证lu_元数据表已填充。

  5. 停止平台分析消费者(PAconsumer)进程。

  6. 使用DB Query工具,使用临时修改的metadata_id交换lu_metadata表中的metadata_id,以避免主键异常:

    大纲

    复制
    UPDATE lu_metadata SET metadata_id = 'TEMPORARY_MD_ID' WHERE metadata_db_connection = 'OLD_MD_CONNECTION';
    UPDATE lu_metadata SET metadata_id = 'OLD_MD_ID' WHERE metadata_db_connection = 'NEW_MD_CONNECTION';
    UPDATE lu_metadata SET metadata_id = 'NEW_MD_ID' WHERE metadata_db_connection = 'OLD_MD_CONNECTION';

    示例

    复制
    UPDATE lu_metadata SET metadata_id = '7051653456108457985' WHERE metadata_db_connection = 'host=10.23.35.94;port=5432;database=platform_metadata;';
    UPDATE lu_metadata SET metadata_id = '7051653456108457984' WHERE metadata_db_connection = 'host=127.0.0.1;port=5432;database=platform_metadata;';
    UPDATE lu_metadata SET metadata_id = '7051946829721636864' WHERE metadata_db_connection = 'host=10.23.35.94;port=5432;database=platform_metadata;';
  7. 启动 Platform Analytics Consumer。

  8. 使用以下查询确认交易已映射到正确的metadata_id。新的条目应该具有旧的 metadata_id 和新的 metdata_db_connection。

    复制
    SELECT object_name, m.metadata_id, metadata_db_connection, tran_timestamp
    FROM access_transactions a
        JOIN lu_object o ON a.object_id = o.object_id
        JOIN lu_project p ON o.project_id = p.project_id
        JOIN lu_metadata m ON p.metadata_id = m.metadata_id
    WHERE tran_timestamp > NOW() - INTERVAL '5 MINUTE'
    ORDER BY tran_timestamp DESC;
  9. 使用以下查询清除 Platform Analytics Warehouse 以删除元数据中具有未使用的 metadata_id 的所有对象:

    复制
    doTestBeforePurge: true
    commandsToExecute:
    #  - commandName: DELETE_ALL_DELETED_OBJECTS

    #  - commandName: DELETE_ALL_DELETED_PROJECTS

      - commandName: DELETE_ALL_OBJECTS_IN_METADATA
        metadataList:
          - METADATA_ID_TO_BE_PURGED
    #      - metadataId_2