Todos os produtos
Search
Central de documentação

Data Management:Alterações de schema sem bloqueio

Última atualização: Jun 27, 2026

Instruções ALTER TABLE diretas bloqueiam a tabela durante toda a alteração e impedem leituras e gravações. O DDL online do MySQL reduz esse impacto na instância primária, mas ainda executa as alterações sequencialmente nas réplicas. Isso causa atraso de replicação que pode afetar cargas de trabalho em produção.

O Data Management Service (DMS) resolve essa questão com alterações de schema sem bloqueio. O DMS cria tabelas temporárias com o novo schema, replica os dados completos e os dados incrementais do binary log para essas tabelas e, em seguida, converte as tabelas temporárias em permanentes. Assim, suas tabelas permanecem disponíveis durante todo o processo.

Pré-requisitos

Antes de começar, certifique-se de que:

O exemplo a seguir utiliza uma instância do ApsaraDB RDS for MySQL em um ambiente de desenvolvimento simulado.

Como funciona

Uma alteração de schema sem bloqueio ocorre em três etapas:

  1. Criação de tabela temporária: o DMS cria uma ou mais tabelas temporárias com o novo schema.

  2. Sincronização de dados: o DMS copia todas as linhas existentes (dados completos) e aplica continuamente as alterações recebidas (dados incrementais do binary log) às tabelas temporárias até sincronizá-las com a tabela de source.

  3. Troca de tabela: o DMS substitui a tabela original pelas tabelas temporárias sincronizadas e exclui as tabelas temporárias.

Durante a execução de uma alteração de schema sem bloqueio, duas tabelas temporárias ficam visíveis no banco de dados. Após a conclusão da troca, ambas as tabelas temporárias são removidas.

Enviar e executar uma alteração de schema sem bloqueio

O exemplo a seguir altera o tipo de dados da coluna long_text_a na tabela big_table de varchar(1024) para text.

Etapa 1: Enviar um ticket (usuário comum)

  1. Faça login no console do DMS V5.0console do DMS V5.0console do DMS V5.0 como usuário comum.

  2. Na barra de navegação superior, escolha Database Development > Data Change > Lockless Change.

    No modo simples, passe o ponteiro sobre o ícone icon no canto superior esquerdo e escolha All functions > Database Development > Data Change > Lockless Change .
  3. Configure os parâmetros a seguir e clique em Submit. No campo SQL statements for change, insira:

    Parâmetro

    Descrição

    Database

    Obrigatório. Banco de dados a ser alterado. Neste exemplo, o banco de dados poc_dev no modo Secure Collaboration está selecionado.

    Reason category

    Obrigatório. Motivo da alteração, usado para localizar o ticket posteriormente.

    Reason Category (Obrigatório)

    Selecione um motivo para a alteração. Isso facilita a localização futura do ticket.

    Business background

    Obrigatório. Objetivo da alteração, para reduzir comunicações desnecessárias.

    Execution Method (Obrigatório)

    Selecione Last Approver Executes.

    Execution method

    Obrigatório. Define como o ticket será executado após a aprovação. Selecione Last Auditor Execute.

    Affected rows

    Obrigatório. Número estimado de linhas afetadas. Para obter a contagem exata, execute uma consulta COUNT no SQL Console antes de enviar.

    SQL statements for change

    Obrigatório. Instrução DDL a ser executada. Neste exemplo, a instrução altera o tipo de dados de long_text_a de varchar(1024) para text.

    SQL statements for rollback

    Opcional. SQL para reverter a alteração, se necessário.

    SQL Statements for Rollback (Opcional)

    Insira a instrução SQL para reverter a alteração. Esta é a operação inversa das SQL Statements for Change.

    Change stakeholder

    Opcional. Outros usuários que podem visualizar os detalhes do ticket e auxiliar no processo de aprovação. Usuários não listados não podem visualizar o ticket, exceto administradores do DMS e DBAs.

    Change Stakeholder (Opcional)

    Especifique as partes interessadas na alteração. Elas podem visualizar o ticket e colaborar. Outros usuários não podem visualizar o ticket, exceto administradores e DBAs.

    ALTER TABLE `big_table`
      MODIFY COLUMN `long_text_a` text NULL AFTER `name`;
  4. Na página Ticket Details, revise o ticket.

    O DMS executa automaticamente uma verificação prévia na instrução SQL. Essa verificação abrange a sintaxe do SQL, a conformidade do tipo de instrução com as regras de segurança, as permissões do solicitante e o número estimado de linhas a serem verificadas. Só é possível modificar os detalhes do ticket antes de enviá-lo para aprovação.
  5. Após a aprovação na verificação prévia, clique em Submit for Approval e, em seguida, clique em OK na caixa de diálogo de confirmação.

    Importante

    Após enviar o ticket para aprovação, não é mais possível modificar seus detalhes.

Etapa 2: Aprovar o ticket (administrador do DMS)

  1. Faça login no console do DMS V5.0console do DMS V5.0console do DMS V5.0 como administrador do DMS.

  2. Na página inicial, clique em Pending Tickets na seção My Tickets.

  3. Na página My Tickets, localize o ticket e clique em seu número na coluna Ticket Number.

  4. No painel Ticket Details, revise as informações da alteração e clique em Approve.

  5. Insira comentários e clique em Submit.

Etapa 3: Executar o ticket (usuário comum)

  1. Faça login no console do DMS V5.0console do DMS V5.0console do DMS V5.0 como usuário comum.

  2. Na seção Execute do painel Ticket Details, clique em Execute Change.

  3. Configure os parâmetros de execução e clique em Confirm Execution.

    O DMS inicia a tarefa imediatamente após você clicar em Confirm Execution .

    Parâmetro

    Descrição

    Padrão

    Execute strategy

    Define quando executar a tarefa. Running immediately inicia a tarefa assim que você confirma. Schedule executa a tarefa em um horário especificado.

    Running immediately

    Transaction control

    Determina se deve haver reversão em caso de falha. on: se uma instrução falhar, todas as instruções DML na mesma transação serão revertidas (instruções DDL não podem ser revertidas). off: as instruções são executadas uma por vez; se uma falhar, a transação é interrompida, mas as instruções já executadas não são revertidas.

    off

    Data backup

    Define se scripts de backup devem ser gerados. on: o DMS gera scripts INSERT para fazer backup das linhas afetadas por instruções UPDATE ou DELETE. off: nenhum script de backup é gerado.

    on

Monitorar o progresso e verificar o schema

  1. Como administrador do DMS, passe o ponteiro sobre o nome do banco de dados na seção Basic Information e clique em Query para abrir o SQL Console.

  2. No SQL Console, execute a seguinte instrução para listar todas as tabelas no banco de dados:

    Durante a execução de uma alteração de schema sem bloqueio, duas tabelas temporárias aparecem nos resultados.
    SHOW TABLES;
  3. Na barra de navegação superior, escolha O&M > Task.

    No modo simples, passe o ponteiro sobre o ícone 2023-01-28_15-57-17.png no canto superior esquerdo e escolha All functions > O&M > Task .
  4. Clique no número da tarefa para abrir a caixa de diálogo Execution details.

  5. Clique em Progress na coluna Operation para visualizar a mensagem Lock-Free structure change e monitorar o progresso em tempo real da alteração de schema sem bloqueio.

  6. Após a conclusão da tarefa, verifique o schema. A tabela big_table agora utiliza o novo schema e as tabelas temporárias foram removidas.