AnalyticDB for MySQL permite importar e exportar dados por meio de tabelas externas. Este tópico descreve como utilizar uma tabela externa no AnalyticDB for MySQL para importar dados de um banco de dados MySQL autogerenciado em uma instância ECS para um cluster do AnalyticDB for MySQL Data Warehouse Edition.
Pré-requisitos
Você possui uma instância ECS na mesma região e VPC do seu cluster AnalyticDB for MySQL.
Um banco de dados MySQL autogerenciado está instalado na instância ECS.
Uma regra de entrada foi adicionada ao grupo de segurança da instância ECS para permitir o acesso ao banco de dados MySQL autogerenciado na porta 3306. Para mais informações, consulte Add a security group rule.
-
Um banco de dados foi criado e os dados de teste foram preparados no MySQL autogerenciado.
Neste exemplo, um banco de dados source chamado
test_adbé criado, e uma tabela source chamadagoodsé criada nesse banco. O comando a seguir cria a tabela source:CREATE TABLE goods ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (goods_id) ); -
Caso o cluster AnalyticDB for MySQL esteja no modo elástico, ative a opção ENI na seção Network Information da página Cluster Information.
ImportanteAo ativar ou desativar a ENI, as conexões com o banco de dados podem ser interrompidas por aproximadamente 2 minutos. Durante esse período, não é possível executar operações de leitura ou escrita. Tenha cuidado ao ativar ou desativar a ENI.
Procedimento
Conecte-se ao cluster AnalyticDB for MySQL. Para mais informações, consulte 连接集群.
-
Crie um banco de dados. Para mais informações, consulte Create a database.
Neste exemplo, um banco de dados chamado
adb_demoé criado no cluster AnalyticDB for MySQL. -
Crie uma tabela externa.
Execute o comando abaixo para criar uma tabela externa chamada
goods_external_tableno banco de dados de destinoadb_demo.CREATE TABLE IF NOT EXISTS goods_external_table ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) ENGINE='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb", "tablename":"goods", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';Parâmetro
Descrição
ENGINE='mysql'Define o mecanismo de armazenamento da tabela externa. Este exemplo utiliza MySQL.
TABLE_PROPERTIESInformações de conexão que o AnalyticDB for MySQL utiliza para acessar o banco de dados MySQL autogerenciado.
urlO Primary Private IP (endereço VPC) da instância ECS e o nome do banco de dados source. Neste exemplo, o banco source é
test_adb. Para visualizar o endereço IP:-
Faça login no ECS console e localize a instância desejada.
-
Na página Instance Details, dentro da seção Network Information, visualize o Primary Private IP.
Formato:
"jdbc:mysql://mysql-vpc-address:3306/ecs-database-name".Exemplo:
jdbc:mysql://192.168.128.***:3306/test_adb.tablenameNome da tabela source no banco de dados MySQL autogerenciado. Neste exemplo, a tabela chama-se
goods.usernameNome de usuário para acessar o banco de dados source na instância MySQL autogerenciada.
passwordSenha da conta.
charsetConjunto de caracteres do banco de dados MySQL. Valores válidos:
-
gbk
-
UTF8 (Padrão)
-
utf8mb4
-
-
Crie uma tabela de destino.
Execute o comando a seguir para criar uma tabela de destino chamada
mysql_import_testno banco de dadosadb_demo. Essa tabela armazenará os dados importados do banco MySQL autogerenciado.CREATE TABLE IF NOT EXISTS mysql_import_test ( goods_id bigint(20) NOT NULL, price double NOT NULL, class bigint(20) NOT NULL, name varchar(32) NOT NULL, update_time timestamp, PRIMARY KEY (goods_id) ) DISTRIBUTED BY HASH(goods_id); -
Importe os dados do banco MySQL autogerenciado na instância ECS para o cluster AnalyticDB for MySQL de destino.
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;
Próximos passos
Após a importação, conecte-se ao banco de dados adb_demo no cluster AnalyticDB for MySQL. Em seguida, execute a instrução abaixo para verificar se os dados foram transferidos da tabela source para a tabela mysql_import_test:
SELECT * FROM mysql_import_test LIMIT 100;