Solução de problemas para atualização no local de Aurora MySQL
Use as dicas a seguir para ajudar a solucionar problemas com as atualizações no local do Aurora MySQL. Estas dicas não se aplicam a clusters de banco de dados do Aurora Serverless.
| Motivo para a atualização no local ser cancelada ou lenta | Efeito | Solução para permitir que a atualização no local seja concluída dentro da janela de manutenção |
|---|---|---|
| A réplica associada entre regiões do Aurora ainda não foi corrigida | Aurora cancela a atualização. | Atualize a réplica entre regiões do Aurora e tente novamente. |
| Cluster tem transações XA no estado preparado | Aurora cancela a atualização. | Confirmar ou reverter todas as transações XA preparadas. |
| O cluster está processando qualquer instrução DDL (Data Definition Language) | Aurora cancela a atualização. | Considere esperar e executar a atualização depois que todas as instruções DDL estiverem concluídas. |
| Cluster tem alterações não confirmadas para muitas linhas | A atualização pode levar muito tempo. |
O processo de atualização reverte as alterações não confirmadas. O indicador para esta condição é o valor de Considere executar a atualização somente depois que todas as grandes transações forem confirmadas ou revertidas. |
| Cluster tem um número elevado de registros para desfazer | A atualização pode levar muito tempo. |
Mesmo que as transações não confirmadas não afetem um grande número de linhas, podem envolver um grande volume de dados. Por exemplo, você pode inserir BLOBs grandes. O Aurora não detecta nem gera automaticamente um evento para esse tipo de atividade de transação. O indicador para essa condição é o tamanho da lista de histórico (HLL). O processo de atualização reverte as alterações não confirmadas. É possível conferir o HLL na saída do comando
Também é possível monitorar a métrica Pense em realizar a atualização somente quando o HLL for menor. |
| O cluster está no processo de confirmação de uma grande transação de log binário | A atualização pode levar muito tempo. |
O processo de atualização aguarda até que as alterações de log binário sejam aplicadas. Mais transações ou instruções DDL podem começar durante esse período, retardando ainda mais o processo de atualização. Agende o processo de atualização quando o cluster não estiver ocupado gerando alterações de replicação de log binário. O Aurora não detecta nem gera automaticamente um evento para esta condição. |
| Inconsistências em esquemas resultantes da remoção ou corrupção de arquivos | Aurora cancela a atualização. |
Altere o mecanismo de armazenamento padrão para tabelas temporárias do MyISAM para o InnoDB. Siga estas etapas:
|
| O usuário mestre foi excluído. | Aurora cancela a atualização. |
ImportanteNão exclua o usuário mestre. No entanto, se por algum motivo você excluir o usuário mestre, restaure-o usando os seguintes comandos SQL:
|
Para ver mais detalhes sobre a solução de problemas que fazem com que as verificações prévias de atualização falhem, consulte os seguintes blogs:
Você pode usar as etapas a seguir para executar suas próprias verificações para algumas das condições na tabela anterior. Dessa forma, você pode agendar a atualização em um momento em que você sabe que o banco de dados está em um estado onde a atualização pode ser concluída com sucesso e rapidamente.
-
Você pode verificar se há transações XA abertas executando a instrução
XA RECOVER. Você pode então confirmar ou reverter as transações XA antes de iniciar a atualização. -
Você pode verificar se há instruções DDL executando uma instrução
SHOW PROCESSLISTe procurandoCREATE,DROP,ALTER,RENAMEeTRUNCATEna saída. Permita que todas as instruções DDL terminem antes de iniciar a atualização. -
Você pode verificar o número total de linhas não confirmadas consultando a tabela
INFORMATION_SCHEMA.INNODB_TRX. A tabela contém uma linha para cada transação. A colunaTRX_ROWS_MODIFIEDcontém o número de linhas modificadas ou inseridas pela transação. -
Você pode verificar o comprimento da lista de histórico do InnoDB executando a instrução
SHOW ENGINE INNODB STATUS SQLe procurando oHistory list lengthna saída. Você também pode verificar o valor diretamente executando a seguinte consulta:SELECT count FROM information_schema.innodb_metrics WHERE name = 'trx_rseg_history_len';O comprimento da lista de histórico corresponde à quantidade de informações desfeitas armazenadas pelo banco de dados para implementar o controle de simultaneidade de várias versões (MVCC).