Resolução de falhas de operação de banco de dados causadas por bloqueios de metadados no RDS for MySQL
O RDS for MySQL usa o bloqueio de metadados para gerenciar o acesso simultâneo a objetos de banco de dados e garantir a consistência dos dados. Os bloqueios de metadados foram introduzidos desde o MySQL 5.5. Um bloqueio de metadados em uma tabela impede que quaisquer dados sejam lidos ou gravados, resultando no bloqueio de instruções SQL. Você pode usar Data Admin Service (DAS) para resolver esse problema.
Procedimento
- Faça logon no console de gerenciamento.
- Clique em no canto superior esquerdo e selecione uma região e um projeto.
- Clique em no canto superior esquerdo da página e escolha Databases > Relational Database Service.
- Na página Instances, localize a instância de BD e clique em Log In na coluna Operation.
Como alternativa, clique no nome da instância na página Instances. Na página Basic Information exibida, clique em Log In no canto superior direito.
- Na página de logon exibida, insira o nome de usuário e a senha e clique em Log In.
- Na barra de menu superior, escolha SQL Operations > SQL Query.
- Execute a seguinte instrução SQL na janela de SQL para exibir os estados de todos os threads do banco de dados:
show full processlist
Figura 1 Resultado da execução
- Verifique se um grande número de bloqueios de metadados da tabela Waiting for table metadata lock na coluna State, o que indicaria que as instruções SQL estão sendo bloqueadas. Localize as sessões nas operações da tabela na coluna Info e registre os valores na coluna Id.
- Execute o seguinte comando na janela SQL para desbloquear o bloqueio de metadados:
kill Id
Figura 2 Resultado da execução