Todos os produtos
Search
Central de documentação

PolarDB:Replicação assíncrona de bloqueios de metadados

Última atualização: Oct 30, 2026

PolarDB oferece suporte à replicação assíncrona de bloqueios de metadados para aumentar a eficiência na execução de operações de Linguagem de Definição de Dados (DDL). Este tópico descreve como utilizar o recurso de replicação assíncrona de bloqueios de metadados.

Pré-requisitos

  • Todos os clusters do PolarDB for MySQL nas versões 5.6 e 5.7, em qualquer versão de revisão, suportam este recurso.

  • Para clusters do PolarDB for MySQL 8.0, a versão de revisão deve ser 8.0.1.1.10 ou superior. Para verificar a versão do cluster, consulte {{XREF_0}}.

Visão geral

Ao executar operações DDL em um banco de dados, é necessário sincronizar as informações de bloqueio de metadados (MDL) entre o nó primário e os nós somente leitura para garantir a consistência das definições de dados. No entanto, as operações DDL no nó primário frequentemente retêm MDLs, o que obriga os nós somente leitura a aguardar por muito tempo antes de obterem as informações de MDL para sincronização. Enquanto essa sincronização não ocorre, os nós somente leitura interrompem a análise dos logs de redo. Esse comportamento impacta severamente a eficiência geral das operações DDL.

Com o recurso de replicação assíncrona de bloqueios de metadados, o PolarDB desacopla a sincronização de MDL da análise de logs de redo. Isso permite que os nós somente leitura continuem analisando e aplicando logs de redo mesmo enquanto aguardam a sincronização das informações de MDL.

Uso

  • Este recurso vem ativado por padrão. Nenhuma ação adicional é necessária.

  • Execute a seguinte instrução SQL em um nó somente leitura para obter informações de sincronização de MDL do nó alvo:

    Nota
    • Os clusters do PolarDB devem estar em uma das seguintes versões para que você tenha permissão para executar a instrução SQL anterior:

      • PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.24 ou superior

      • PolarDB for MySQL 5.7 com versão de revisão 5.7.1.0.20 ou superior

      • PolarDB for MySQL 5.6 com versão de revisão 5.6.1.0.33 ou superior

      • Caso a versão do seu cluster não atenda aos requisitos acima, recomendamos fazer o upgrade. Para mais informações, consulte {{XREF_1}}.

    • Para saber mais sobre como forçar a execução de uma consulta em um nó específico, consulte {{XREF_2}}.

    O resultado retornado será semelhante ao exemplo abaixo:

    A tabela exibe detalhes sobre as informações de MDL em sincronização. A coluna slot_name apresenta dados das tabelas relacionadas. Já a coluna slot_state indica o status atual da sincronização de MDL, podendo assumir um dos seguintes valores:

    • SLOT_NONE: Estado de inicialização.

    • SLOT_RESERVED: O nó somente leitura recebeu uma solicitação de aquisição de MDL e aguarda o sistema de escalonamento atribuir uma thread de trabalho para processá-la.

    • SLOT_ACQUIRING: O sistema já alocou recursos de thread de trabalho e o nó somente leitura está enviando a solicitação de MDL.

      Nota

      Se outra conexão estiver retendo o MDL necessário pelo nó somente leitura, o status de sincronização permanecerá neste estado.

    • SLOT_LOCKED: O MDL foi adquirido e está retido no nó somente leitura.

    • SLOT_RELEASING: O nó somente leitura recebeu uma solicitação de liberação de MDL e aguarda o sistema de escalonamento atribuir uma thread de trabalho para processá-la.

  • Utilize a instrução SQL a seguir para verificar o status das threads de trabalho responsáveis por sincronizar solicitações de MDL em um nó somente leitura:

    Nota
    • Os clusters do PolarDB devem estar em uma das seguintes versões para que você tenha permissão para executar a instrução SQL anterior:

      • PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.24 ou superior

      • PolarDB for MySQL 5.7 com versão de revisão 5.7.1.0.20 ou superior

      • PolarDB for MySQL 5.6 com versão de revisão 5.6.1.0.33 ou superior

      • Caso a versão do seu cluster não atenda aos requisitos acima, recomendamos fazer o upgrade. Para mais informações, consulte {{XREF_3}}.

    • Para saber mais sobre como forçar a execução de uma consulta em um nó específico, consulte {{XREF_4}}.

    O resultado retornado será semelhante ao exemplo abaixo:

    Quando a tabela INNODB_LOG_MDL_SLOT contém uma solicitação de sincronização de MDL com status SLOT_ACQUIRING, a tabela INNODB_LOG_MDL_THREAD exibirá uma thread de trabalho correspondente processando essa solicitação. Nessa situação, o valor de thr_state deixará de ser free, indicando uma provável espera por MDL no nó somente leitura. Verifique se o valor de thr_state é free para solucionar problemas de bloqueio de MDL.

    Fale conosco

    Em caso de dúvidas sobre operações DDL, {{XREF_5}}.