Para evitar problemas de bloqueio de tabela ao alterar o schema de uma tabela de banco de dados, o Data Management (DMS) oferece o recurso de alteração de schema sem bloqueio. Esse recurso ajuda a prevenir interrupções nos negócios causadas por bloqueios de tabela e latência de replicação entre instâncias primárias e secundárias durante operações nativas de Data Definition Language (DDL) online. Este tópico descreve como realizar uma alteração de schema sem bloqueio enviando um ticket de alteração sem bloqueio.
Pré-requisitos
-
O tipo de banco de dados é RDS for MySQL, PolarDB for MySQL, MyBase for MySQL ou outra source MySQL.
NotaOutras sources referem-se a bancos de dados de outros provedores de cloud ou bancos de dados autogerenciados.
O mecanismo do banco de dados é InnoDB, RocksDB ou X-Engine.
-
O log binário está ativado para o banco de dados.
NotaPara o PolarDB for MySQL, o log binário é desativado por padrão. Para mais informações, consulte Ativar log binário.
O formato do log binário deve ser ROW. Se o banco de dados usava anteriormente o formato MIXED, altere o formato para ROW. Em seguida, reinicie o servidor de banco de dados ou encerre todas as conexões antigas antes de realizar uma alteração de schema sem bloqueio no DMS.
-
o modo de controle da instância deve ser Stable Change ou Security Collaboration. Para mais informações, consulte Visualize control modes.
A alteração de schema sem bloqueio é ative for the instance.
Observações
-
Use uma conta de banco de dados com permissões de leitura/gravação ou uma conta de banco de dados com altos privilégios. Se a conta atual do banco de dados não tiver permissões suficientes, execute uma das seguintes operações:
-
Conceda permissões à conta do banco de dados. Para mais informações, consulte Gerencie database accounts and permissions.
NotaConceda a permissão ALL PRIVILEGES ou as seguintes permissões de leitura/gravação à conta do banco de dados:
ALTER, CREATE, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, TRIGGER, UPDATE, REPLICATION CLIENT e REPLICATION SLAVE.
Altere a conta do banco de dados. Para mais informações, consulte Edite instance information.
-
Certifique-se de que o banco de dados tenha espaço em disco suficiente. O sistema cria uma tabela temporária no banco de dados de destino para copiar os dados. Garanta que o espaço em disco disponível seja maior que o dobro do tamanho da tabela de destino. O espaço em disco insuficiente pode causar o bloqueio da instância. Para mais informações, consulte Database performance.
-
A tabela de destino deve ter uma chave primária ou uma chave única. Durante uma alteração de schema sem bloqueio, a chave primária ou única é usada para a cópia segmentada de dados completos e atualizações incrementais subsequentes.
NotaSe a tabela de destino tiver apenas uma chave primária ou apenas uma chave única, a atualização da chave durante a alteração do schema causará a falha da tarefa.
O nome da tabela de destino não pode exceder 56 caracteres.
O recurso de alteração de schema sem bloqueio no DMS não é compatível com PolarDB-X (incluindo PolarDB-X 1.0 e PolarDB-X 2.0), RDS for PostgreSQL ou outros bancos de dados não MySQL.
Para modificar o schema da tabela, use a sintaxe ALTER TABLE. Sintaxes como CREATE INDEX não são compatíveis.
Para instâncias do PolarDB, o tempo de bloqueio final na tabela original pode ser muito maior que o tempo limite de bloqueio de troca de tabela. Isso ocorre porque transações de longa execução em nós somente leitura podem afetar o nó primário após a aquisição de um bloqueio. Isso impede a conclusão do DDL no nó primário e pode resultar em bloqueios de tabela prolongados. Para evitar isso, modifique parameters.
Procedimento
As etapas a seguir usam uma instância no modo Security Collaboration como exemplo.
Faça login no DMS 5.0.
-
Na barra de navegação superior, escolha .
NotaSe você usar o console do DMS no modo simples, passe o ponteiro sobre o ícone
no canto superior esquerdo do console e escolha . -
Configure o ticket de alteração sem bloqueio. A tabela a seguir descreve alguns dos parâmetros.
Para mais informações, consulte Procedure.
Parâmetro
Descrição
Database
Pesquise e selecione um ou mais bancos de dados de destino.
Minhas permissões: Pesquise e selecione apenas os bancos de dados para os quais você tem permissões de alteração.
Todos: Pesquise e selecione todos os bancos de dados, exceto aqueles com controle de acesso a metadados ativado.
NotaSe você não tiver permissões de alteração para o banco de dados de destino, escolha na barra de menu superior. Na página Permission Ticket, clique em para solicitar as permissões necessárias.
Execution Method
Selecione um método de execução para o ticket:
-
Após a aprovação, o remetente executa a operação.
-
Executar automaticamente após a aprovação.
-
Executar pelo último aprovador.
NotaOs administradores podem modificar a lista de métodos de execução na seção . Para mais informações, consulte Configuration management.
Affected Rows
O número estimado de linhas de dados afetadas por esta atualização.
Change SQL
Insira instruções DDL, como
ALTER TABLEouOPTIMIZE.NotaSe você inserir instruções de Data Manipulation Language (DML), estará realizando uma tarefa de alteração de dados sem bloqueio. Para mais informações, consulte DML lockless change.
-
Clique em Submit Ticket.
O sistema realiza automaticamente uma pré-verificação de SQL. Se a pré-verificação falhar, clique em Modify SQL para modificar as instruções SQL com base no motivo da falha e, em seguida, envie o ticket novamente.
Após a aprovação do ticket, acesse a seção Execution na página de detalhes do ticket e clique em Execute Change.
-
Configure os parâmetros de execução da tarefa.
Item de configuração
Descrição
Execution Strategy
Running immediately: A opção padrão. A tarefa é executada imediatamente após você clicar em Confirm Execution.
Schedule: Selecione um horário de início para a tarefa. Após clicar em Confirm Execution, a tarefa é executada no horário especificado.
NotaO tempo de execução real de uma tarefa agendada pode ter uma margem de erro de ±1 minuto.
Specify End Time
Especifique um horário de término para a tarefa. Se a tarefa não for concluída até o horário especificado, o sistema interrompe a execução das tarefas SQL restantes. Isso evita que as tarefas sejam executadas durante os horários de pico e afetem as operações do negócio.
NotaO horário de término real da tarefa pode ter uma margem de erro de ±1 minuto.
Primary/Secondary Node Check
Ativar esta verificação garante a sincronização de dados em tempo real entre as instâncias primárias e secundárias, alta disponibilidade e recuperação rápida de falhas.
Canary Release Type
A política para executar instruções SQL em lotes.
No Canary Release: O DMS executa automaticamente todas as instruções SQL na tarefa.
Suspend after Executing the First SQL Statement: Após a execução bem-sucedida da primeira instrução SQL, o DMS pausa automaticamente a tarefa. Para continuar, clique em Retry. As instruções SQL restantes são então executadas de uma só vez, sem mais pausas.
Suspend after Executing a SQL Statement: A tarefa pausa automaticamente após a execução de cada instrução SQL. Clique manualmente em Retry para executar a próxima instrução SQL.
-
Clique em Confirm Execution.
Enquanto a tarefa do DMS estiver em execução, você poderá pausá-la a qualquer momento. Quando uma tarefa pausada é reiniciada, ela recomeça do início.
Na seção Execution, visualize o status de execução da tarefa, as configurações da tarefa, os detalhes e os logs de agendamento.
Visualize também o progresso da alteração sem bloqueio em . Para mais informações, consulte Visualize the progress of a lockless change.
Após ativar a alteração de schema sem bloqueio para uma instância, o método sem bloqueio também é priorizado para os seguintes tipos de tickets de alteração de schema e tarefas executadas na instância: