AnalyticDB for MySQL 2.0數據導入
由于數倉版與AnalyticDB for MySQL 2.0的架構不同,因此AnalyticDB for MySQL 2.0不能升級到數倉版。您需要遷移數據和應用到數倉版。本文介紹數據和應用的遷移方法。
背景信息
AnalyticDB for MySQL 2.0隨后會下線,不再做功能迭代,以維護為主。
數倉版具有以下優勢:
版本完全基于ECS部署,采用云原生架構,集群更加彈性、輕量級和靈活。
高度兼容MySQL協議以及SQL:92、SQL:99、SQL:2003標準,通過標準SQL和常用BI工具、以及ETL工具平臺即可輕松使用。
在計算引擎和優化器上做了大量的改進和優化,性能更高。
完全部署在阿里云數據庫管控平臺上,更加穩定、安全。
數據遷移場景
MaxCompute中存在原始數據,可以通過外表將MaxCompute中的歷史數據導入到數倉版中。具體操作,請參見通過外表導入至數倉版。
MaxCompute中已經沒有原始數據,原始數據只存在于AnalyticDB for MySQL 2.0集群的數據庫中,可以使用兩種數據遷移方式將AnalyticDB for MySQL 2.0集群中的數據導入到數倉版。具體操作,請參見數據遷移。
準備工作
了解AnalyticDB for MySQL 2.0和數倉版的產品架構、功能特征和使用方法的相同之處和不同之處。數倉版的產品介紹,請參見什么是云原生數據倉庫AnalyticDB MySQL版。
根據AnalyticDB for MySQL 2.0集群已分配的資源,按照CPU數、內存、磁盤空間等維度的最短板向下或者向上一檔選擇對應的資源規格和數量,創建數倉版集群。具體操作,請參見創建集群。
數據遷移
方式一:使用AnalyticDB for MySQL 2.0的工具遷移數據
如果AnalyticDB for MySQL 2.0中使用了多值列類型,多值列的數據未在MaxCompute中,那么這些多值列的數據無法遷移。
如果業務存在實時寫入流量,則需要在同步數據之前啟動業務雙寫(即同時寫入AnalyticDB for MySQL 2.0和數倉版),以保證不會丟失數據同步期間產生的增量數據。
通過MySQL客戶端連接AnalyticDB for MySQL 2.0集群。
mysql -h host -P port -u username -p password -D dbname;
參數
說明
host
AnalyticDB for MySQL 2.0集群的公網IP地址。
port
AnalyticDB for MySQL 2.0集群的端口號。
username
AnalyticDB for MySQL 2.0集群的賬號(AccessKey ID)。
password
AnalyticDB for MySQL 2.0集群的賬號密碼(AccessKey Secret)。
dbname
AnalyticDB for MySQL 2.0集群的數據庫名稱。
執行以下命令,查詢外部數據庫目錄。
SHOW CATALOGS;
執行以下命令,創建數倉版的外部數據目錄(External Catalog)。
CREATE EXTERNAL CATALOG catalog_name properties( 'connector.name'='mysql' 'connection-url'='jdbc:mysql://mapping_ip:mapping_port/database_name' 'connection-user'='$user' 'connection-password'='$password' );
如果AnalyticDB for MySQL 2.0集群的Meta表存有導入數據到MaxCompute的記錄,可以將MaxCompute數據導入到數倉版的外部數據目錄。執行以下命令創建部數據目錄:
CREATE EXTERNAL CATALOG catalog_name properties( 'connector.name' = 'mysql' 'connection-url' = 'jdbc:mysql://mapping_ip:mapping_port/database_name' 'connection-user' = '$user' 'connection-password' = '$password' 'odps-access-id' = '$access_id' 'odps-access-key' = '$access_key' );
參數
說明
connector.name
創建數倉版集群的外部數據目錄,固定取值為MySQL。
connection-url
mapping_ip:mapping_port
為反向代理平臺的IP和端口號,請聯系AnalyticDB for MySQL官方支持獲取。database_name
數倉版集群的數據庫名稱。connection-user
數倉版集群數據庫的賬號。
connection-password
數倉版集群數據庫賬號對應的密碼。
odps-access-id
阿里云賬號或者具備MaxCompute訪問權限的RAM用戶的AccessKey ID。
如何獲取AccessKey ID和AccessKey Secret,請參見賬號與權限。
說明如果MaxCompute中已經沒有AnalyticDB for MySQL 2.0集群的原始數據,無需配置此參數。
odps-access-key
阿里云賬號或者具備MaxCompute訪問權限的RAM用戶的AccessKey Secret。
如何獲取AccessKey ID和AccessKey Secret,請參見賬號與權限。
說明如果MaxCompute中已經沒有AnalyticDB for MySQL 2.0集群的原始數據,無需配置此參數。
同步數據。
同步整個庫。數據同步到數倉版外部數據目錄定義中的數據庫。
data-sync database database_name to catalog_name [by pangu];
參數
說明
database_name
AnalyticDB for MySQL 2.0集群的數據庫名稱。
catalog_name
數倉版外部數據目錄的名稱。
by pangu
對于MaxCompute中已經沒有原始數據的場景,從AnalyticDB for MySQL 2.0本地同步數據, 需要在命令最后指定
by pangu
。說明如果不指定
by pangu
,且在第二步未定義odps-access-id
和odps-access-key
參數,數據同步會報錯。同步單個表結構和數據。
data-sync table table_name to catalog_name [by pangu];
參數
說明
table_name
AnalyticDB for MySQL 2.0集群的表名稱。
catalog_name
數倉版外部數據目錄的名稱。
by pangu
對于MaxCompute中已經沒有原始數據的場景,從AnalyticDB for MySQL 2.0本地同步數據, 需要在命令最后指定
by pangu
。說明如果不指定
by pangu
,且在第二步未定義odps-access-id
和odps-access-key
參數,數據同步會報錯。同步單個表的某個二級分區數據。
data-sync table table_name to catalog_name on partition;
參數
說明
table_name
AnalyticDB for MySQL 2.0集群的表名稱。
catalog_name
數倉版外部數據目錄的名稱。
partition
AnalyticDB for MySQL 2.0集群中表的二級分區名稱。
例如AnalyticDB for MySQL 2.0集群中表的二級分區定義為
PARTITION BY VALUE(202207)
,partition
填寫202207即可。按查詢條件查詢出單個表的部分數據同步到外部數據目錄中。
data-sync tabletable_name to catalog_name options(mode=replace) where column_name < $value1 and column_name > $value2;
參數
說明
table_name
AnalyticDB for MySQL 2.0集群的表名稱。
catalog_name
數倉版外部數據目錄的名稱。
mode=replace
指定數據寫入方式,取值:
replace:推薦值,數據寫入時會覆蓋表中原有的數據。
insert:默認值,當主鍵重復時會自動忽略當前寫入數據,不做更新。
說明寫入方式為insert時,會出現FLOAT類型數據錯誤的問題。
column_name
AnalyticDB for MySQL 2.0集群中表的列名。
同步整個庫的元數據(Meta)。
meta-sync database database_name to catalog_name;
參數
說明
database_name
AnalyticDB for MySQL 2.0集群的數據庫名稱。
catalog_name
數倉版外部數據目錄的名稱。
同步單個表的元數據(Meta)。
meta-sync table table_name to catalog_name;
參數
說明
table_name
AnalyticDB for MySQL 2.0集群的數據庫名稱。
catalog_name
數倉版外部數據目錄的名稱。
查看數據同步進度。
查看所有任務進度。
show data-sync;
查看執行成功的任務進度。
show data-sync succeeded;
查看正在執行的任務進度。
show data-sync running;
查看執行失敗的任務進度。
show data-sync failed;
查看單個表的任務進度。
show data-sync table_name;
方式二:通過外表方式進行數據遷移
具體操作,請參見通過外表導入RDS MySQL數據至數倉版。
SQL回歸測試
由于數倉版全面兼容MySQL,摒棄了AnalyticDB for MySQL 2.0的部分函數,如果AnalyticDB for MySQL 2.0的SQL語句使用了這些函數,則數倉版無法兼容這些SQL語句。因此,需要把AnalyticDB for MySQL 2.0的SQL在數倉版進行全部回歸測試,以防止正式遷移后部分函數報錯。
由于SQL回歸測試后期屬于內部操作,無需用戶執行,若用戶有SQL回歸測試的需求,請聯系AnalyticDB for MySQL官方支持或在AnalyticDB for MySQL2.0遷3.0用戶服務群(釘釘群號:44914638)中反饋問題。
測試驗證
需要根據業務要求在數倉版進行功能驗證和性能驗證。
應用遷移
當數據遷移完成,且SQL回歸測試通過后,可以將應用遷移到數倉版。
在應用中替換以下信息,完成應用遷移。
將AnalyticDB for MySQL 2.0集群的連接地址更換為數倉版集群的連接地址。
通過控制臺集群信息頁面中的網絡信息區域獲取連接地址。
將AnalyticDB for MySQL 2.0集群的數據庫賬號(AccessKey ID)和密碼(AccessKey Secrect)更換為數倉版集群的數據庫賬號和密碼。查看數倉版數據庫賬號和密碼的操作,請參見創建AccessKey。