O recurso Online Copy DDL do PolarDB for MySQL reduz as interrupções nos negócios causadas por operações tradicionais de Copy DDL. Operações como MODIFY COLUMN ou a conversão entre tabelas padrão e particionadas mantêm bloqueios de metadados (MDL) durante toda a execução.
Contexto
Durante a execução padrão do Copy DDL, o MySQL mantém um bloqueio MDL-SNW (Shared No Write) que impede todas as operações de escrita (INSERT/UPDATE/DELETE) na tabela. Esse comportamento pode causar acúmulo de conexões e, em casos graves, levar ao colapso do sistema. O Online Copy DDL otimiza o mecanismo de bloqueio durante a fase de cópia de dados para permitir leituras e escritas simultâneas sem comprometer a consistência dos dados.
Escopo
Versão 8.0.2 e revisão 8.0.2.2.33.1 ou posterior do PolarDB for MySQL. Para confirmar a versão do cluster, consulte Consultar o número da versão.
O Online Copy DDL está em liberação gradual. Para ativá-lo, acesse o Quota Center, localize a cota pelo ID polarm_82_online_copy_ddl e clique em Request na coluna Operation. Informe o ID do cluster (por exemplo, pc-xxx).
Limitações
Operações suportadas:
Conversão entre tabelas padrão e tabelas particionadas.
Instruções
MODIFY COLUMN. Não há suporte para modificar a posição da coluna simultaneamente.
Operações ou objetos não suportados:
Tabelas com colunas do tipo JSON.
Tabelas com índices espaciais (SPATIAL INDEX).
Tabelas com índices secundários globais (GSI).
Tabelas particionadas híbridas.
Sessões que executaram
LOCK TABLESna tabela.Instruções DDL que especificam explicitamente
ALGORITHM=COPYcombinado comLOCK=SHAREDouLOCK=EXCLUSIVE.
Antes de executar uma operação DDL, utilize o comando EXPLAIN DDL para verificar se há suporte ao Online Copy DDL.
Uso
Ative o Online Copy DDL definindo o parâmetro loose_polar_support_online_copy_ddl_algorithm. Para instruções MODIFY COLUMN, ative também o parâmetro loose_polar_support_online_copy_ddl_algorithm_for_modify. Configure esses parâmetros conforme descrito em Definir parâmetros de cluster e parâmetros de nó.
|
Parameter |
Level |
Description |
|
|
Global |
Chave principal do Online Copy DDL.
|
|
|
Global |
Ativa o Online Copy DDL para operações
|
Método 1: Especificar explicitamente o algoritmo (Recomendado)
Especifique ALGORITHM=COPY, LOCK=NONE para forçar o uso do Online Copy DDL:
CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;
Se a instrução retornar ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED., a operação não suporta Online Copy DDL. Verifique se o parâmetro loose_polar_support_online_copy_ddl_algorithm está ativado e revise as limitações.
Método 2: Selecionar automaticamente o algoritmo ideal (Comportamento padrão)
Quando nenhum algoritmo é especificado ou quando se utiliza DEFAULT, o sistema seleciona automaticamente o método de execução mais adequado:
-- Method 1: Explicit DEFAULT
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;
-- Method 2: Omit completely (equivalent)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;
O sistema tenta executar o Online Copy DDL primeiro. Caso as condições necessárias não sejam atendidas, ele reverte para o Copy DDL tradicional (que bloqueia a tabela) para garantir a conclusão da operação DDL.