- Visão geral
- Requisitos
- Instalação
- Pós-instalação
- Migração e atualização
- Atualização do Automation Suite no EKS/AKS
- Etapa 1: mover os dados da organização do Identity, de independente para o Automation Suite
- Etapa 2: restauração do banco de dados de produtos independente
- Etapa 3: backup do banco de dados da plataforma no Automation Suite
- Etapa 4: mesclando organizações no Automation Suite
- Etapa 5: atualização das strings de conexão do produto migradas
- Etapa 6: migração do Orchestrator independente
- Etapa 7: migração do Insights independente
- Etapa 8: migração do Test Manager independente
- Etapa 9: exclusão do tenant padrão
- Executando uma migração de único tenant
- Migração do Automation Suite no Linux para o Automation Suite no EKS/AKS
- Monitoramento e alertas
- Administração de cluster
- Configuração específica do produto
- Configuração de parâmetros do Orchestrator
- Configurações de aplicativo do Orchestrator
- Configuração do AppSettings
- Configuração do tamanho máximo da solicitação
- Substituição da configuração de armazenamento no nível do cluster
- Configuração dos repositórios de credenciais
- Configuração da chave de criptografia por tenant
- Limpeza do banco de dados do Orchestrator
- Solução de problemas
- A configuração de backup não funciona devido a uma falha na conexão com o Azure Government
- Pods no namespace uipath travaram ao habilitar taints de nó personalizado
- Não é possível iniciar o Automation Hub e o Apps com configuração de proxy
- Os pods não podem se comunicar com o FQDN em um ambiente de proxy
- A cadeia de caracteres de conexão SQL da Automação de Teste é ignorada
- Falha de backup do EKS devido à versão do Velero
- O backup do Velero falha com o erro FailedValidation
- O acesso ao FQDN retorna o erro de acesso negado do RBAC
- Migreção manual do ArgoCD NetworkPolicy (GHSA-47m3-95c7-g2g8)
Limpeza do banco de dados do Orchestrator
Scripts de manutenção de banco de dados do Orchestrator disponíveis para o Automation Suite, cobrindo todas as tarefas de limpeza e manutenção necessárias no Automation Suite.
Os scripts a seguir substituem qualquer e todos os scripts de limpeza de banco de dados anteriores. Eles cobrem todas as tarefas de manutenção necessárias e podem ser configurados conforme necessário.
Você pode baixar os scripts de manutenção de banco de dados do Orchestrator do Customer Portal.
SQL script
Pré-requisitos
Isso é o que você precisa para poder executar o script
- Você deve ter acesso ao banco de dados de arquivo a partir do contexto de seu banco de dados do Orchestrator.
- Você deve poder acessar o arquivo usando nomes de 3 partes, como
Archive.dbo.QueueItemsTableArchive" id="1"/>.
Como usá-lo
- Execute o script SQL
CreateOrchestratorCleanupObjects.sqlpara criar os seguintes objetos:- A tabela
dbo.__CleanupLog" id="1"/>, que abriga os logs de execução. - O procedimento
dbo.GetOrCreateArchiveTable" id="1"/>, que cria ou retorna a tabela de arquivo. - O procedimento
dbo.RunOrchestratorCleanup" id="1"/>, que executa a exclusão e, opcionalmente, o arquivamento de dados antigos.
- A tabela
- Execute
dbo.RunOrchestratorCleanupcom o arquivo de configuração XML de agendamento para executar a limpeza. Para obter detalhes sobre o arquivo XML, consulte a seção Agendamento da limpeza .Observação:Você também pode usar o agente SQL Server para executar a limpeza.
Exemplo de script
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';
script do powershell
Isso é apropriado para situações em que você não pode usar o script SQL.
O script PowerShell é compatível com o Powershell 5.1 e pode ser usado com runbooks de Automação do Azure.
Pré-requisitos
O script RunOrchestratorCleanup.ps1 deve poder se comunicar com essas duas strings de conexão:
SourceConnectionString" id="1"/> - essa é a string de conexão de banco de dados do Orchestrator. DestinationConnectionString" id="1"/> - essa é a string de conexão de banco de dados de arquivo. Observe que o banco de dados de arquivo deve ser criado e configurado com antecedência.
Objetos que ele cria
- A tabela
dbo.__CleanupLog" id="1"/>, que abriga os logs de execução. - A tabela
dbo.__CleanupIds" id="1"/>, que armazena um lote temporário de IDs que precisam ser limpos.
Limitações
O script abre duas conexões: uma ao banco de dados do Orchestrator (por meio de SourceConnectionString) e uma ao banco de dados de arquivo (por meio de DestinationConnectionString). Dessa forma, nenhuma transação real está envolvida, pois os dados são copiados do Orchestrator para o arquivo, após o qual são excluídos do Orchestrator. Isso significa que, se uma exceção for gerada em qualquer lugar entre as duas ações, fazendo com que o script seja reexecutado, os mesmos dados podem ser copiados novamente, levando a duplicatas no banco de dados de arquivo. No entanto, como a exclusividade não é aplicada no banco de dados de arquivo, isso não leva a problemas.
Exemplo de script
.\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>'
Agendamento da limpeza
Você pode escolher quais dados limpar de seu banco de dados, quando e por quanto tempo a atividade de limpeza deve ser feita para cada execução, entre outras. Para fazer isso, use o seguinte arquivo XML com o script SQL ou PowerShell. Ele é pré-configurado com nossos parâmetros recomendados, mas você pode editá-lo se quiser funcionalidades mais avançadas. Certifique-se de entender o que cada parâmetro faz antes de editar o script, pois isso pode ter consequências graves.
<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="LedgerDeliveries" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="LastUpdatedTime" 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="LedgerDeliveries" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="LastUpdatedTime" 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>
Mesmo que uma execução consiga limpar parcialmente uma ou algumas tabelas, as execuções subsequentes continuarão a limpeza, até que o script atinja todo o backlog. Portanto, é importante que você não accumule um backlog maior do que o script pode lidar. Se isso acontecer, considere agendar o script para ser executado com mais frequência.
Parâmetros do XML de limpeza
| Parâmetro | Explicação | Valores possíveis |
|---|---|---|
|
| O número máximo de minutos que o script pode executar para todas as tabelas durante uma execução. | Deve ser maior que 1. |
|
| O nome da tabela que contém os dados que você deseja excluir. | Exemplo: QueueItems |
|
| O número máximo de minutos que o script pode executar para uma tabela específica durante uma execução. O tempo que você define aqui às vezes pode ser executado por mais alguns minutos. totalRunMaxMinutes tem precedência e sempre será aplicada, mesmo se você definir esse parâmetro como -1 . | -1 : o script será executado por um número ilimitado de minutos. 0 : o script não será executado para essa tabela específica. >0 (ou seja, um número escolhido por você): o número máximo de minutos que o script executará. |
|
| O ID da coluna que contém os dados que você deseja excluir. | Exemplo: |
|
| Isso difere dependendo do tipo de dados. daysOld . | Exemplo: |
|
| Qualquer instrução SQL válida para um filtro. Isso pode ser deixado vazio. | Exemplo: Status IN (2, 3, 4, 5, 6). Isso está incluído no arquivo XML recomendado por nós. |
daysOld | Permite que você mantenha um certo número de dias de dados. dateTimeColumn . | Deve ser definido como um mínimo de 2 . Exemplo: definir esse parâmetro como 5 mantém todos os dados com 5 dias de idade. |
|
| O número de linhas de tabela a serem excluídas em uma iteração. Isso não é usado para tabelas em que chaves estrangeiras são definidas. | Exemplo: configurar esse parâmetro como |
forceCascade | Permite que você execute o script para tabelas em que chaves estrangeiras são definidas. | 0 : não em cascata. 1 : cascata. Por exemplo, definir essa opção para a tabela QueueItems processará as tabelas QueueItemEvents e QueueItemComments . |
shouldArchive | Permite que você escolha se deseja arquivar os dados. | 0 : não arquivar. 1 : arquivar. |
Scripts SQL e PowerShell comparados
| Recurso | SQL script | script do powershell |
|---|---|---|
| XML de limpeza | Ambos usam a lógica descrita na seção Agendamento da limpeza. | |
| Log de execução | Ambos criam uma tabela dbo.__CleanupLogs para armazenar os logs da execução. Você pode consultar os logs de uma execução usando SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' ORDER BY Id . Você pode verificar se uma execução continha erros usando SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' AND IsError = 1 . O parâmetro ExecutionId é gerado com cada execução de qualquer um desses scripts. | |
| Tabela de arquivo | A tabela de arquivo não contém índices, chaves estrangeiras ou colunas de identificação. As colunas do tipo Carimbo de data/hora não são arquivadas. | |
| Nome da tabela de arquivo | Os nomes seguem a mesma lógica e incluem uma string baseada no esquema de tabela. | |
| Lote de IDs a serem arquivados/excluídos | Armazenado em uma tabela temporária. | Armazenado na tabela |
| Transaction | Uma única transação é executada para cada lote, durante o qual os dados são arquivados e excluídos. | SqlBulkCopy é usado para copiar os dados. Não há nenhuma transação única executada para arquivamento e exclusão. |