Use o Data Transmission service (DTS) para sincronizar continuamente os dados de uma instância do ApsaraDB RDS for MySQL para uma instância do PolarDB-X 1.0. Esse processo inclui a sincronização completa de dados e a sincronização incremental de dados (INSERT, UPDATE, DELETE).
Visão geral da tarefa: Para configurar uma tarefa de sincronização, conclua estas etapas em ordem:
Prepare a instância e as contas de destino (pré-requisitos)
Configure o log binário na origem
Para iniciar, crie a tarefa de sincronização no DTS ou DMS
Em seguida, execute a pré-verificação e adquira a instância
Pré-requisitos
Antes de começar, certifique-se de que possui:
Uma instância de destino do PolarDB-X 1.0 com espaço de armazenamento disponível superior ao espaço utilizado pela instância de origem do RDS MySQL. Ao criar a instância, defina a classe de armazenamento como RDS MySQL. Consulte crie uma instância do PolarDB-X 1.0.
Bancos de dados e tabelas previamente criados na instância de destino do PolarDB-X 1.0. A sincronização de schema não é suportada. O DTS não cria o schema de destino automaticamente. Consulte crie um banco de dados e Perform basic SQL operations.
Um conjunto de caracteres de origem diferente de utf8mb3. A seleção de dados utf8mb3 para sincronização incremental causa falha na tarefa.
Contas de banco de dados com as permissões necessárias. Consulte Permissions required for database accounts.
Log binário configurado no banco de dados de origem. Consulte Requisitos de log binário.
Requisitos de log binário
O DTS utiliza logs binários para capturar alterações incrementais. Os requisitos variam conforme a origem seja uma instância do ApsaraDB RDS for MySQL ou um banco de dados MySQL autogerenciado.
ApsaraDB RDS for MySQL
O log binário é ativado por padrão nas instâncias do ApsaraDB RDS for MySQL. Certifique-se de que:
O parâmetro
binlog_row_imageesteja definido comofull. Caso contrário, ocorre um erro de pré-verificação e a tarefa não poderá ser iniciada. Consulte Definir parâmetros da instância.Os logs binários locais sejam retidos por pelo menos 3 dias (recomenda-se 7 dias). Se os logs forem purgados antes de o DTS conseguir lê-los, a tarefa falhará. Em casos extremos, pode ocorrer perda ou inconsistência de dados. Tarefas que falham devido à retenção insuficiente de logs não são cobertas pelo SLA do DTS. Para definir o Retention Period dos logs binários locais, consulte exclua logs locais automaticamente.
As instâncias somente leitura do ApsaraDB RDS for MySQL 5.6 não registram logs de transação e não podem ser usadas como banco de dados de origem.
MySQL autogerenciado
Para um banco de dados MySQL autogerenciado, configure os seguintes parâmetros:
|
Parâmetro |
Valor obrigatório |
|
|
|
|
|
|
Retenha os logs binários por pelo menos 7 dias. Se os logs forem purgados antes de o DTS conseguir lê-los, a tarefa falhará. Problemas causados pela retenção insuficiente de logs não são cobertos pelo SLA do DTS.
Requisitos adicionais:
Arquitetura primária/primária: Para isso, ative o parâmetro
log_slave_updatespara que o DTS possa obter todos os logs binários de ambos os nós. Consulte Criar uma conta de banco de dados para um banco de dados MySQL autogerenciado e configurar o log binário.Amazon Aurora MySQL ou instâncias em modo cluster: Certifique-se de que o nome de domínio ou endereço IP configurado para a tarefa sempre aponte para o nó de leitura e gravação (RW). Caso contrário, a tarefa poderá não ser executada corretamente.
Permissões necessárias para contas de banco de dados
|
Banco de dados |
Permissões necessárias |
Como criar e autorizar |
|
ApsaraDB RDS for MySQL de origem |
Leitura e gravação |
|
|
PolarDB-X 1.0 de destino |
Leitura e gravação |
Se a conta do banco de dados de origem não tiver sido criada no console do ApsaraDB RDS for MySQL, certifique-se de que ela possua as permissões REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW e SELECT.
Faturamento
|
Tipo de sincronização |
Faturamento |
|
Sincronização completa de dados |
Gratuito |
|
Sincronização incremental de dados |
Cobrado. Consulte Billing overview. |
Limites e notas de uso
Limites do banco de dados de origem
O servidor onde o banco de dados de origem está implantado deve ter largura de banda de saída suficiente. A largura de banda insuficiente reduz a velocidade de sincronização.
As tabelas a serem sincronizadas devem ter uma chave primária ou uma restrição UNIQUE com valores de campo exclusivos. Tabelas sem essas restrições podem gerar dados duplicados no destino.
Somente tabelas podem ser selecionadas como objetos de sincronização.
Ao usar o mapeamento de nomes de objetos (como nomes de tabelas ou colunas), uma única tarefa suporta no máximo 1.000 tabelas. Para sincronizar mais de 1.000 tabelas com mapeamento de nomes, divida-as em várias tarefas.
A classe de armazenamento da instância do PolarDB-X 1.0 deve ser RDS MySQL (um RDS personalizado privado). O PolarDB MySQL não é suportado.
-
Não execute operações DDL durante a sincronização completa de dados, pois isso causa falha na tarefa.
Durante a fase de sincronização completa, o DTS consulta o banco de dados de origem e pode gerar bloqueios de metadados, o que pode impedir operações DDL na origem.
-
Alterações de dados provenientes de operações não registradas em logs binários não são sincronizadas. Isso inclui a recuperação de dados com backups físicos e operações em cascata.
Se isso ocorrer, remova o banco de dados ou a tabela afetada dos objetos de sincronização e adicione-a novamente, caso o seu negócio permita. Consulte Modificar objetos de sincronização .
-
Colunas invisíveis (MySQL 8.0.23 e posterior): Se os dados a serem sincronizados contiverem colunas invisíveis, o DTS não conseguirá obter os dados nessas colunas, o que pode causar perda de dados. Execute o seguinte comando para tornar as colunas invisíveis visíveis:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Tabelas sem chave primária geram automaticamente uma chave primária invisível, a qual também deve ser tornada visível. Consulte Colunas invisíveis e Chaves primárias invisíveis geradas.
Se a tabela de destino do PolarDB-X 1.0 tiver o particionamento automático ativado (
auto_partition=true), cada instrução DDL executada na origem poderá conter apenas umaalter_specification. Caso contrário, o DTS relatará um erro (TDDL-4998:Multi alter specifications when create GSI not support yet). Para executar uma instrução DDL que contenha vários itensalter_specification, divida cada um em uma instrução DDL separada e execute-os um por um. Para mais informações, consulte ALTER TABLE.
Outros limites
-
EncDB (always-confidential): A sincronização completa de dados não é suportada quando o recurso always-confidential (EncDB) está ativado na instância de origem do RDS MySQL.
Instâncias com Transparent Data Encryption (TDE) ativado suportam sincronização de schema, sincronização completa de dados e sincronização incremental de dados.
Se você executar operações DDL online que utilizem tabelas temporárias no banco de dados de origem (como mesclar várias tabelas), os dados poderão ser perdidos no banco de dados de destino ou a instância do DTS poderá falhar.
Não use ferramentas como pt-online-schema-change para executar operações DDL online em objetos em sincronização, pois isso causa falha na tarefa.
Gravar dados de outras origens no banco de dados de destino durante a sincronização pode causar inconsistência de dados.
Avalie o impacto de desempenho nos bancos de dados de origem e de destino antes de iniciar a sincronização. Execute tarefas de sincronização em horários de menor pico, quando possível. A sincronização completa de dados consome recursos de leitura e gravação em ambos os bancos de dados e pode aumentar a carga do servidor.
Após a conclusão da sincronização completa de dados, operações INSERT simultâneas podem causar fragmentação nas tabelas de destino. O tablespace utilizado no banco de dados de destino pode ser maior que o do banco de dados de origem.
Se uma instância do DTS falhar, a equipe de suporte tentará recuperá-la em até 8 horas. As operações de recuperação podem incluir a reinicialização da instância ou o ajuste de parâmetros da instância do DTS (não do banco de dados). Consulte Modificar parâmetros da instância.
Casos especiais para origens MySQL autogerenciadas
Se ocorrer um failover primário/secundário no banco de dados de origem durante a sincronização, a tarefa falhará.
-
A latência de sincronização é calculada pela diferença entre o timestamp atual e o timestamp do último registro de dados sincronizado. Se nenhuma operação DML for executada no banco de dados de origem por um longo período, a latência exibida poderá ser imprecisa. Execute uma operação DML na origem e atualize a leitura de latência.
Se você optar por sincronizar todo o banco de dados, crie uma tabela de heartbeat. O DTS atualiza ou grava na tabela de heartbeat a cada segundo para manter a leitura de latência precisa.
O DTS executa periodicamente
CREATE DATABASE IF NOT EXISTSno banco de dados de origem para avançar o offset do log binário.
Casos especiais para origens do ApsaraDB RDS for MySQL
Instâncias do ApsaraDB RDS for MySQL que não registram logs de transação, como as instâncias somente leitura do ApsaraDB RDS for MySQL 5.6, não podem ser usadas como banco de dados de origem.
O DTS executa periodicamente
CREATE DATABASE IF NOT EXISTSno banco de dados de origem para avançar o offset do log binário.
Criar uma tarefa de sincronização de dados
Etapa 1: Acessar a página Data Synchronization
Utilize o console do DTS ou o console do DMS.
Console do DTS
Primeiro, acesse o console do DTS.console do DTS
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde reside a instância de sincronização.
Console do DMS
Nota
As operações reais podem variar conforme o modo e o layout do console do DMS. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS.
Acesse o console do DMS.console do DMS
Na barra de navegação superior, passe o ponteiro do mouse sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa à direita de Data Synchronization Tasks, selecione a região onde reside a instância de sincronização.
Etapa 2: Configurar bancos de dados de origem e de destino
Clique em Create Task.
Na página de configuração da tarefa, defina os seguintes parâmetros.
Geral
|
Parâmetro |
Descrição |
|
Task Name |
O DTS gera um nome de tarefa automaticamente. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser exclusivo. |
Banco de dados de origem
|
Parâmetro |
Valor |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada na lista suspensa. O DTS preenche os parâmetros restantes automaticamente. Se a instância não estiver registrada no DTS, configure os parâmetros abaixo manualmente. No console do DMS, selecione a instância na lista Select a DMS database instance. |
|
Database Type |
MySQL |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
A região onde reside a instância de origem do ApsaraDB RDS for MySQL |
|
Replicate Data Across Alibaba Cloud Accounts |
No (para instâncias na conta atual) |
|
RDS Instance ID |
O ID da instância de origem do ApsaraDB RDS for MySQL |
|
Database Account |
A conta da instância de origem. Consulte Permissions required for database accounts. |
|
Database Password |
A senha da conta do banco de dados |
|
Encryption |
Non-encrypted ou SSL-encrypted. Para usar a criptografia ssl, ative-a na instância RDS antes de configurar esta tarefa. Consulte Usar um certificado de cloud para ativar a criptografia SSL. |
Banco de dados de destino
|
Parâmetro |
Valor |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada na lista suspensa. O DTS preenche os parâmetros restantes automaticamente. Se a instância não estiver registrada no DTS, configure os parâmetros abaixo manualmente. No console do DMS, selecione a instância na lista Select a DMS database instance. |
|
Database Type |
PolarDB-X 1.0 |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
A região onde reside a instância de destino do PolarDB-X 1.0 |
|
Instance ID |
O ID da instância de destino do PolarDB-X 1.0 |
|
Database Account |
A conta da instância de destino. Consulte Permissions required for database accounts. |
|
Database Password |
A senha da conta do banco de dados |
Clique em Test Connectivity and Proceed.
Certifique-se de que os blocos CIDR dos servidores DTS estejam adicionados às configurações de segurança dos bancos de dados de origem e de destino. Consulte Adicionar endereços IP do servidor DTS a uma lista de permissões . Se o banco de dados de origem ou de destino for autogerenciado e não acessado por meio de Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 3: Configurar objetos de sincronização
Na etapa Configure Objects, defina os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Synchronization Types |
Incremental Data Synchronization é selecionada por padrão. Opcionalmente, selecione Full Data Synchronization. Não é possível selecionar Schema Synchronization. Crie o schema de destino manualmente antes de iniciar a tarefa. Após a aprovação da pré-verificação, o DTS sincroniza os dados históricos da origem como base para a sincronização incremental. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: verifica se o destino contém tabelas com nomes idênticos aos da origem. Se existirem nomes idênticos, um erro será retornado durante a pré-verificação e a tarefa não poderá ser iniciada. Para lidar com conflitos de nomenclatura, use o mapeamento de nomes de objetos para renomear as tabelas sincronizadas. Consulte Mapear nomes de objetos. <br><br> Ignore Errors and Proceed: ignora a pré-verificação de nomes de tabelas idênticos. > Aviso
Esta opção pode causar inconsistência de dados. Se a origem e o destino compartilharem o mesmo schema e um registro no destino tiver a mesma chave primária ou exclusiva de um registro da origem, o DTS retém o registro de destino existente durante a sincronização completa e o sobrescreve durante a sincronização incremental. Se os schemas forem diferentes, a inicialização poderá falhar ou apenas colunas parciais serão sincronizadas. |
|
Capitalization of object names in destination instance |
Controla a capitalização (caixa alta/baixa) de nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especificar a capitalização de nomes de objetos na instância de destino. |
|
Source Objects |
Selecione uma ou mais tabelas e clique no ícone de seta para movê-las para Selected Objects. Somente tabelas podem ser selecionadas como objetos de sincronização. |
|
Selected Objects |
Clique com o botão direito em um objeto para renomeá-lo (objeto único) ou clique em Batch Edit para renomear vários objetos de uma vez. Consulte Mapear nomes de objetos. Clique com o botão direito em uma tabela para selecionar operações DML específicas para sincronização incremental (INSERT, UPDATE, DELETE) ou para definir condições de filtro WHERE. Consulte Filter task data with an SQL condition. Se você usar o mapeamento de nomes de objetos, outros objetos dependentes do objeto mapeado poderão falhar na sincronização. |
Clique em Next: Advanced Settings.
Etapa 4: Definir configurações avançadas
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda a tarefa no cluster compartilhado. Adquira um cluster dedicado para melhorar a estabilidade da sincronização. Consulte O que é um cluster dedicado do DTS. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após uma falha de conexão. Valores válidos: 10 a 1.440 minutos. Padrão: 720 minutos. Recomendamos definir este parâmetro com um valor superior a 30 minutos. Se o DTS reconectar dentro dessa janela, a tarefa será retomada; caso contrário, ela falhará. Se várias tarefas compartilharem o mesmo banco de dados de origem ou de destino, o menor tempo de nova tentativa entre essas tarefas entrará em vigor. O DTS cobra pela instância durante o período de nova tentativa. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente após falhas de operação DDL ou DML. Valores válidos: 1 a 1.440 minutos. Padrão: 10 minutos. Recomendamos definir este parâmetro com um valor superior a 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limita o uso de recursos de leitura e gravação durante a sincronização completa de dados. Configure QPS (queries per second) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Synchronization estiver selecionada. |
|
Enable Throttling for Incremental Data Synchronization |
Limita o uso de recursos durante a sincronização incremental. Configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Uma tag opcional para identificar a instância pelo tipo de ambiente. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Controla se o DTS grava operações SQL de heartbeat no banco de dados de origem. Yesconfigurações de notificação de alerta: não grava SQL de heartbeat; a instância do DTS pode exibir um valor de latência. No: grava SQL de heartbeat; isso pode afetar recursos como backup físico e clonagem do banco de dados de origem. |
|
Configure ETL |
Indica se deve ativar o recurso de extração, transformação e carga (ETL). Yes: configure o ETL inserindo instruções de processamento de dados no editor de código. Consulte Configurar ETL em uma tarefa de migração de dados ou sincronização de dados. No: o ETL fica desativado. Consulte O que é ETL? |
|
Monitoring and Alerting |
Indica se deve configurar alertas. Yes: defina o limiar de alerta e os contatos de notificação. O DTS os notificará se a tarefa falhar ou se a latência exceder o limiar. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS. No: não há alertas. |
Etapa 5: Executar a pré-verificação
Agora, salve as configurações clicando em Next: Save Task Settings and Precheck.
Para a API, visualize os parâmetros desta configuração de tarefa passando o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
A tarefa executa uma pré-verificação antes de iniciar. Ela só poderá ser iniciada após a aprovação da pré-verificação.
Se algum item falhar, clique em View Details ao lado do item com falha, corrija o problema e clique em Precheck Again.
Se um item acionar um alerta que possa ser ignorado, clique em Confirm Alert Details e, em seguida, clique em Ignore > OK > Precheck Again. Ignorar itens de alerta pode causar inconsistência de dados.
Etapa 6: Adquirir a instância
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
Na página de compra, configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Billing Method |
Subscription: pague antecipadamente por uma duração fixa. Mais econômico para uso a longo prazo. Pay-as-you-go (pagamento conforme o uso): cobrado por hora, adequado para uso a curto prazo. Libere a instância quando não for mais necessária para interromper o faturamento. |
|
Resource Group Settings |
O grupo de recursos para a instância de sincronização. Padrão: default resource group. Consulte O que é o Resource Management? |
|
Instance Class |
A camada de desempenho da sincronização. Consulte Classes de instância de instâncias de sincronização de dados. |
|
Subscription Duration |
Disponível apenas para o método de faturamento Subscription. Valores válidos: 1 a 9 meses, ou 1, 2, 3 ou 5 anos. |
Leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK e confirme a operação.
A tarefa aparecerá na lista de tarefas. Monitore o progresso por lá.