O recurso de alteração de dados padrão no Data Management Service (DMS) permite executar instruções SQL para modificar dados em um banco de dados. Execute instruções como INSERT, UPDATE, DELETE e TRUNCATE imediatamente ou de forma agendada. Este tópico descreve como enviar um ticket de alteração de dados padrão.
Visão geral da operação
-
Configurar e enviar um ticket de alteração de dados padrão
Selecione o banco de dados ou a instância que deseja alterar. Insira as instruções SQL para a alteração ou carregue um anexo SQL.
-
Pré-verificação
Durante a fase de pré-verificação, o DMS valida as instruções SQL enviadas. O sistema verifica se o tipo de SQL é válido para uma alteração de dados padrão e se você possui as permissões necessárias.
-
Aprovar o ticket
Na fase de aprovação, o DMS analisa se as instruções SQL afetarão o desempenho do banco de dados. O sistema também verifica se o usuário que enviou o ticket tem autorização para executar essas instruções.
-
Executar a alteração de dados
O sistema executa as instruções SQL enviadas para a alteração. Caso a alteração esteja incorreta ou seja necessário reverter as instruções SQL por motivos de negócios, crie um ticket de reversão no DMS. Isso ajuda a restaurar rapidamente os dados originais após a conclusão da alteração.
Pré-requisitos
O modo de controle da instância deve ser Stable Change ou Security Collaboration. Para mais informações, consulte Modos de controle.
Observações
Feche um ticket independentemente do status de aprovação. Essa ação evita a execução acidental de uma tarefa após a aprovação do ticket.
-
Gerencie alterações de dados no ambiente de staging por meio de tickets. Os tickets oferecem salvaguardas como backups de dados e verificações de contagem de linhas. Se uma operação não produzir o resultado esperado, restaure os dados rapidamente.
NotaCaso a aprovação de tickets possa afetar a eficiência do desenvolvimento, configure definições sem aprovação. Para mais informações, consulte Alteração de SQL.
-
Se você configurou bancos de dados lógicos, tabelas lógicas e algoritmos de roteamento, envie um único ticket para alterações de sharding. Não é necessário enviar tickets separados para cada banco de dados e tabela físicos.
Ao utilizar um algoritmo de roteamento com uma condição de atualização que inclua um campo de roteamento, o sistema roteia a instrução automaticamente para o banco de dados e a tabela físicos corretos para execução.
A instrução SQL é executada em cada shard sequencialmente nos seguintes cenários, o que pode aumentar o tempo de execução: nenhum algoritmo de roteamento configurado, a condição de alteração não inclui um campo de roteamento, ou o tipo/definição de estrutura do campo de roteamento está incorreto.
O DMS gera automaticamente um anexo de script de backup apenas antes de executar instruções
UPDATEouDELETE.
Procedimento
Etapa 1: Configurar e enviar o ticket
Faça login no DMS 5.0.
-
Passe o ponteiro sobre o ícone
no canto superior esquerdo do console do DMS e escolha .NotaSe estiver usando o console do DMS no modo normal, escolha na barra de navegação superior.
-
Na página Data Change Ticket Request, configure os parâmetros do ticket. A tabela a seguir descreve alguns desses parâmetros.
NotaO exemplo abaixo mostra como configurar parâmetros para uma instância no modo Security Collaboration. Os parâmetros podem variar se você selecionar uma instância no modo Stable Change.
O recurso para alterar instâncias de fonte de dados está sendo implementado gradualmente.
Item de configuração
Obrigatório
Descrição
Change Target
Sim
Selecione Database ou Data Source Instance.
NotaAtualmente, só é possível selecionar instâncias MySQL dos seguintes tipos para alterações de instância de fonte de dados: RDS MySQL, PolarDB for MySQL e AnalyticDB for MySQL.
Database ou Data Source Instance
Sim
Pesquise e selecione um banco de dados ou instância para o qual você tenha permissões de alteração.
NotaNo momento, é possível selecionar apenas uma instância para alteração de instância de fonte de dados.
Reason Category
Sim
Escolha um motivo para a alteração de dados a fim de facilitar a localização posterior.
NotaOs administradores podem configurar a lista de categorias de motivos na seção . Para mais informações, consulte Gerenciamento de configurações.
Business Background
Sim
Forneça uma descrição detalhada do motivo ou objetivo da alteração para reduzir a sobrecarga de comunicação.
Execution Method
Sim
Defina um método de execução para o ticket:
-
Após a aprovação, o solicitante executa a operação.
-
Execução automática após a aprovação.
-
Execução pelo último aprovador.
NotaAdministradores podem modificar a lista de métodos de execução na seção . Para mais informações, consulte Gerenciamento de configurações.
Affected Rows
Sim
Estime o número de linhas de dados que esta alteração afetará.
Change SQL
Sim
Escolha entre Text ou Attachment.
SQL Text
Sim
Este item de configuração aparece somente se você definir Change SQL como Text. Na caixa de texto SQL, insira as instruções SQL prontas para execução direta.
Nota-
Separe múltiplas instruções SQL com ponto e vírgula (;).
-
Se o alvo da alteração for uma instância, adicione o nome do banco de dados antes de cada nome de tabela nas instruções SQL. Utilize o formato
${dbName}.${tableName}. -
Ao enviar o ticket, o sistema verifica automaticamente a sintaxe do SQL. Se a sintaxe estiver incorreta, o envio será bloqueado.
Attachment
Sim
Este item de configuração aparece somente se você definir Change SQL como Attachment. Carregue o anexo SQL para a alteração.
NotaO anexo pode ser um arquivo .txt, .zip ou .sql. O tamanho máximo do arquivo é de 15 MB.
Rollback SQL
Não
Escolha entre Text ou Attachment.
NotaO DMS preenche automaticamente as informações de SQL de reversão ao criar um ticket de reversão apenas se você inserir o SQL de reversão ou carregar um arquivo de reversão. Caso contrário, insira as informações manualmente.
SQL Text
Não
Este item de configuração aparece somente se você definir Rollback SQL como Text. Insira as instruções SQL de reversão. O SQL de reversão é o script inverso do SQL de alteração.
Attachment
Não
Este item de configuração aparece somente se você definir Rollback SQL como Attachment. Clique em Upload File para carregar o anexo de SQL de reversão.
NotaO anexo pode ser um arquivo .txt, .zip ou .sql. O tamanho máximo do arquivo é de 15 MB.
Stakeholders
Não
Os stakeholders especificados podem visualizar o ticket e colaborar nele. Usuários que não são stakeholders não conseguem visualizar o ticket, exceto administradores e DBAs.
Ticket Attachment
Não
Carregue um anexo para fornecer informações adicionais sobre o ticket atual.
Clique em Submit Request.
Etapa 2: Pré-verificar o SQL
Após o envio do ticket, o sistema realiza automaticamente uma pré-verificação. Se a pré-verificação falhar, modifique as instruções SQL conforme a mensagem exibida e tente novamente.
Quando a pré-verificação for aprovada, o status de cada item de verificação (SQL Splitting, Type Check, Permission Check, SQL Review e Check Scanned Rows) será Passed. As Affected Rows também serão exibidas. O número real de linhas afetadas depende do comportamento de execução do SQL.
Etapa 3: Aprovar o ticket
Após a aprovação na pré-verificação, clique em Submit for Approval. Na caixa de diálogo Notice, clique em OK.
O aprovador no modelo de aprovação padrão para alterações de dados é um DBA. Para alterar o modelo de aprovação padrão, consulte Modificar o modelo de aprovação padrão.
A caixa de diálogo Notice exibe informações de validação, como o número de bancos de dados físicos, a quantidade de instruções SQL e o número estimado de linhas afetadas. Se o número de linhas afetadas verificado pelo sistema for diferente do número informado, uma mensagem de aviso em vermelho aparecerá. Confirme as informações antes de enviar o ticket.
Etapa 4: Executar a alteração
Sempre que possível, execute alterações fora dos horários de pico.
-
Após a aprovação do ticket, clique em Execute Change. Na caixa de diálogo Task Settings, defina os parâmetros de execução da tarefa e clique em Execute.
NotaSe, ao criar o ticket, você definiu Execution Method como Execute automatically after approval, o sistema ignora esta etapa.
Ao reiniciar uma tarefa pausada, o script retoma a execução do ponto onde foi interrompido.
Item de configuração
Descrição
Execution Policy
Selecione uma política de execução:
-
Execute Immediately: A tarefa inicia imediatamente após você clicar em Execute.
-
Scheduled Execution: Especifique um horário de início para a tarefa. Por exemplo, execute a tarefa às 00:00:00 de 22 de maio de 2024.
NotaO horário real de execução de uma tarefa agendada pode ter uma margem de erro de ±1 minuto.
Specify End Time
Defina 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 tarefas sejam executadas durante horários de pico, impactando as operações de negócios.
NotaO horário real de término da tarefa pode ter uma margem de erro de ±1 minuto.
Enable Global Transaction
Indique se deseja ativar transações globais. Este recurso está desativado por padrão.
-
Ativar: Se a execução falhar, todas as alterações serão revertidas. Aplica-se apenas a instruções DML, não a instruções DDL.
-
Desativar: As tarefas SQL são enviadas uma a uma. Se uma tarefa falhar, a execução é interrompida, mas nenhuma alteração é revertida.
Enable Backup
Indique se deseja ativar backups. Este recurso está ativado por padrão. Ao ativá-lo, utilize o arquivo de backup para restaurar dados rapidamente posteriormente.
Nota-
O backup de dados é suportado apenas na execução de instruções UPDATE e DELETE.
-
Não há suporte para backup de dados no MongoDB e Redis.
-
Ativar: Antes de executar instruções
UPDATEouDELETE, o sistema gera automaticamente um anexo de script de backup.-
Para bancos de dados MySQL ou MariaDB, uma instrução de backup
REPLACE INTOé gerada.NotaMySQL inclui: RDS MySQL, PolarDB for MySQL, PolarDB-X e outras fontes MySQL.
-
Para bancos de dados com motores diferentes de MySQL ou MariaDB, uma instrução de backup
INSERTé gerada.
-
-
Desativar: Nenhum anexo de backup é gerado.
Enable Primary/Standby Check
Ao ativar a verificação primária/standby para o banco de dados, garante-se a sincronização de dados em tempo real entre as instâncias primária e standby. Isso melhora a alta disponibilidade do banco de dados e a recuperação rápida de desastres.
Grayscale Type
Política para execução de instruções SQL em lotes.
-
No Grayscale: O DMS executa automaticamente todas as instruções SQL da tarefa.
-
Pause after the first SQL statement succeeds: Após a execução bem-sucedida da primeira instrução SQL, o DMS pausa automaticamente a execução. Para continuar, clique em Retry. As instruções SQL restantes serão executadas de uma vez, sem novas pausas.
-
Pause after each SQL statement succeeds: A execução é pausada após cada instrução SQL. Clique manualmente em Retry para executar a próxima instrução SQL.
NotaO módulo Security Rules, especificamente a seção SQL Execution Control, monitora a execução de tarefas SQL. Isso inclui mecanismos como tempo limite de bloqueio do banco de dados antes da execução do SQL, verificações de carga do banco de dados e políticas de espera após a execução do SQL. Para modificar as configurações padrão dos pontos de detecção, consulte Configurar controle de execução de SQL.
Após a execução bem-sucedida do ticket, na coluna Actions, clique em Details para visualizar detalhes como status da execução, número de execuções, quantidade de linhas afetadas, script executado e logs.
Com o ticket executado com sucesso, acesse a janela SQL do banco de dados alvo para verificar se a alteração de dados atende às suas expectativas.
-
Opcional: Crie um ticket de reversão para restaurar rapidamente os dados originais.
Caso a alteração de dados não atenda às expectativas, crie um ticket de reversão ou envie manualmente um ticket de alteração de dados padrão para restaurar rapidamente os dados originais. As etapas a seguir mostram como criar um ticket de reversão:
Na área Execution do ticket, clique em Generate Rollback Ticket à direita da tarefa alvo.
-
Selecione uma Source de reversão e clique em OK. Há suporte para as três fontes de reversão a seguir:
Texto de reversão: O texto de reversão inserido durante a configuração do ticket.
Anexo de reversão: O anexo de reversão carregado durante a configuração do ticket.
-
Arquivo de backup: O anexo de backup gerado durante a execução do ticket.
NotaPara restaurar os dados originais usando um arquivo de backup, ative os backups antes de executar a alteração.
-
(Opcional): Modifique o texto de reversão, o anexo ou o arquivo de backup conforme necessário.
Texto de reversão: Edite-o diretamente na caixa de texto SQL.
Anexo de reversão ou arquivo de backup: Baixe o anexo para o seu computador local, modifique-o e carregue-o novamente no ticket de reversão.
Após confirmar que as informações de reversão estão corretas, clique em Submit Request. O fluxo subsequente do ticket é o mesmo de um ticket de alteração de dados padrão.
-
Baixe o arquivo de backup.
Baixe o arquivo de backup para salvá-lo ou modificá-lo antes de carregá-lo no DMS.
-
Na coluna Actions, clique em Download Backup. O arquivo de backup contém as seguintes partes principais:
A instrução SQL original da alteração.
A instrução SQL de consulta para a alteração de dados.
O SQL de backup da alteração de dados.
Por exemplo:
/* [Database]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306[rds mysql] */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [BACKUP SQL]: SELECT * FROM t_order WHERE id = 10054 */ REPLACE INTO `t_order`(`id`,`product_id`,`gmt_create`,`gmt_modified`,`customer_id`,`price`,`status`,`province`) VALUES (10054,81,'2021-12-14 09:44:44','2021-12-14 09:44:44',71,63.45,'Success','Hangzhou'); -
Extraia a instrução de backup do arquivo de backup. Após confirmar que a instrução de backup está correta, envie um novo ticket de alteração de dados padrão para restaurar os dados conforme necessário.
NotaSe uma instrução
UPDATEfoi executada por engano e a instrução de backup é uma instruçãoINSERT, determine o método de recuperação por conta própria.
-
-
(Opcional) Verifique se a alteração atende às expectativas.
Na página de detalhes do ticket, na área Basic Information, passe o ponteiro do mouse sobre o nome do banco de dados e clique em Query.
Você será redirecionado para o SQL Console. Consulte os dados da tabela para verificar se atendem às suas expectativas.
Perguntas frequentes
-
P: Ao enviar uma alteração de dados no DMS, o envio falha com a mensagem de erro: "A topologia do banco de dados publicado XXX é inconsistente com a topologia do banco de dados de linha de base da alteração. Corrija a topologia e tente novamente."
R: Para uma alteração de banco de dados lógico, a estrutura de sharding do banco de dados de linha de base e do banco de dados de produção deve ser consistente. Por exemplo, se o banco de dados de linha de base tiver 8 shards e 256 tabelas, o banco de dados de produção também deverá ter 8 shards e 256 tabelas. Essa consistência é necessária porque o script para alterações online é gerado comparando o banco de dados de produção com o banco de dados de linha de base.
-
P: Ao criar um ticket de alteração de dados no DMS, não consigo encontrar o DB do Redis.
R: A lista suspensa de bancos de dados pode não mostrar todos os bancos disponíveis. Geralmente, ela exibe apenas os bancos de dados usados recentemente. Se um banco de dados não estiver na lista suspensa, pesquise por ele. Copie a string de conexão da janela do SQL Console e utilize-a na pesquisa.