O Data Transmission Service (DTS) sincroniza dados de um cluster PolarDB for MySQL para uma instância SelectDB, permitindo análises em tempo real dos seus dados operacionais. O SelectDB oferece respostas de consulta em menos de um segundo em grande escala, processa até 10.000 consultas pontuais por segundo e suporta análises complexas de alto throughput.
Pré-requisitos
Antes de começar, certifique-se de que possui:
Uma instância SelectDB com espaço de armazenamento disponível maior que o armazenamento usado pelo cluster PolarDB for MySQL de origem. Para crie uma instância, consulte Crie uma instância
O log binário ativado no cluster PolarDB for MySQL de origem, com o parâmetro
loose_polar_log_bindefinido comoON. Caso contrário, o DTS retornará mensagens de erro durante a pré-verificação e impedirá o início da tarefa. Consulte Enable binary logging e Modifique os parâmetrosO período de retenção de log binário definido como pelo menos 3 dias (7 dias recomendados) no cluster de origem. Em circunstâncias excepcionais, pode ocorrer inconsistência ou perda de dados. Certifique-se de configurar o período de retenção dos logs binários com base nos requisitos mencionados. Caso contrário, a confiabilidade ou o desempenho garantidos no SLA do DTS poderão ser comprometidos. Consulte Modifique o período de retenção
Contas de banco de dados com as permissões necessárias nos bancos de dados de origem e de destino. Consulte Permissions required for database accounts
Ativar o log binário em um cluster PolarDB for MySQL gera cobranças de armazenamento para o espaço de log binário.
Limitações
Banco de dados de origem
Tabelas com chaves primárias ou restrições de unicidade: todos os campos no destino devem ser exclusivos; caso contrário, o destino pode conter dados duplicados.
Tabelas sem chaves primárias ou restrições de unicidade: selecione Schema Synchronization para Synchronization Types e duplicate para Engine na etapa Configurations for Databases, Tables, and Columns.
Ao selecionar tabelas (e não bancos de dados inteiros) como objetos de sincronização, uma única tarefa suporta até 1.000 tabelas. Para mais de 1.000 tabelas, configure várias tarefas ou sincronize no nível do banco de dados.
Não execute operações de Data Definition Language (DDL) que alterem esquemas durante a sincronização inicial de esquema ou a sincronização inicial de dados completos. Durante a sincronização de dados completos, o DTS consulta o banco de dados de origem, gerando bloqueios de metadados que podem impedir operações DDL.
Alterações de dados não registradas em logs binários — como dados restaurados de um backup físico ou gerados por operações em cascata — não são sincronizadas com o destino. Se isso ocorrer, remova o banco de dados ou a tabela afetada dos objetos de sincronização e adicione-a novamente. Consulte Modifique os objetos de sincronização.
Objetos e operações não suportados
Os nós de somente leitura do cluster PolarDB for MySQL de origem não são sincronizados.
As tabelas externas do OSS do cluster de origem não são sincronizadas.
INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e FK não são sincronizados.
A alternância entre primário e secundário não é suportada durante a sincronização completa. Se ocorrer uma alternância, reconfigure a tarefa.
Não modifique DDL em várias colunas simultaneamente nem execute modificações DDL consecutivas na mesma tabela.
Alterações de DDL online usando pt-online-schema-change não são suportadas. Se tais alterações existirem na origem, pode ocorrer perda de dados ou falha na instância de sincronização.
A sincronização de dados do tipo VECTOR não é suportada.
Restrições de destino
Apenas os modelos Unique Key e Duplicate Key são suportados na instância SelectDB de destino.
Os nomes de bancos de dados e tabelas no SelectDB devem começar com uma letra. Use o recurso de mapeamento de nomes de objetos para renomear aqueles que não seguem essa regra.
Se o nome de um banco de dados, tabela ou coluna contiver caracteres chineses, use o recurso de mapeamento de nomes de objetos para renomeá-lo (por exemplo, renomeie para um equivalente em inglês). Caso contrário, a tarefa pode falhar.
Não crie clusters na instância SelectDB de destino durante a sincronização. Se a tarefa falhar por esse motivo, reinicie a instância de sincronização de dados para retomar.
Não adicione nós de backend à instância SelectDB de destino durante a sincronização. Se a tarefa falhar por esse motivo, reinicie a instância de sincronização de dados para retomar.
Especifique apenas o parâmetro
bucket_countna seção Selected Objects. O valor deve ser um número inteiro positivo. Padrão: auto.Em cenários de mesclagem de várias tabelas, nos quais dados de várias tabelas de origem são sincronizados para a mesma tabela de destino, todas as tabelas de origem devem ter o mesmo esquema. Esquemas incompatíveis podem causar inconsistência de dados ou falha na tarefa.
No PolarDB for MySQL, o
MemVARCHAR(M)representa o comprimento de caracteres. No SelectDB, oNemVARCHAR(N)representa o comprimento em bytes. Se não usar a sincronização de esquema do DTS, defina os comprimentos dos campos VARCHAR do SelectDB como quatro vezes os comprimentos dos campos VARCHAR correspondentes do PolarDB for MySQL.Se usar o DMS ou gh-ost para realizar alterações de DDL online na origem, o DTS sincronizará apenas o DDL original com o destino, o que pode causar bloqueios de tabela no destino.
Se outras fontes além do DTS gravarem dados no banco de dados de destino durante a sincronização, poderá ocorrer inconsistência de dados.
O DTS executa
CREATE DATABASE IF NOT EXISTS \test\`` no banco de dados de origem em intervalos programados para avançar a posição do log binário.Durante a sincronização incremental, o DTS usa uma estratégia em lote, gravando dados para cada objeto de sincronização no máximo uma vez a cada 5 segundos. Isso resulta em uma latência de sincronização normal de menos de 10 segundos. Para reduzir essa latência, ajuste o parâmetro
selectdb.reservoir.timeout.millisecondsno console do DTS. O intervalo permitido é de 1.000 a 10.000 milissegundos. Valores menores aumentam a frequência de gravação, o que pode aumentar a carga e o tempo de resposta (RT) do destino.Se uma instância do DTS falhar, o suporte do DTS tentará a recuperação em até 8 horas. Durante a recuperação, o sistema pode reiniciar a instância ou ajustar seus parâmetros. Para os parâmetros que podem ser modificados, consulte Modifique os parâmetros da instância.
Antes de sincronizar dados, avalie o desempenho de ambos os bancos de dados e execute a sincronização durante horários de menor pico. A sincronização inicial de dados completos executa operações INSERT simultâneas, aumentando a carga em ambos os bancos de dados e causando fragmentação de tabela no destino. Isso resulta em um tablespace maior do que na origem.
Modelo Unique Key
Todas as chaves exclusivas na tabela de destino devem existir na tabela de origem e estar incluídas nos objetos de sincronização. Caso contrário, pode ocorrer inconsistência de dados.
Modelo Duplicate Key
Dados duplicados podem aparecer no destino se ocorrer qualquer uma das seguintes situações:
Uma operação de nova tentativa em uma instância de sincronização de dados
Duas ou mais operações de Data Manipulation Language (DML) na mesma linha após o início da instância de sincronização
Para desduplicar dados, use as colunas adicionais _is_deleted, _version e _record_id. Para detalhes das colunas, consulte Additional column information.
Para tabelas do modelo Duplicate Key, o DTS converte instruções UPDATE e DELETE em instruções INSERT.
Faturamento
|
Tipo de sincronização |
Taxa de configuração da tarefa |
|
Sincronização de esquema e sincronização de dados completos |
Gratuito |
|
Sincronização incremental de dados |
Cobrado. Consulte Billing overview. |
Operações SQL que suportam sincronização incremental
|
Tipo de operação |
Instrução SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
A operação RENAME TABLE pode causar inconsistência de dados. Se renomear uma tabela durante a sincronização e apenas a tabela (e não o banco de dados inteiro) tiver sido selecionada como objeto de sincronização, o DTS não sincronizará os dados da tabela renomeada. Para evitar isso, selecione o banco de dados como objeto de sincronização e certifique-se de que tanto o banco de dados da tabela original quanto o da tabela renomeada estejam incluídos.
Permissões necessárias para contas de banco de dados
|
Banco de dados |
Permissões necessárias |
Como configurar |
|
Origem: PolarDB for MySQL |
Permissões de leitura e gravação nos objetos a serem sincronizados |
Crie e gerencie uma conta de banco de dados e Gerencie a senha de uma conta de banco de dados |
|
Destino: SelectDB |
USAGE_PRIV no cluster; SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV e DROP_PRIV no banco de dados |
Crie uma tarefa de sincronização de dados
Etapa 1: Acesse a página Data Synchronization
Use um dos seguintes métodos para abrir a página Data Synchronization.
Console do DTS
Faça logon no DTS console.
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região da instância de sincronização de dados.
Console do Data Management (DMS)
O caminho exato de navegação pode variar com base no modo e no layout do console do DMS. Consulte Simple mode e Customize the layout and style of the DMS console .
Faça logon no DMS console.
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 da instância.
Etapa 2: Configure os bancos de dados de origem e de destino
Clique em Create Task.
-
Configure o nome da tarefa e o banco de dados de origem.
Parâmetro
Descrição
Task Name
O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. O nome não precisa ser exclusivo.
Select Existing Connection (origem)
Se a instância de origem estiver registrada no DTS, selecione-a na lista. O DTS preenche automaticamente os parâmetros de conexão. Caso contrário, configure os parâmetros manualmente. Consulte Gerencie as conexões do banco de dados.
Database Type
Selecione PolarDB for MySQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região do cluster PolarDB for MySQL de origem.
Replicate Data Across Alibaba Cloud Accounts
Selecione No para sincronizar na mesma conta Alibaba Cloud.
PolarDB Cluster ID
Selecione o ID do cluster PolarDB for MySQL de origem.
Database Account
Insira a conta do cluster de origem. Consulte Permissions required for database accounts.
Database Password
Insira a senha da conta do banco de dados.
Encryption
Selecione um método de criptografia conforme necessário. Para criptografia Secure Sockets Layer (SSL), consulte Defina a criptografia SSL.
-
Configure o banco de dados de destino.
Parâmetro
Descrição
Select Existing Connection (destino)
Se a instância de destino estiver registrada no DTS, selecione-a na lista. O DTS preenche automaticamente os parâmetros de conexão. Caso contrário, configure os parâmetros manualmente. Consulte Gerencie as conexões do banco de dados.
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 sincronizar na mesma conta Alibaba Cloud.
Instance ID
Selecione o ID da instância SelectDB de destino.
Database Account
Insira a conta da instância de destino. Consulte Permissions required for database accounts.
Database Password
Insira a senha da conta do banco de dados.
-
Clique em Test Connectivity and Proceed.
Adicione os blocos CIDR do servidor DTS às configurações de segurança dos bancos de dados de origem e de destino. O DTS pode adicioná-los automaticamente, ou você pode fazer isso manualmente. Consulte Add DTS server IP addresses to a whitelist . Se o Access Method do banco de dados de origem ou de destino não for Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 3: Configure os objetos de sincronização
-
Na etapa Configure Objects, defina os seguintes parâmetros.
Parâmetro
Descrição
Synchronization Types
Por padrão, a opção Incremental Data Synchronization está selecionada. Selecione também Schema Synchronization e Full Data Synchronization. Após a pré-verificação, o DTS sincroniza os dados históricos da origem para o destino como base para a sincronização incremental subsequente.
ImportanteAo sincronizar do PolarDB for MySQL para o SelectDB, os tipos de dados são convertidos. Se não selecionar Schema Synchronization, crie previamente tabelas dos modelos Unique ou Duplicate com os esquemas apropriados na instância SelectDB de destino. Consulte Data type mappings, Additional column information e Data models.
Processing Mode of Conflicting Tables
Precheck and Report Errors: verifica se há tabelas com o mesmo nome no destino. Se existir um conflito, a pré-verificação relatará um erro e a tarefa não será iniciada. Para resolver conflitos sem excluir ou renomear a tabela de destino, use o recurso de mapeamento de nomes de objetos. Consulte Map database, table, and column names. Ignore Errors and Proceed: ignora a verificação.
AvisoIsso pode causar inconsistência de dados. Se os esquemas coincidirem, o DTS substituirá os registros de destino com a mesma chave primária ou exclusiva. Se os esquemas forem diferentes, a inicialização de dados poderá falhar ou o DTS sincronizará apenas algumas colunas.
Capitalization of Object Names in Destination Instance
Controla a capitalização dos nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especifique a capitalização dos nomes de objetos na instância de destino.
Source Objects
Selecione um ou mais objetos e clique no ícone
para movê-los para Selected Objects. Selecione bancos de dados ou tabelas.Selected Objects
Para renomear um objeto de sincronização, clique com o botão direito nele. Consulte Map the name of a single object. Se a opção Schema Synchronization estiver selecionada, clique com o botão direito em uma tabela em Selected Objects, defina Enable Parameter Settings como Yes, especifique um valor para
bucket_counte clique em OK. Para filtrar operações SQL ou linhas para um objeto específico, clique com o botão direito nele e configure as opções. Para filtragem de linhas, consulte Especifique as condições de filtro.NotaRenomear um objeto com o recurso de mapeamento de nomes de objetos pode causar falha na sincronização de objetos dependentes.
-
Clique em Next: Advanced Settings e configure os seguintes parâmetros.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o sistema agenda a tarefa para o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte What is a DTS dedicated cluster.
Retry Time for Failed Connections
O tempo durante o qual o DTS tenta reconectar se a conexão com o banco de dados de origem ou de destino falhar após o início da tarefa. Intervalo válido: 10 a 1.440 minutos. Padrão: 720 minutos. Defina um valor maior que 30 minutos. Se o DTS reconectar dentro do período de nova tentativa, a tarefa será retomada. Caso contrário, a tarefa falhará.
NotaSe várias tarefas compartilharem o mesmo banco de dados de origem ou de destino, o menor tempo de nova tentativa terá precedência. O DTS aplica cobranças durante o período de nova tentativa.
Retry Time for Other Issues
O tempo durante o qual o DTS tenta repetir operações DDL ou DML com falha. Intervalo válido: 1 a 1.440 minutos. Padrão: 10 minutos. Defina um valor maior que 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/gravação durante a sincronização de dados completos. Quando ativado, configure 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 se Full Data Synchronization estiver selecionada.
Enable Throttling for Incremental Data Synchronization
Limita o uso de recursos durante a sincronização incremental. Quando ativado, configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Selecione opcionalmente uma tag para identificar a instância.
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks
Controla se o DTS grava operações SQL da tabela de heartbeat no banco de dados de origem. Yes: não grava operações de heartbeat (a instância do DTS pode exibir latência). No: grava operações de heartbeat (pode afetar recursos como backup físico e clonagem do banco de dados de origem).
Configure ETL
Ativa o recurso de extração, transformação e carga (ETL). Consulte What is ETL? Yes: configure o ETL com instruções de processamento de dados. Consulte Configure ETL in a data migration or data synchronization task. No: ignore a configuração do ETL.
Monitoring and Alerting
Configura alertas para falhas de tarefa ou latência de sincronização que exceda um limiar. Yes: configure o limiar de alerta e as notificações. Consulte Configure monitoring and alerting when you create a DTS task. No: desativa os alertas.
-
(Opcional) Clique em Next: Configure Database and Table Fields. Na caixa de diálogo, especifique Primary Key Column, Distribution Key e Engine para as tabelas a serem sincronizadas.
Esta etapa está disponível apenas se Schema Synchronization estiver selecionada. Defina Definition Status como All para visualizar e modificar todas as tabelas. Selecione várias colunas para Primary Key Column . Use uma ou mais dessas colunas para Distribution Key . Para tabelas sem chaves primárias ou restrições de unicidade, selecione duplicate para Engine . Caso contrário, a tarefa pode falhar ou pode ocorrer perda de dados.
Etapa 4: Execute a pré-verificação
Clique em Next: Save Task Settings and Precheck. Para visualize os parâmetros da API para esta configuração de tarefa, passe o ponteiro do mouse sobre o botão e clique em Preview OpenAPI parameters.
-
Aguarde a conclusão da pré-verificação.
Se a pré-verificação falhar, clique em View Details ao lado de cada item com falha, resolva o problema e clique em Precheck Again.
-
Se um alerta for acionado:
Para alertas que não podem ser ignorados, clique em View Details, resolva o problema e refaça a pré-verificação.
Para alertas que podem ser ignorados, clique em Confirm Alert Details, clique em Ignore na caixa de diálogo, clique em OK e, em seguida, clique em Precheck Again. Ignorar um alerta pode causar inconsistência de dados.
A tarefa só será iniciada após ser aprovada na pré-verificação.
Etapa 5: Adquira e inicie a instância
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página buy, configure os seguintes parâmetros.
Parâmetro
Descrição
Billing Method
Subscription: pague antecipadamente por um período fixo. 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 as cobranças.
Resource Group Settings
O grupo de recursos para a instância. Padrão: default resource group. Consulte What is Resource Management?
Instance Class
Selecione uma classe com base nos seus requisitos de velocidade de sincronização. Consulte Instance classes of data synchronization instances.
Subscription Duration
Disponível apenas para o método de faturamento Subscription. Opções: 1 a 9 meses, 1 ano, 2 anos, 3 anos 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 na caixa de diálogo.
A tarefa aparecerá na lista de tarefas, onde você poderá monitorar seu progresso.
Mapeamentos de tipos de dados
Categoria | Tipo do PolarDB for MySQL | Tipo do SelectDB | Notas |
Numérico | TINYINT | TINYINT | |
TINYINT UNSIGNED | 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 | O atributo 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 | ||
YEAR[(4)] | INT | ||
String | CHAR, VARCHAR | VARCHAR | Para evitar perda de dados, o SelectDB converte os valores CHAR e VARCHAR(n) para VARCHAR(4*n). Se nenhum comprimento for especificado, o sistema usará o padrão VARCHAR(65533). Se o comprimento exceder 65.533, o valor será convertido para STRING. |
BINARY, VARBINARY | STRING | ||
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | ||
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | ||
ENUM | STRING | ||
SET | STRING | ||
JSON | STRING |
Informações adicionais da coluna
Ao sincronizar para uma tabela do modelo Duplicate Key, o DTS adiciona automaticamente as seguintes colunas ou exige que você as adicione manualmente.
|
Nome |
Tipo de dados |
Valor padrão |
Descrição |
|
|
Int |
0 |
Indica se a linha foi excluída. Operações INSERT e UPDATE definem este valor como 0. Operações DELETE definem este valor como 1. |
|
|
Bigint |
0 |
Para dados de sincronização completa: 0. Para dados de sincronização incremental: o timestamp UNIX (em segundos) do log binário de origem. |
|
|
Bigint |
0 |
Para dados de sincronização completa: 0. Para dados de sincronização incremental: o ID de registro exclusivo do log incremental. O valor é exclusivo e aumenta de forma monotônica. |