DLA支援串連RDS(MySQL、SQLServer、PostgreSQL)資料來源,然後通過SQL文法查詢和分析RDS資料,同時支援將分析結果回寫入RDS。本文以RDS MySQL為例介紹如何通過DLA讀寫RDS資料。
注意事項
如果您的RDS執行個體位於VPC網路內,預設情況下DLA無法訪問VPC網路中的資源。為了讓DLA能夠訪問RDS執行個體,需要利用VPC反向訪問技術,即在RDS白名單中添加
100.104.0.0/16
IP位址區段。具體操作請參考通過用戶端、命令列串連RDS MySQL執行個體。說明 當您在RDS白名單中添加了
100.104.0.0/16
IP位址區段,即視為您同意DLA利用VPC反向訪問技術讀寫RDS資料。準備工作
通過DLA讀寫RDS MySQL資料前,需要通過以下操作在RDS MySQL中準備測試資料:
- 建立RDS for MySQL執行個體。具體操作請參考快速建立RDS MySQL執行個體。
- 在DLA中建立MySQL Schema之前,需要將IP位址區段
100.104.0.0/16
加入到RDS的白名單列表中。具體操作請參考通過用戶端、命令列串連RDS MySQL執行個體。 - 建立帳號和資料庫。具體操作請參考建立資料庫和帳號。
- 串連MySQL執行個體。具體操作請參考通過命令列、用戶端串連RDS MySQL執行個體。
- 建立表並寫入測試資料。通過以下樣本在RDS MySQL中建立
person
表:
向create table person ( id int, name varchar(1023), age int );
person
表中插入資料:insert into person values (1, 'james', 10), (2, 'bond', 20), (3, 'jack', 30), (4, 'lucy', 40);
操作步驟
您可以登入到DMS中編寫SQL建立MySQL Schema,也可以先通過MySQL用戶端或者MySQL命令列工具串連DLA,然後再編寫SQL建立MySQL Schema。本操作以登入到DMS中編寫SQL建立MySQL Schema為例進行說明。
- 建立RDS MySQL Schema。
- 登入DLA控制台。
- 在左側導覽列單擊 。
- 在SQL訪問點頁面的VPC網路地區,定位到RDS所在的VPC網路,然後單擊登入到DMS。您也可以在公網網路地區,單擊登入到DMS通過公網登入到DMS建立RDS Schema。
- 在登入執行個體對話方塊中,選擇RDS資料庫類型為MySQL,並選擇執行個體地區、執行個體ID,輸入資料庫帳號和密碼,單擊登入。說明 您需要將DMS IP地址添加至RDS執行個體的白名單設定中,才能正常登入到DMS。具體操作請參見添加DMS IP地址。
- 在DMS的SQL information_schema頁簽中,建立RDS MySQL Schema和資料表。建立RDS MySQL Schema:
CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES ( CATALOG = 'mysql', LOCATION = 'jdbc:mysql://rm-******fofake.mysql.rds.aliyuncs.com:3306/rds_mysql_dbname', USER = 'rds_mysqldb_username', PASSWORD = 'rds_mysqldb_password', INSTANCE_ID = 'rds_mysql_instance_id', VPC_ID = 'rds_mysqldb_vpcid' );
參數 說明 CATALOG 取值為mysql,表示建立的是MySQL Schema。 LOCATION RDS MySQL的串連資訊,由 jdbc:mysql://RDS MySQL串連地址:3306/rds_mysql_dbname
。USER RDS MySQL中的資料庫帳號。 PASSWORD USER對應的密碼。 INSTANCE_ID RDS MySQL的執行個體ID。 VPC_ID RDS MySQL的VPC ID。 建立RDS MySQL資料表:create external table person ( id int, name varchar(1023), age int ) tblproperties ( table_mapping = "person" );
- 查詢資料。資料表建立成功後,您就可以在DLA中通過
SELECT
查詢RDS MySQL中的資料了。mysql> select * from person; +------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 rows in set (0.35 sec)
- 將OSS資料寫入RDS MySQL。在DLA中讀取RDS資料,並不是RDS在DLA中的典型應用情境。因為RDS本身能承載的資料量有限,不適合巨量資料分析。更多的情境是在DLA中對儲存在OSS、Tablestore中的巨量資料進行分析,分析完成之後把結果資料回寫到RDS中,供前台業務使用。DLA如何讀取OSS中的資料,請參見操作步驟。以
person
表為例,通過以下SQL語句把oss_db
中customer的十條記錄進行了轉換,然後插入到hello_mysql_vpc_rds.person
表中。mysql> insert into hello_mysql_vpc_rds.person select c_custkey, c_name, c_custkey + 20 from oss_db.customer limit 10; +------+ | rows | +------+ | 10 | +------+ 1 row in set (4.57 sec)