Use o Data Transmission Service (DTS) para replicar dados de uma instância PolarDB-X 2.0 para uma instância ApsaraDB for SelectDB. O DTS gerencia a sincronização de schema, o carregamento completo de dados e a replicação incremental contínua via binlog.
Este recurso está em fase de testes grayscale e está disponível apenas para alguns usuários.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância PolarDB-X 2.0 de origem
Uma instância de destino SelectDB instance
As permissões necessárias em ambas as instâncias (consulte Permissões necessárias para contas de banco de dados)
Faturamento
|
Tipo de sincronização |
Taxa |
|
Sincronização de schema e sincronização completa de dados |
Gratuita |
|
Sincronização incremental de dados |
Cobrada. Consulte Visão geral do faturamento. |
Limitações
Requisitos do banco de dados de origem
Largura de banda: O servidor que hospeda o banco de dados de origem deve ter pelo menos 100 Mbit/s de largura de banda de saída. Larguras de banda inferiores reduzem a velocidade de sincronização.
Tipo de instância: Instâncias somente leitura do PolarDB-X 2.0 Enterprise Edition não são suportadas.
Objetos não suportados: Não é possível sincronizar INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e FK. Objetos TABLEGROUP e bancos de dados ou schemas com atributo Locality também não são suportados.
Nomes de tabelas: Tabelas com letras maiúsculas nos nomes não podem ser sincronizadas.
Requisito de chave primária: As tabelas devem ter uma restrição PRIMARY KEY ou UNIQUE com todos os campos únicos. Sem isso, o destino pode conter registros duplicados.
Limite de tabelas por tarefa: Se você selecionar tabelas individuais como objetos de sincronização e precisar renomear tabelas ou colunas no destino, uma única tarefa suporta até 5.000 tabelas. Para mais de 5.000 tabelas, divida-as em múltiplas tarefas ou sincronize no nível do banco de dados.
Binary logging: O binary logging vem ativado por padrão no PolarDB-X 2.0. Verifique se o parâmetro
binlog_row_imageestá definido comofull. Caso contrário, a pré-verificação falhará e a tarefa não poderá ser iniciada. Consulte Configurações de parâmetros.DDL durante a sincronização: Não execute instruções DDL que alterem schemas de banco de dados ou tabelas durante a sincronização de schema ou a sincronização completa de dados. Essa ação causa falha na tarefa.
Alterações de rede: Se a configuração de rede da instância PolarDB-X 2.0 mudar, a instância de sincronização pode apresentar latência por um período.
Requisitos do banco de dados de destino
Tipos de tabela suportados: Os dados só podem ser sincronizados para tabelas com engine Unique ou Duplicate no SelectDB.
Tabelas com engine Unique: Todas as chaves únicas na tabela de destino devem existir na tabela de origem e estar incluídas nos objetos a serem sincronizados. Chaves ausentes causam inconsistência de dados.
Tabelas com engine Duplicate: Registros duplicados podem surgir ao tentar novamente ou reiniciar a instância de sincronização, ou quando operações DML modificam o mesmo registro mais de uma vez após o início da tarefa. O DTS converte instruções UPDATE e DELETE em instruções INSERT para tabelas com engine Duplicate. Use as colunas adicionais (
_is_deleted,_version,_record_id) para deduplicar. Consulte Colunas adicionais para tabelas com engine Duplicate.Não crie clusters durante a sincronização: Criar clusters na instância SelectDB de destino enquanto a tarefa está em execução causa falha na tarefa. Em caso de falha, reinicie a instância de sincronização para retomar.
Não adicione nós de backend durante a sincronização: Adicionar nós de backend ao banco de dados SelectDB durante a sincronização causa falha na tarefa. Reinicie a instância de sincronização para retomar.
Requisitos de nomenclatura: O SelectDB suporta apenas nomes de bancos de dados e tabelas que começam com uma letra. Use o recurso de mapeamento de nomes de objetos para renomear qualquer banco de dados ou tabela cujo nome comece com um caractere não alfabético.
Nomes com caracteres chineses: Se um nome de banco de dados, tabela ou coluna contiver caracteres chineses, use o mapeamento de nomes de objetos para renomeá-lo antes de sincronizar. Caso contrário, a tarefa pode falhar.
Diferença no comprimento VARCHAR: No PolarDB-X 2.0,
VARCHAR(M)define o comprimento em caracteres. No SelectDB,VARCHAR(N)define o comprimento em bytes. Se não estiver usando a sincronização de schema do DTS, defina o comprimento do campo VARCHAR no SelectDB como 4 vezes o comprimento correspondente no PolarDB-X 2.0 para evitar perda de dados.Restrições de DDL: Não é possível modificar operações DDL em múltiplas colunas simultaneamente nem executar operações DDL consecutivas na mesma tabela.
Considerações operacionais
Escritas de heartbeat: O DTS executa periodicamente
CREATE DATABASE IF NOT EXISTSno banco de dados de origem para gravar dados de heartbeat que avançam a posição do binlog. Se você definir Whether to delete SQL operations on heartbeat tables of forward and reverse tasks como Yes (ou se a conta de origem não tiver a permissão CREATE DATABASE) e nenhuma operação DML for executada na origem por um longo período, a latência de sincronização exibida pode ser imprecisa. Para atualizar a exibição da latência, execute uma operação DML no banco de dados de origem.Parâmetro
bucket_count: Na seção Selected Objects, especifique o parâmetrobucket_count. O valor deve ser um número inteiro positivo. O padrão éauto.Carga na sincronização completa de dados: Durante a sincronização completa, o DTS utiliza recursos de leitura e escrita tanto no banco de dados de origem quanto no de destino, o que aumenta a carga do servidor. Execute a tarefa em horários de baixa demanda, quando o uso de CPU em ambos os bancos de dados estiver abaixo de 30%.
Fragmentação de armazenamento: Operações INSERT concorrentes durante a inicialização completa podem deixar fragmentos nas tabelas de destino. Após a inicialização completa, as tabelas de destino podem ocupar mais espaço de armazenamento do que suas equivalentes na origem.
Escritas externas durante a sincronização: Se fontes além do DTS gravarem no banco de dados de destino durante a sincronização, pode ocorrer inconsistência de dados e a tarefa pode falhar.
Recuperação de falha na tarefa: Se uma tarefa do DTS falhar, o suporte do DTS tentará restaurá-la dentro de 8 horas. Durante a restauração, a tarefa pode ser reiniciada e seus parâmetros podem ser modificados. Parâmetros do banco de dados não são alterados. Os parâmetros passíveis de modificação incluem, mas não se limitam àqueles listados na seção "Modify instance parameters" do tópico Modify the parameters of a DTS instance.
Operações SQL suportadas para sincronização incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN; DROP COLUMN; DROP TABLE; TRUNCATE TABLE; RENAME TABLE |
RENAME TABLE pode causar inconsistência de dados se você selecionou a tabela (em vez de seu banco de dados pai) como objeto de sincronização. Se uma tabela for renomeada e seu novo banco de dados pai não estiver incluído nos objetos sincronizados, a sincronização dos dados dessa tabela será interrompida. Para evitar isso, selecione o banco de dados como objeto de sincronização em vez de tabelas individuais.
Permissões necessárias para contas de banco de dados
|
Banco de dados |
Permissões necessárias |
Referências |
|
PolarDB-X 2.0 de origem |
REPLICATION SLAVE, REPLICATION CLIENT, SELECT (nos objetos a serem sincronizados) |
Manage database accounts e Account permission issues during data synchronization |
|
SelectDB de destino |
Usage_priv (acesso ao cluster), Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv |
Criar uma tarefa de sincronização de dados
Este procedimento consiste em sete etapas:
Acesse a página Data Synchronization.
Configure os bancos de dados de origem e de destino.
Selecione os objetos a serem sincronizados.
Configure as definições avançadas.
(Opcional) Configure os campos de banco de dados e tabelas.
Execute a pré-verificação.
Adquira a instância.
Etapa 1: Acessar a página Data Synchronization
Use o console do DTS ou o console do DMS.
Console do DTS:
Faça login no console do DTS.
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde a tarefa de sincronização de dados está localizada.
Console do DMS:
As etapas exatas podem variar conforme o modo e o layout do seu console DMS. Consulte Simple mode e Customize the layout and style of the DMS console .
Faça login no console do DMS.
Na barra de navegação superior, passe o ponteiro sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa à direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização de dados está localizada.
Etapa 2: Configurar os bancos de dados de origem e de destino
Clique em Create Task.
-
Configure os parâmetros descritos na tabela a seguir.
Seção Parâmetro Descrição N/A Task Name Um nome descritivo para esta tarefa do DTS. O DTS gera um nome padrão. O nome não precisa ser único. Source Database Select Existing Connection Selecione uma instância de banco de dados registrada para preencher automaticamente os parâmetros de conexão ou configure a conexão manualmente. Database Type Selecione PolarDB-X 2.0. Access Method Selecione Alibaba Cloud Instance. Instance Region Selecione a região da instância PolarDB-X 2.0 de origem. Replicate Data Across Alibaba Cloud Accounts Selecione No para usar uma instância na conta atual da Alibaba Cloud. Instance ID Selecione o ID da instância PolarDB-X 2.0 de origem. Database Account Insira a conta do banco de dados de origem. Para as permissões necessárias, consulte Permissões necessárias para contas de banco de dados. Database Password Insira a senha da conta do banco de dados de origem. Destination Database Select Existing Connection Selecione uma instância de banco de dados registrada para preencher automaticamente os parâmetros de conexão ou configure a conexão manualmente. Database Type Selecione SelectDB. Access Method Selecione Alibaba Cloud Instance. Instance Region Selecione a região da instância SelectDB de destino. Replicate Data Across Alibaba Cloud Accounts Selecione No para usar uma instância na conta atual da Alibaba Cloud. Instance ID Selecione o ID da instância SelectDB de destino. Database Account Insira a conta do banco de dados de destino. Para as permissões necessárias, consulte Permissões necessárias para contas de banco de dados. Database Password Insira a senha da conta do banco de dados de destino. -
Clique em Test Connectivity and Proceed.
Adicione os blocos CIDR dos servidores DTS às configurações de segurança dos bancos de dados de origem e de destino. Isso pode ocorrer automaticamente ou talvez seja necessário adicioná-los manualmente. Consulte Add the CIDR blocks of DTS servers .
Etapa 3: Selecionar objetos para sincronização
Na etapa Configure Objects, configure os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
| Synchronization Types | Selecione Schema Synchronization, Full Data Synchronization e Incremental Data Synchronization. Incremental Data Synchronization vem selecionado por padrão. A sincronização completa de dados carrega os dados existentes na origem para o destino antes do início da sincronização incremental. Importante
Se você não selecionar Schema Synchronization, crie manualmente as tabelas de modelo Unique ou Duplicate na instância SelectDB de destino antes de iniciar a tarefa. Consulte Data type mapping, Colunas adicionais para tabelas com engine Duplicate e Data model. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: A pré-verificação falha se o destino contiver tabelas com os mesmos nomes das tabelas de origem. Esta é a opção padrão segura. Se existirem nomes de tabelas idênticos que não possam ser excluídos ou renomeados no destino, use o recurso de mapeamento de nomes de objetos para renomeá-los. Consulte Map object names. Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas idênticos. Aviso
Isso pode causar inconsistência de dados. Durante a sincronização completa, registros com valores de chave primária ou única correspondentes são ignorados; o registro existente no destino é mantido. Durante a sincronização incremental, registros correspondentes sobrescrevem os do destino. Se os schemas diferirem, a inicialização pode falhar ou apenas algumas colunas serão sincronizadas. |
| Capitalization of Object Names in Destination Instance | Controla o uso de maiúsculas e minúsculas nos nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Specify the capitalization of object names in the destination instance. |
| Source Objects | Selecione bancos de dados ou tabelas na seção Source Objects e clique no ícone |
| Selected Objects | Clique com o botão direito em um objeto para renomeá-lo, filtrar linhas com condições WHERE ou selecionar operações SQL específicas para sincronizar. Se você selecionou Schema Synchronization, clique com o botão direito em uma tabela, ative Parameter Settings, defina bucket_count como um número inteiro positivo e clique em OK. Nota
Renomear um objeto com o recurso de mapeamento de nomes pode fazer com que objetos dependentes falhem na sincronização. Consulte Specify filter conditions. |
Etapa 4: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os seguintes parâmetros:
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS usa o cluster compartilhado. Para maior estabilidade, adquira e selecione um cluster dedicado. Consulte What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após falhas antes de marcar a tarefa como falha. Valores válidos: 10–1440 minutos. Padrão: 720. Recomendamos definir este parâmetro com um valor superior a 30. Se várias tarefas compartilharem a mesma origem ou destino, o menor tempo de nova tentativa tem precedência. O DTS cobra pela instância durante as novas tentativas. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta reexecutar operações DDL ou DML com falha antes de marcar a tarefa como falha. Valores válidos: 1–1440 minutos. Padrão: 10. Recomendamos definir este parâmetro com um valor superior a 10. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite a carga de leitura/escrita na origem e no destino durante a sincronização completa de dados definindo Queries per second (QPS) 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 selecionado. |
|
Enable Throttling for Incremental Data Synchronization |
Limite a carga durante a sincronização incremental definindo RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yes: O DTS não grava operações de heartbeat no banco de dados de origem. A latência de sincronização exibida pode ser imprecisa se não houver atividade DML na origem por um longo período. No: O DTS grava operações de heartbeat, o que pode afetar o backup físico e a clonagem do banco de dados de origem. |
|
Environment Tag |
Uma tag opcional para identificar a instância do DTS. |
|
Configure ETL |
Yes: Configure o processamento de extração, transformação e carga (ETL) com instruções de processamento de dados. Consulte Configure ETL in a data migration or data synchronization task. No: Pule a configuração de ETL. |
|
Monitoring and Alerting |
Yes: Configure limiares de alerta e destinatários de notificações para falhas de tarefa ou picos de latência. Consulte Configure monitoring and alerting when you create a DTS task. No: Sem alertas. |
Etapa 5: (Opcional) Configurar campos de banco de dados e tabelas
Clique em Next: Configure Database and Table Fields para especificar como o DTS mapeia as estruturas das tabelas de origem para o destino.
Esta etapa está disponível apenas se Schema Synchronization estiver selecionado. Defina Definition Status como All para visualizar e editar todas as tabelas.
|
Parâmetro |
Descrição |
|
Primary Key Column |
Selecione uma ou mais colunas como chave primária no destino. |
|
Distribution Key |
Selecione uma ou mais colunas dentre as colunas de chave primária como chave de distribuição. |
|
Engine |
Selecione a engine da tabela de destino: Unique ou Duplicate. Se a tabela de origem não tiver chave primária ou restrição UNIQUE, selecione duplicate. Usar a engine incorreta pode causar falha na tarefa ou resultar em perda de dados. |
Etapa 6: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API desta configuração, passe o mouse sobre o botão e clique em Preview OpenAPI parameters antes de prosseguir.
O DTS executa uma pré-verificação antes do início da tarefa. Se a pré-verificação falhar:
Clique em View Details ao lado de um item com falha, corrija o problema relatado e clique em Precheck Again.
Se um item gerar um alerta que possa ser ignorado, clique em Confirm Alert Details, depois em Ignore, em seguida em OK e finalmente em Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Etapa 7: Adquirir a instância
Aguarde até que Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página buy, configure os seguintes parâmetros:
Seção Parâmetro Descrição New Instance Class Billing Method Subscription: Pagamento antecipado por um prazo fixo. Mais econômico para uso de longo prazo. Pay-as-you-go: Faturamento por hora. Libere a instância quando não for mais necessária para interromper as cobranças. Resource Group Settings O grupo de recursos para esta instância. Padrão: default resource group. Consulte What is Resource Management? Instance Class A velocidade de sincronização varia conforme a classe da instância. Consulte Instance classes of data synchronization instances. Subscription Duration Disponível apenas para o método de faturamento Subscription. Valores válidos: 1–9 meses, 1 ano, 2 anos, 3 anos ou 5 anos. Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
A tarefa aparecerá na lista de tarefas. Monitore o progresso dela nesse local.
Mapeamento de tipos de dados
O DTS converte automaticamente os tipos de dados do PolarDB-X 2.0 para tipos compatíveis do SelectDB durante a sincronização de schema. Revise os mapeamentos antes de sincronizar para identificar colunas que exigem ajustes de schema.
| Categoria | Tipo PolarDB-X 2.0 | Tipo SelectDB | Observações |
|---|---|---|---|
| Numérico | TINYINT | TINYINT | |
| TINYINT UNSIGNED | SMALLINT | O intervalo sem sinal excede TINYINT; promovido para SMALLINT. | |
| SMALLINT | SMALLINT | ||
| SMALLINT UNSIGNED | INT | ||
| MEDIUMINT | INT | ||
| MEDIUMINT UNSIGNED | BIGINT | ||
| INT | INT | ||
| INT UNSIGNED | BIGINT | ||
| BIGINT | BIGINT | ||
| BIGINT UNSIGNED | LARGEINT | ||
| BIT(M) | INT | ||
| Decimal | DECIMAL | DECIMAL | zerofill não é suportado. |
| NUMERIC | DECIMAL | ||
| FLOAT | FLOAT | ||
| DOUBLE | DOUBLE | ||
| BOOL / BOOLEAN | BOOLEAN | ||
| Data e hora | DATE | DATEV2 | |
| DATETIME[(fsp)] | DATETIMEV2 | ||
| TIMESTAMP[(fsp)] | DATETIMEV2 | ||
| TIME[(fsp)] | VARCHAR | O SelectDB não possui o tipo TIME; armazenado como string. | |
| YEAR[(4)] | INT | ||
| String | CHAR, VARCHAR | VARCHAR | Convertido para VARCHAR(4xn) para evitar perda de dados, pois o PolarDB-X 2.0 conta caracteres enquanto o SelectDB conta bytes. Se nenhum comprimento for especificado, o padrão é VARCHAR(65533). Se o comprimento convertido exceder 65533, o tipo torna-se STRING. |
| BINARY, VARBINARY | STRING | ||
| TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | ||
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | ||
| ENUM | STRING | ||
| SET | STRING | ||
| JSON | STRING |
Colunas adicionais para tabelas com engine Duplicate
O DTS adiciona automaticamente as seguintes colunas às tabelas com engine Duplicate no destino. Se você criou a tabela de destino manualmente (sem usar a sincronização de schema do DTS), adicione estas colunas antes de iniciar a tarefa.
|
Coluna |
Tipo de dado |
Padrão |
Descrição |
|
|
INT |
0 |
Indica se o registro foi excluído. |
|
|
BIGINT |
0 |
Timestamp da versão. |
|
|
BIGINT |
0 |
Identificador único do registro. |
Use essas colunas para identificar e remover registros duplicados quando a deduplicação for necessária.