如果您需要對MySQL中的數據進行全文檢索、多維查詢、統計分析等操作,可借助阿里云Elasticsearch(簡稱ES)實現。本文介紹通過DataWorks的數據集成服務,實現最快分鐘級,將MySQL數據同步到阿里云ES中。
背景信息
DataWorks是一個基于大數據引擎,集成數據開發、任務調度、數據管理等功能的全鏈路大數據開發治理平臺。您可以通過DataWorks的同步任務,快速的將各種數據源中的數據同步到阿里云ES。
支持同步的數據源包括:
阿里云云數據庫(MySQL、PostgreSQL、SQL Server、MongoDB、HBase)
阿里云PolarDB-X(原DRDS升級版)
阿里云MaxCompute
阿里云OSS
阿里云Tablestore
自建HDFS、Oracle、FTP、DB2及以上數據庫類型的自建版本
適用場景:
大數據離線同步到阿里云ES的場景,支持同步整個庫或同步某個表中的全部數據。更多信息,請參見整庫離線同步至Elasticsearch。
大數據在線實時同步到阿里云ES的場景,支持全量、增量一體化同步。更多信息,請參見一鍵實時同步至Elasticsearch。
前提條件
已創建RDS MySQL實例。具體操作,請參見創建RDS MySQL實例。本文以MySQL 5.7版本為例。
已創建阿里云ES實例,并開啟實例的自動創建索引功能。具體操作,請參見創建阿里云Elasticsearch實例和配置YML參數。
已創建DataWorks工作空間。具體操作,請參見創建工作空間。
僅支持將數據同步到阿里云ES,不支持自建Elasticsearch。
RDS MySQL實例、ES實例和DataWorks工作空間所在地域需保持一致。
RDS MySQL實例、ES實例和DataWorks工作空間需要在同一時區下,否則同步與時間相關的數據時,同步前后的數據可能存在時區差。
費用說明
ES實例費用,請參見ES計費項。
獨享數據集成資源組費用,請參見獨享數據集成資源組計費說明:包年包月。
操作步驟
本文以離線同步為例。如果需要在線同步數據,請參見一鍵實時同步至Elasticsearch。
步驟一:準備源數據
在RDS MySQL實例中創建數據庫和表。
您可以選擇使用阿里云的RDS數據庫,也可以在本地服務器上的自建數據庫。本文以RDS MySQL數據庫為例,創建RDS MySQL數據庫及表。具體操作,請參見快速入門。
本文使用的建表語句及數據如下。
-- create table CREATE TABLE `es_test` ( `id` bigint(32) NOT NULL, `name` varchar(32) NULL, `age` bigint(32) NULL, `hobby` varchar(32) NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8; -- insert data INSERT INTO `es_test` (`id`,`name`,`age`,`hobby`) VALUES (1,'user1',22,'music'); INSERT INTO `es_test` (`id`,`name`,`age`,`hobby`) VALUES (2,'user2',23,'sport'); INSERT INTO `es_test` (`id`,`name`,`age`,`hobby`) VALUES (3,'user3',43,'game'); INSERT INTO `es_test` (`id`,`name`,`age`,`hobby`) VALUES (4,'user4',24,'run'); INSERT INTO `es_test` (`id`,`name`,`age`,`hobby`) VALUES (5,'user5',42,'basketball');
步驟二:購買并配置獨享資源組
購買一個數據集成獨享資源組,并為該資源組綁定專有網絡和工作空間。獨享資源組可以保證數據快速、穩定地傳輸。
登錄DataWorks控制臺。
在頂部菜單欄選擇相應地域后,在左側導航欄單擊資源組。
在獨享資源組頁簽下,單擊創建舊版集成資源組。
在DataWorks獨享資源購買頁面,選擇獨享資源類型為獨享數據集成資源,輸入資源組名稱,單擊立即購買,購買獨享資源組。
更多配置信息,請參見購買資源組。
在已創建的獨享資源組的操作列,單擊網絡設置,為該獨享資源組綁定專有網絡。
具體操作,請參見綁定專有網絡。
說明本文以獨享數據集成資源組通過VPC內網同步數據為例。更多信息,請參見添加白名單。
獨享資源需要與RDS MySQL實例和ES實例的專有網絡連通才能同步數據,因此需要分別綁定RDS MySQL實例和ES實例所在的專有網絡、可用區和交換機。查看實例所在專有網絡信息,請參見切換RDS MySQL專有網絡VPC和虛擬交換機和查看Elasticsearch實例的基本信息。
重要綁定專有網絡后,您需要將對應專有網絡的交換機網段加入到RDS MySQL、ES實例的私網白名單中。具體操作,請參見設置RDS MySQL實例IP白名單和配置Elastic search實例公網或私網訪問白名單。
在頁面左上角,單擊返回圖標,返回資源組列表頁面,
在已創建的獨享資源組的操作列,單擊綁定工作空間,為該獨享資源組綁定目標工作空間。
具體操作,請參見綁定歸屬工作空間。
步驟三:添加數據源
將RDS MySQL和ES數據源接入DataWorks的數據集成服務中。
進入DataWorks的數據集成頁面。
登錄DataWorks控制臺。
在左側導航欄,單擊工作空間。
在目標工作空間的操作列,選擇
。
在左側導航欄,單擊數據源。
新增RDS MySQL數據源。
在數據源列表頁面,單擊新增數據源。
在新增數據源頁面,搜索并選擇MySQL數據源。
在新增MySQL數據源對話框,在基礎信息區域配置數據源參數。
配置詳情,請參見配置MySQL數據源。
在連接配置區域,單擊測試連通性,連通狀態顯示為可連通時,表示連通成功。
單擊完成。
使用同樣的方式添加ES數據源。配置詳情,請參見配置ES數據源。
步驟四:配置并運行數據離線同步任務
數據離線同步任務將獨享資源組作為一個可以執行任務的資源,獨享資源組將獲取數據集成服務中數據源的數據,并將數據寫入ES。
有兩種方式可以配置離線同步任務,文本以向導模式配置離線同步任務為例。您也可以通過腳本模式配置離線同步任務,詳情請參見通過腳本模式配置離線同步任務、MySQL Reader和Elasticsearch Writer。
進入DataWorks的數據開發頁面。
登錄DataWorks控制臺。
在左側導航欄,單擊工作空間。
在目標工作空間的操作列,選擇
。
新建一個離線同步任務。
在左側導航欄,單擊圖標。
選擇
,新建一個業務流程。右鍵單擊新建的業務流程,選擇
。在新建節點對話框中,輸入節點名稱,單擊確認。
配置網絡與資源
在數據來源區域,數據來源選擇MySQL,數據源名稱選擇待同步的數據源名稱。
在我的資源組區域,選擇獨享資源組。
在數據去向區域,數據去向選擇Elasticsearch,數據源名稱選擇待同步的數據源名稱。
單擊下一步。
配置任務。
在數據來源區域,選擇待同步的表。
在數據去向區域,配置數據去向的各參數。
在字段映射區域中,設置來源字段與目標字段的映射關系。
在通道控制區域,配置通道參數。
詳細配置信息,請參見通過向導模式配置離線同步任務。
運行任務。
(可選)配置任務調度屬性。在頁面右側,單擊調度配置,按照需求配置相應的調度參數。各配置的詳細說明請參見調度配置。
在節點區域的左上角,單擊保存圖標,保存任務。
在節點區域的左上角,單擊提交圖標,提交任務。
如果您配置了任務調度屬性,任務會定期自動執行。您還可以在節點區域的左上角,單擊運行圖標,立即運行任務。
運行日志中出現
Shell run successfully!
表明任務運行成功。
步驟五:驗證數據同步結果
登錄目標阿里云ES實例的Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
單擊Kibana頁面左上角的圖標,選擇Dev Tools(開發工具)。
在Console(控制臺)中,執行如下命令查看同步的數據。
POST /es_test/_search?pretty { "query": { "match_all": {}} }
說明es_test
需要替換為您在數據同步任務中設置的索引名稱。數據同步成功后,返回如下結果。