- 概述
- 要求
- 预安装
- 安装
- 安装后
- 迁移和升级
- 监控和警示
- 集群管理
- 特定于产品的配置
- 故障排除
- 由于无法连接到 Azure Government,备份设置不起作用
- 启用自定义节点污点时,UiPath 命名空间中的 Pod 卡住
- 无法使用代理设置启动 Automation Hub 和 Apps
- 由于“验证失败”错误,Velero 备份失败
- 外部密码故障排除
- 时间即服务故障排除
- 无法在启用 TLS 证书验证的情况下启动 AI Center 和 Document Understanding Pod
- TLS 证书验证错误
- Fluentd 不会在 IPv6 环境中导出日志
- Studio 桌面版无法加载 Integration Service 连接器和活动
- 手动 ArgoCD 网络策略缓解措施 (MHSA-47m3-95c7-g2g8)
- 为 uipathctl 创建的工作负载配置资源请求和限制
清理 Orchestrator 数据库
使用 SQL 或 PowerShell 脚本以及 EKS/AKS 上的可配置保留策略,为 Orchestrator 执行数据库清理。
以下脚本将替换以前的所有数据库清理脚本。这些脚本能够完成所有必要的维护任务,并且可以根据需要进行配置。
您可以从 Customer Portal 下载 Orchestrator 数据库维护脚本。
SQL 脚本
先决条件
运行 CreateOrchestratorCleanupObjects.sql 脚本需要满足以下条件:
- 您必须有权在 Orchestrator 数据库的上下文中访问存档数据库。
- 您必须能够使用由三部分组成的名称访问存档,例如
Archive.dbo.QueueItemsTableArchive。
如何使用它
-
运行
CreateOrchestratorCleanupObjects.sqlSQL 脚本以创建以下对象:- 存储执行日志的
dbo.__CleanupLog表。 dbo.GetOrCreateArchiveTable过程,用于创建或返回存档表。dbo.RunOrchestratorCleanup过程,用于执行删除旧数据的操作,也可以选择存档旧数据的操作。
- 存储执行日志的
-
使用计划 XML 配置文件执行
dbo.RunOrchestratorCleanup以完成清理。有关 XML 文件的详细信息,请参阅“计划清理”部分。备注:您还可以使用 SQL Server 代理来执行清理。
脚本示例
DECLARE @cleanupConfigXml XML =
'<CleanupConfig totalRunMaxMinutes="180">
<table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
</CleanupConfig>';
EXEC dbo.RunOrchestratorCleanup
@cleanupConfigXml = @cleanupConfigXml,
@archiveDatabaseName = 'OrchestratorArchive';
DECLARE @cleanupConfigXml XML =
'<CleanupConfig totalRunMaxMinutes="180">
<table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
</CleanupConfig>';
EXEC dbo.RunOrchestratorCleanup
@cleanupConfigXml = @cleanupConfigXml,
@archiveDatabaseName = 'OrchestratorArchive';
PowerShell 脚本
这适用于无法使用 SQL 脚本的情况。
PowerShell 脚本与 Powershell 5.1 兼容,并且可以与 Azure 自动化 Runbook 一起使用。
先决条件
RunOrchestratorCleanup.ps1 脚本必须能够与以下连接字符串通信:
SourceConnectionString- 这是 Orchestrator 数据库连接字符串。DestinationConnectionString- 这是存档数据库连接字符串。请注意,必须提前创建和设置存档数据库。
它创建的对象
- 存储执行日志的
dbo.__CleanupLog表。 dbo.__CleanupIds表,用于存储需要清理的临时批次 ID。
限制
该脚本将打开两个连接:一个连接到 Orchestrator 数据库(通过SourceConnectionString ),另一个连接到存档数据库(通过DestinationConnectionString )。因此,不涉及实际的事务,因为系统会将数据从 Orchestrator 复制到存档,然后将其从 Orchestrator 中删除。这意味着,如果在两个操作之间的任何位置引发异常,导致重新执行脚本,则可能会再次复制相同的数据,从而导致存档数据库中出现重复项。但是,由于在存档数据库中未强制执行唯一性,因此这不会导致任何问题。
脚本示例
.\RunOrchestratorCleanup
-SourceConnectionString "Data Source=.;Initial Catalog=UiPath;User ID=sa;Password=******"
-DestinationConnectionString "Data Source=.;Initial Catalog=<OrchestratorArchive>;User ID=sa;Password=******"
-CleanupConfigXml '<CleanupConfig totalRunMaxMinutes="180"><table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" /></CleanupConfig>'
.\RunOrchestratorCleanup
-SourceConnectionString "Data Source=.;Initial Catalog=UiPath;User ID=sa;Password=******"
-DestinationConnectionString "Data Source=.;Initial Catalog=<OrchestratorArchive>;User ID=sa;Password=******"
-CleanupConfigXml '<CleanupConfig totalRunMaxMinutes="180"><table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" /></CleanupConfig>'
计划清理
您可以选择要从数据库中清理的数据、清理时间以及每次运行的清理活动应执行的时长等。为此,请将以下 XML 文件与 SQL 或 PowerShell 脚本一起使用。它已预先配置我们推荐的参数,但如果您需要更高级的功能,可以编辑它。在编辑脚本之前,请确保您了解每个参数的作用,否则可能会产生严重后果。
<CleanupConfig totalRunMaxMinutes="180">
<table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
<table name="Jobs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="State IN (4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
<table name="Logs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="TimeStamp" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="1" />
<table name="AuditLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTime" additionalFilter="" daysOld="365" batchSize="25" forceCascade="1" shouldArchive="1" />
<table name="Tasks" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="180" batchSize="10" forceCascade="0" shouldArchive="1" />
<table name="QueueProcessingRecords" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ProcessingTime" additionalFilter="ReportType != -1" daysOld="30" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Sessions" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ReportingTime" additionalFilter="" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="0" />
<table name="RobotLicenseLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="StartDate" additionalFilter="" daysOld="180" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="UserNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="TenantNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Ledger" runMaxMinutes="-1" idColumn="LedgerId" dateTimeColumn="CreationTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Assets" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="120" batchSize="50" forceCascade="1" shouldArchive="0" />
<table name="__CleanupLog" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTimeUtc" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
</CleanupConfig>
<CleanupConfig totalRunMaxMinutes="180">
<table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
<table name="Jobs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="State IN (4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
<table name="Logs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="TimeStamp" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="1" />
<table name="AuditLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTime" additionalFilter="" daysOld="365" batchSize="25" forceCascade="1" shouldArchive="1" />
<table name="Tasks" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="180" batchSize="10" forceCascade="0" shouldArchive="1" />
<table name="QueueProcessingRecords" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ProcessingTime" additionalFilter="ReportType != -1" daysOld="30" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Sessions" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ReportingTime" additionalFilter="" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="0" />
<table name="RobotLicenseLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="StartDate" additionalFilter="" daysOld="180" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="UserNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="TenantNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Ledger" runMaxMinutes="-1" idColumn="LedgerId" dateTimeColumn="CreationTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
<table name="Assets" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="120" batchSize="50" forceCascade="1" shouldArchive="0" />
<table name="__CleanupLog" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTimeUtc" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
</CleanupConfig>
即使一次运行只能清理一个或几个表格的一部分,后续运行也将继续清理,直到脚本处理完所有积压工作为止。因此,累积的积压工作量不要超过脚本的处理能力,这一点很重要。如果发生这种情况,请考虑安排脚本更频繁地运行。
清理 XML 参数
| 参数 | 说明 | 可能的值 |
|---|---|---|
|
| 在一次运行期间允许脚本对所有表执行的最大分钟数。 | 必须大于 1。 |
|
| 包含要删除的数据的表格名称。 | 示例: QueueItems |
|
| 在一次运行期间允许脚本针对特定表格执行的最大分钟数。 您在此处设置的时间有时可能会超出几分钟。 totalRunMaxMinutes 优先,并且将始终强制执行,即使您将此参数设置为 -1 也是如此。 |
|
|
| 包含要删除的数据的列的 ID。 | 示例:QueueItems 表中的 Id |
|
| 这因数据类型而异。 daysOld 结合使用。 | 示例:适用于 QueueItems 的 CreationTime |
|
| 适用于筛选器的任何有效 SQL 语句。 这可以留空。 | 示例:Status IN (2, 3, 4, 5, 6)。 这包含在我们推荐的 XML 文件中。 |
daysOld | 允许您保留一定天数的数据。 dateTimeColumn 结合使用。 | 这必须设置为最小值 2。 示例:将此参数设置为 |
|
| 要在一次迭代中删除的表格行数。 这不适用于定义了外键的表格。 | 示例:如果将 QueueItems 表的参数设置为 50,则系统会从该特定表中删除 50 个项目。 |
forceCascade | 用于对定义了外键的表格执行脚本。 forceCascade。因此,您无需更改它。 |
例如,为 |
shouldArchive | 允许您选择是否要存档数据。 |
|
SQL 和 PowerShell 脚本的比较
| 功能 | SQL 脚本 | PowerShell 脚本 |
|---|---|---|
| 清理 XML | 它们都使用“计划清理”部分中描述的逻辑。 | |
| 执行日志 | 它们都会创建 您可以使用以下方法查询执行的日志 SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' ORDER BY Id。您可以使用以下命令来检查执行是否包含错误 SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' AND IsError = 1。 每次执行这些脚本时都会生成 ExecutionId 参数。 | |
| 存档表格 | 存档表不包含任何索引、外键或身份列。 时间戳类型的列不会存档。 | |
| 存档表格名称 | 这些名称遵循相同的逻辑,并且包含基于表架构的字符串。 | |
| 待存档/删除的 ID 批次 | 存储在临时表中。 | 存储在 dbo.__CleanupIds 表中。 |
| Transaction | 在此期间,系统会存档和删除数据。对每个批次执行一个事务。 batchSize 参数在 XML 文件中定义。 | SqlbulkCopy 用于复制数据。 没有为存档和删除执行单个事务。 |