Use DTS, Flink CDC, catalog ou DataWorks para migrar dados de fontes MySQL (como MySQL autogerenciado, ApsaraDB RDS for MySQL e PolarDB for MySQL) para o ApsaraDB for SelectDB. Escolha o método mais adequado com base no volume de dados e no seu caso de uso.
Comparação dos métodos de migração
DTS, DataWorks, Flink CDC e catalog permitem migrar dados do MySQL para o ApsaraDB for SelectDB, mas possuem capacidades diferentes. Selecione a opção que melhor se adapta ao seu cenário.
|
Método |
Migração de dados históricos |
Sincronização incremental de dados |
Migração de schema |
Migração de banco de dados |
Sincronização de DDL |
Verificação de dados |
|
DTS |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
|
DataWorks |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
❌ |
|
Flink CDC |
✔️ |
✔️ |
✔️ |
✔️ |
✔️ |
❌ |
|
catalog |
✔️ |
❌ |
❌ |
❌ |
❌ |
❌ |
As seções a seguir descrevem as etapas básicas de cada método. Para obter detalhes, consulte a documentação específica de cada um.
Pré-requisitos
-
Garanta que a instância MySQL e a instância SelectDB tenham conectividade de rede.
A instância MySQL e a instância SelectDB devem estar na mesma VPC. Caso contrário, resolva primeiro o problema de conectividade de rede. Para instruções, consulte How do I resolve network connectivity issues between an ApsaraDB for SelectDB instance and a data source?
Adicione o endereço IP da instância MySQL à lista de permissões de endereços IP do SelectDB. Para mais informações, consulte Configure an IP address whitelist.
-
Se a sua instância MySQL possuir uma lista de permissões de endereços IP, adicione o bloco CIDR de IP da VPC da instância SelectDB à lista de permissões de endereços IP do MySQL.
Para obter o intervalo de IPs da VPC onde reside sua instância SelectDB, consulte How do I find the IP CIDR block of the VPC where my ApsaraDB for SelectDB instance is located?
Para obter o endereço IP público da sua instância SelectDB, use o comando
pingno endpoint público do SelectDB.
Migrar dados com o DTS
O DTS oferece suporte à migração de dados históricos e à sincronização incremental de dados do MySQL para o ApsaraDB for SelectDB, com recursos como migração de bancos de dados e tabelas, sincronização de DDL e verificação de dados. O exemplo a seguir usa uma instância ApsaraDB RDS for MySQL. Para mais informações, consulte Use DTS to import data.
Procedimento
Faça login no console do ApsaraDB for SelectDB.
No canto superior esquerdo, selecione a região onde sua instância está localizada.
Na página Instances, clique em Instance ID desejado para acessar a página Instance Details.
-
No painel de navegação à esquerda, clique em Data Pipeline e selecione a aba Data Synchronization.
NotaA sincronização de dados do DTS combina a migração de dados históricos para transferências únicas com a sincronização incremental para atualizações em tempo real.
Clique em Create Synchronization Task e configure os bancos de dados de origem e destino.
Após concluir a configuração, clique em Test Connection and Proceed na parte inferior da página.
Configure os objetos da tarefa e as configurações avançadas.
Se você selecionar objetos no nível de banco de dados, o DTS não sincronizará dados de tabelas criadas após o início da tarefa. Caso planeje adicionar tabelas durante a sincronização, selecione os objetos no nível de tabela. Posteriormente, é possível alterar a seleção usando Modify Synchronized Objects.
Ao selecionar objetos no nível de tabela e precisar editá-los, como mapear nomes de tabelas ou colunas, uma única tarefa de sincronização suporta no máximo 1.000 tabelas. Se esse limite for excedido, um erro será reportado ao enviar a tarefa. Nesse caso, divida as tabelas a serem sincronizadas em lotes e configure múltiplas tarefas ou configure uma tarefa de sincronização no nível de banco de dados.
-
Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto dentro da caixa Selected Objects. Para mais informações sobre como renomear objetos, consulte Map a single database, table, or column.
-
Para alterar em lote os nomes de vários objetos de sincronização na instância de destino, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Map databases, tables, and columns in a batch.
Para selecionar as operações SQL a serem sincronizadas no nível de banco de dados ou tabela, clique com o botão direito no objeto a ser sincronizado na caixa Selected Objects e selecione as operações SQL desejadas na caixa de diálogo exibida. Para uma lista de operações suportadas, consulte SQL operations that support incremental synchronization.
Para filtrar dados usando uma cláusula WHERE, clique com o botão direito na tabela a ser sincronizada na caixa Selected Objects e defina a condição de filtro na caixa de diálogo exibida. Para mais informações, consulte Set filter conditions.
Se você usar o recurso de mapeamento de nomes de objetos, outros objetos dependentes do objeto remapeado podem falhar na sincronização.
Opcional: Após concluir as configurações anteriores, clique em Next: Configure Database and Table Fields para definir a Primary Key Column, a Distribution Key e o Engine das tabelas de destino.
Esta etapa está disponível apenas quando você seleciona Synchronization Types como Schema Synchronization durante a configuração dos objetos da tarefa. Defina o Definition Status como All e modifique as configurações.
É possível selecionar várias colunas para formar uma Primary Key Column composta. Selecione obrigatoriamente uma ou mais colunas da Primary Key Column como Distribution Key. Para o Engine, apenas Unique é suportado.
Salve a tarefa e execute a pré-verificação. Quando a Precheck Success Rate atingir 100%, clique em Next: Purchase.
Na página Purchase, selecione o método de faturamento e a especificação de link para a instância de sincronização de dados. Leia e selecione os Data Transmission Service (Pay-As-You-Go) Service Terms. Clique em Purchase and Start para iniciar a tarefa de sincronização. Visualize o progresso da tarefa na página de sincronização de dados.
Categoria | Configuração | Descrição |
Informações da Tarefa | Task Name | O DTS gera automaticamente um nome para a tarefa. Recomendamos especificar um nome descritivo para facilitar a identificação. O nome não precisa ser único. |
Banco de Dados de Origem | Database Type | Selecione MySQL. |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | Selecione a região onde a instância de origem ApsaraDB RDS for MySQL está localizada. | |
RDS Instance ID | Selecione o ID da instância de origem ApsaraDB RDS for MySQL. Exemplo: rm-2z3m****. | |
Database Account | Insira a conta do banco de dados da instância de origem ApsaraDB RDS for MySQL. Para as permissões necessárias, consulte Permissions required for database accounts. | |
Database Password | Insira a senha correspondente à conta do banco de dados. | |
Encryption | Selecione Non-encrypted ou SSL-encrypted conforme necessário. Se você selecionar SSL-encrypted, será necessário ativar a criptografia SSL para a instância RDS for MySQL antecipadamente. Para mais informações, consulte Use a cloud certificate to quickly enable SSL encryption. | |
Banco de Dados de Destino | Database Type | Selecione SelectDB. |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | Selecione a região onde a instância SelectDB de destino reside. | |
Instance ID | Selecione o ID da instância SelectDB de destino. | |
Database Account | Insira a conta do banco de dados da instância SelectDB de destino. Para as permissões necessárias, consulte Permissions required for database accounts. | |
Database Password | Insira a senha correspondente à conta do banco de dados. |
Configuração | Descrição |
Synchronization Types | A opção Incremental Data Synchronization vem selecionada. Por padrão, também é necessário selecionar Schema Synchronization e Full Data Synchronization. Após a conclusão da pré-verificação, o DTS executa uma sincronização completa dos dados dos objetos selecionados da instância de origem para o cluster de destino. Isso serve como linha de base para a subsequente sincronização incremental de dados. Importante Os tipos de dados são convertidos durante a sincronização do MySQL para o SelectDB. Se você não selecionar Schema Synchronization, crie previamente uma tabela com o schema correspondente usando o modelo Unique Key na instância SelectDB de destino. Para mais informações, consulte Data type mappings e Data model. |
Source Objects | Na caixa Source Objects, clique nos objetos que deseja sincronizar e, em seguida, clique em Importante |
Selected Objects | Nota |
Migrar dados com o DataWorks
O DataWorks Data Integration permite sincronizar dados do MySQL para o ApsaraDB for SelectDB. Para mais informações, consulte Import data by using DataWorks.
Não há suporte para escrita em campos dos tipos de dados BITMAP, HLL (HyperLogLog) ou QUANTILE_STATE.
Adicionar fontes de dados
Ao desenvolver uma tarefa de sincronização de dados, crie uma fonte de dados MySQL e uma fonte de dados SelectDB no DataWorks.
Crie uma fonte de dados MySQL. Para mais informações, consulte MySQL data source.
-
Crie uma fonte de dados SelectDB. Para mais informações, consulte Data source management. A tabela a seguir descreve alguns parâmetros de configuração da fonte de dados SelectDB.
Parâmetro
Descrição
Data Source Name
Nome da fonte de dados.
MySQL Connection URL
Insira a string de conexão JDBC
jdbc:mysql://<ip>:<port>/<dbname>.Obtenha o VPC Endpoint (ou Public Endpoint) e a MySQL Port na página Instance Details > Network Information no console do ApsaraDB for SelectDB.
Exemplo:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_dbHTTP Connection URL
Insira o endpoint do protocolo HTTP no formato
<ip>:<port>.Obtenha o VPC Endpoint (ou Public Endpoint) e a HTTP Port na página Instance Details > Network Information no console do ApsaraDB for SelectDB.
Exemplo:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080Username
Insira o nome de usuário da instância ApsaraDB for SelectDB.
Password
Insira a senha do usuário especificado da instância ApsaraDB for SelectDB.
Configurar a sincronização de dados
Para configurar uma tarefa de migração de dados, consulte os seguintes documentos:
Migrar dados com Flink CDC
O Flink oferece três métodos para migrar dados do MySQL para o SelectDB: Flink SQL, Flink CDC e DataStream. O Flink CDC oferece suporte à migração de dados históricos, sincronização incremental de dados, migração de bancos de dados e tabelas, além de sincronização de DDL. O exemplo a seguir usa o Flink CDC para sincronizar dados do MySQL para o ApsaraDB for SelectDB. Para mais informações, consulte Use Flink to import data.
Procedimento
Preparar o ambiente
Configure um ambiente Flink. Este exemplo usa um ambiente standalone do Flink 1.16.
-
Baixe e descompacte o arquivo flink-1.16.3-bin-scala_2.12.tgz. Se esta versão não estiver disponível, baixe outra. Para mais versões, consulte Apache Flink.
wget https://archive.apache.org/dist/flink/flink-1.16.3/flink-1.16.3-bin-scala_2.12.tgz tar -zxvf flink-1.16.3-bin-scala_2.12.tgz -
Acesse o diretório FLINK_HOME/lib e baixe os arquivos flink-sql-connector-mysql-cdc-2.4.2 e flink-doris-connector-1.16-1.5.2.
cd flink-1.16.3 cd lib/ wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar wget https://repo.maven.apache.org/maven2/org/apache/doris/flink-doris-connector-1.16/1.5.2/flink-doris-connector-1.16-1.5.2.jar -
Inicie o cluster Flink Standalone.
bin/start-cluster.sh Crie uma instância ApsaraDB for SelectDB. Para mais informações, consulte Create an instance.
Conecte-se à instância ApsaraDB for SelectDB via protocolo MySQL. Para mais informações, consulte Connect to an instance.
-
Crie um banco de dados de teste e uma tabela de teste.
-
Crie um banco de dados de teste.
CREATE DATABASE test_db; -
Crie uma tabela de teste.
USE test_db; CREATE TABLE employees ( emp_no int NOT NULL, birth_date date, first_name varchar(20), last_name varchar(20), gender char(2), hire_date date ) UNIQUE KEY(`emp_no`) DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;
-
Enviar uma tarefa Flink CDC
Use a sintaxe abaixo para enviar uma tarefa Flink CDC:
<FLINK_HOME>/bin/flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
lib/flink-doris-connector-1.16-1.5.2.jar \
mysql-sync-database \
--database test_db \
--including-tables "tbl1|test.*" \
--mysql-conf hostname=127.0.0.1 \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf database-name=mysql_db \
--sink-conf fenodes=selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080 \
--sink-conf username=admin \
--sink-conf password=****
|
Parâmetro |
Descrição |
||
|
execution.checkpointing.interval |
Intervalo de checkpoint do Flink, que afeta a frequência de sincronização de dados. Recomenda-se o valor de 10s. |
||
|
parallelism.default |
Paralelismo da tarefa Flink. Aumente o paralelismo para melhorar o throughput da sincronização de dados. |
||
|
database |
Nome do banco de dados de destino no SelectDB. |
||
|
including-tables |
Tabelas MySQL a serem sincronizadas. Use uma barra vertical ( |
) para separar múltiplas tabelas. Expressões regulares são suportadas. Por exemplo, |
tbl.*` especifica que a table1 e todas as tabelas cujos nomes começam com tbl serão sincronizadas. |
|
excluding-tables |
Tabelas que não devem ser sincronizadas. O método de configuração é o mesmo do parâmetro including-tables. |
||
|
mysql-conf |
Configuração da fonte MySQL CDC. Para mais informações, consulte MySQL CDC Connector. Os parâmetros |
||
|
sink-conf |
Todas as configurações para o sink do Doris. Para mais informações, consulte Use Flink to import data. |
||
|
table-conf |
Itens de configuração para uma tabela SelectDB. Correspondem ao conteúdo dentro da cláusula PROPERTIES de uma instrução CREATE TABLE. |
Para sincronizar dados, adicione as dependências necessárias do Flink CDC, como flink-sql-connector-mysql-cdc-${version}.jar e flink-sql-connector-oracle-cdc-${version}.jar, ao diretório $FLINK_HOME/lib.
A sincronização no nível de banco de dados requer Flink 1.15 ou posterior. Para downloads do Flink Doris Connector, consulte Flink Doris Connector.
Migrar dados com um catalog
O recurso de catalog no SelectDB usa consultas federadas para acessar o MySQL, simplificando a migração de dados históricos. O exemplo a seguir sincroniza dados de um banco de dados MySQL para o ApsaraDB for SelectDB. Para mais informações, consulte JDBC data source.
Procedimento
-
Conecte-se à instância SelectDB. Para mais informações, consulte Connect to an instance.
NotaA instrução
SWITCHnão funciona ao conectar via DMS. Recomendamos a conexão por meio de um cliente MySQL. -
Crie um catalog JDBC do MySQL.
CREATE CATALOG jdbc_mysql PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )Descrição dos parâmetros
Parâmetro
Obrigatório
Padrão
Descrição
user
Sim
Nenhum
Conta do banco de dados.
password
Sim
Nenhum
Senha da conta do banco de dados.
jdbc_url
Sim
Nenhum
String de conexão JDBC.
driver_url
Sim
Nenhum
Nome do arquivo do pacote JAR do driver JDBC.
driver_class
Sim
Nenhum
Nome da classe do driver JDBC.
lower_case_table_names
Não
"false"
Define se os nomes de bancos de dados e tabelas da fonte de dados JDBC externa devem ser sincronizados em letras minúsculas.
only_specified_database
Não
"false"
Define se apenas os bancos de dados especificados devem ser sincronizados.
include_database_list
Não
""
Quando
only_specified_database=true, especifica uma lista separada por vírgulas dos bancos de dados a serem sincronizados. Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas.exclude_database_list
Não
""
Quando
only_specified_database=true, especifica uma lista separada por vírgulas dos bancos de dados a serem excluídos da sincronização. Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas.Crie a tabela de destino no SelectDB e use a instrução
INSERT INTO ... SELECTpara sincronizar os dados. Para mais informações sobreINSERT INTO, consulte INSERT INTO.
# Create the destination table. CREATE TABLE selectdb_table ... # Migrate data. INSERT INTO selectdb_table SELECT * FROM mysql_catalog.mysql_database.mysql_table;
para movê-los para a caixa Selected Objects. É possível selecionar objetos no nível de banco de dados, tabela ou coluna.