RDS MySQL同步至Elasticsearch
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務造成影響,請務必仔細閱讀。
本文介紹如何使用數(shù)據(jù)傳輸服務DTS(Data Transmission Service),將RDS MySQL同步至Elasticsearch。
前提條件
已創(chuàng)建目標Elasticsearch實例,詳情請參見創(chuàng)建阿里云Elasticsearch實例。
目標Elasticsearch實例的存儲空間須大于源RDS MySQL實例占用的存儲空間。
注意事項
類型 | 說明 |
源庫限制 |
|
其他限制 |
|
特殊情況 |
|
費用說明
同步類型 | 鏈路配置費用 |
庫表結構同步和全量數(shù)據(jù)同步 | 不收費。 |
增量數(shù)據(jù)同步 | 收費,詳情請參見計費概述。 |
支持同步的SQL操作
操作類型 | SQL操作語句 |
DML | INSERT、UPDATE、DELETE |
數(shù)據(jù)庫賬號的權限要求
數(shù)據(jù)庫 | 所需權限 | 創(chuàng)建及授權方式 |
源RDS MySQL實例 | 待同步對象的讀權限。 | |
目標Elasticsearch實例 | Elasticsearch實例創(chuàng)建時設置的登錄名(默認為elastic)和登錄密碼。 |
若您使用的源庫賬號不是通過RDS MySQL控制臺創(chuàng)建且授權,您需確保該賬號具備REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和SELECT權限。
數(shù)據(jù)類型映射關系
由于MySQL和Elasticsearch實例支持的數(shù)據(jù)類型不同,數(shù)據(jù)類型無法一一對應。所以DTS在進行結構初始化時,會根據(jù)目標庫支持的數(shù)據(jù)類型進行類型映射,詳情請參見結構初始化涉及的數(shù)據(jù)類型映射關系。
術語及概念對應關系
Elasticsearch | 關系型數(shù)據(jù)庫 |
索引(index) | 數(shù)據(jù)庫(Database) |
文檔類型(type) | 表(Table) |
文檔(document) | 一行數(shù)據(jù)(Row) |
字段(field) | 一列數(shù)據(jù)(Column) |
映射(mapping) | 數(shù)據(jù)庫的組織和結構(Schema) |
操作步驟
進入目標地域的同步任務列表頁面(二選一)。
通過DTS控制臺進入
在左側(cè)導航欄,單擊數(shù)據(jù)同步。
在頁面左上角,選擇同步實例所屬地域。
通過DMS控制臺進入
說明實際操作可能會因DMS的模式和布局不同,而有所差異。更多信息,請參見極簡模式控制臺和自定義DMS界面布局與樣式。
在頂部菜單欄中,選擇
。在同步任務右側(cè),選擇同步實例所屬地域。
單擊創(chuàng)建任務,進入任務配置頁面。
可選:在頁面右上角,單擊試用新版配置頁。
說明若您已進入新版配置頁(頁面右上角的按鈕為返回舊版配置頁),則無需執(zhí)行此操作。
新版配置頁和舊版配置頁部分參數(shù)有差異,建議使用新版配置頁。
配置源庫及目標庫信息。
類別
配置
說明
無
任務名稱
DTS會自動生成一個任務名稱,建議配置具有業(yè)務意義的名稱(無唯一性要求),便于后續(xù)識別。
源庫信息
選擇DMS數(shù)據(jù)庫實例
您可以按實際需求,選擇是否使用已有實例。
如使用已有實例,下方數(shù)據(jù)庫信息將自動填入,您無需重復輸入。
如不使用已有實例,您需要輸入下方的數(shù)據(jù)庫信息。
數(shù)據(jù)庫類型
選擇MySQL。
接入方式
選擇云實例。
實例地區(qū)
選擇源RDS MySQL實例所屬地域。
是否跨阿里云賬號
本示例為同一阿里云賬號間的同步,選擇不跨賬號。
RDS實例ID
選擇源RDS MySQL實例ID。
數(shù)據(jù)庫賬號
填入源RDS MySQL實例的數(shù)據(jù)庫賬號,權限要求請參見數(shù)據(jù)庫賬號的權限要求。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號對應的密碼。
連接方式
根據(jù)需求選擇非加密連接或SSL安全連接。如果設置為SSL安全連接,您需要提前開啟RDS MySQL實例的SSL加密功能,詳情請參見使用云端證書快速開啟SSL鏈路加密。
目標庫信息
選擇DMS數(shù)據(jù)庫實例
您可以按實際需求,選擇是否使用已有實例。
如使用已有實例,下方數(shù)據(jù)庫信息將自動填入,您無需重復輸入。
如不使用已有實例,您需要輸入下方的數(shù)據(jù)庫信息。
數(shù)據(jù)庫類型
選擇Elasticsearch。
接入方式
選擇云實例。
實例地區(qū)
選擇目標Elasticsearch實例所屬地域。
類型
請根據(jù)實際情況,選擇集群版或Serverless。
實例ID
選擇目標Elasticsearch實例ID。
數(shù)據(jù)庫賬號
填入連接Elasticsearch實例的賬號,即創(chuàng)建Elasticsearch時填入的登錄名,默認賬號為elastic。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號對應的密碼。
連接方式
請根據(jù)實際情況,選擇HTTP或HTTPS。
配置完成后,單擊頁面下方的測試連接以進行下一步。
如果源或目標數(shù)據(jù)庫是阿里云數(shù)據(jù)庫實例(例如RDS MySQL、云數(shù)據(jù)庫MongoDB版等),DTS會自動將對應地區(qū)DTS服務的IP地址添加到阿里云數(shù)據(jù)庫實例的白名單中;如果源或目標數(shù)據(jù)庫是ECS上的自建數(shù)據(jù)庫,DTS會自動將對應地區(qū)DTS服務的IP地址添加到ECS的安全規(guī)則中,您還需確保自建數(shù)據(jù)庫沒有限制ECS的訪問(若數(shù)據(jù)庫是集群部署在多個ECS實例,您需要手動將DTS服務對應地區(qū)的IP地址添加到其余每個ECS的安全規(guī)則中);如果源或目標數(shù)據(jù)庫是IDC自建數(shù)據(jù)庫或其他云數(shù)據(jù)庫,則需要您手動添加對應地區(qū)DTS服務的IP地址,以允許來自DTS服務器的訪問。DTS服務的IP地址,請參見DTS服務器的IP地址段。
警告DTS自動添加或您手動添加DTS服務的公網(wǎng)IP地址段可能會存在安全風險,一旦使用本產(chǎn)品代表您已理解和確認其中可能存在的安全風險,并且需要您做好基本的安全防護,包括但不限于加強賬號密碼強度防范、限制各網(wǎng)段開放的端口號、內(nèi)部各API使用鑒權方式通信、定期檢查并限制不需要的網(wǎng)段,或者使用通過內(nèi)網(wǎng)(專線/VPN網(wǎng)關/智能網(wǎng)關)的方式接入。
配置任務對象。
在對象配置頁面,配置待同步的對象。
配置
說明
同步類型
固定選中增量同步。默認情況下,您還需要同時選中庫表結構同步和全量同步。預檢查完成后,DTS會將源實例中待同步對象的全量數(shù)據(jù)在目標集群中初始化,作為后續(xù)增量同步數(shù)據(jù)的基線數(shù)據(jù)。
目標已存在表的處理模式
預檢查并報錯攔截:檢查目標數(shù)據(jù)庫中是否有同名的表。如果目標數(shù)據(jù)庫中沒有同名的表,則通過該檢查項目;如果目標數(shù)據(jù)庫中有同名的表,則在預檢查階段提示錯誤,數(shù)據(jù)同步任務不會被啟動。
說明如果目標庫中同名的表不方便刪除或重命名,您可以更改該表在目標庫中的名稱,請參見庫表列名映射。
忽略報錯并繼續(xù)執(zhí)行:跳過目標數(shù)據(jù)庫中是否有同名表的檢查項。
警告選擇為忽略報錯并繼續(xù)執(zhí)行,可能導致數(shù)據(jù)不一致,給業(yè)務帶來風險,例如:
表結構一致的情況下,如在目標庫遇到與源庫主鍵或唯一鍵的值相同的記錄:
全量期間,DTS會保留目標集群中的該條記錄,即源庫中的該條記錄不會同步至目標數(shù)據(jù)庫中。
增量期間,DTS不會保留目標集群中的該條記錄,即源庫中的該條記錄會覆蓋至目標數(shù)據(jù)庫中。
表結構不一致的情況下,可能會導致無法初始化數(shù)據(jù)、只能同步部分列的數(shù)據(jù)或同步失敗,請謹慎操作。
索引名稱
選擇為表名,在目標Elasticsearch實例中創(chuàng)建的索引名稱和表名一致。
選擇為庫名_表名,在目標Elasticsearch實例中創(chuàng)建的索引名稱則由庫名、下劃線(_)和表名按順序拼接而成。
說明索引名稱映射配置會在所有表中生效。
目標庫對象名稱大小寫策略
您可以配置目標實例中同步對象的庫名、表名和列名的英文大小寫策略。默認情況下選擇DTS默認策略,您也可以選擇與源庫、目標庫默認策略保持一致。更多信息,請參見目標庫對象名稱大小寫策略。
源庫對象
在源庫對象框中單擊待同步對象,然后單擊將其移動至已選擇對象框。
說明同步對象選擇的粒度為庫、表。若選擇的同步對象為表,其他對象(如視圖、觸發(fā)器、存儲過程)不會被同步至目標庫。
已選擇對象
如果您需要修改同步后的字段名稱,可在已選擇對象區(qū)域框中,右鍵單擊對應的表名,設置該表在目標Elasticsearch實例中的索引名稱、Type名稱等信息,然后單擊確定。更多信息,請參見庫表列名單個映射。
說明您可以設置SQL過濾條件,過濾待同步的數(shù)據(jù),只有滿足過濾條件的數(shù)據(jù)才會被同步到目標實例,詳情請參見通過SQL條件過濾任務數(shù)據(jù)。
單擊下一步高級配置,進行高級參數(shù)配置。
配置
說明
選擇調(diào)度該任務的專屬集群
DTS默認將任務調(diào)度到共享集群上,您無需選擇。若您希望任務更加穩(wěn)定,可以購買專屬集群來運行DTS同步任務。更多信息,請參見什么是DTS專屬集群。
源庫、目標庫無法連接后的重試時間
在同步任務啟動后,若源庫或目標庫連接失敗則DTS會報錯,并會立即進行持續(xù)的重試連接,默認持續(xù)重試時間為720分鐘,您也可以在取值范圍(10~1440分鐘)內(nèi)自定義重試時間,建議設置30分鐘以上。如果DTS在設置的重試時間內(nèi)重新連接上源庫、目標庫,同步任務將自動恢復。否則,同步任務將會失敗。
說明針對同源或者同目標的多個DTS實例,如DTS實例A和DTS實例B,設置網(wǎng)絡重試時間時A設置30分鐘,B設置60分鐘,則重試時間以低的30分鐘為準。
由于連接重試期間,DTS將收取任務運行費用,建議您根據(jù)業(yè)務需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。
源庫、目標庫出現(xiàn)其他問題后的重試時間
在同步任務啟動后,若源庫或目標庫出現(xiàn)非連接性的其他問題(如DDL或DML執(zhí)行異常),則DTS會報錯并會立即進行持續(xù)的重試操作,默認持續(xù)重試時間為10分鐘,您也可以在取值范圍(1~1440分鐘)內(nèi)自定義重試時間,建議設置10分鐘以上。如果DTS在設置的重試時間內(nèi)相關操作執(zhí)行成功,同步任務將自動恢復。否則,同步任務將會失敗。
重要源庫、目標庫出現(xiàn)其他問題后的重試時間的值需要小于源庫、目標庫無法連接后的重試時間的值。
是否限制全量遷移速率
在全量同步階段,DTS將占用源庫和目標庫一定的讀寫資源,可能會導致數(shù)據(jù)庫的負載上升。您可以根據(jù)實際情況,選擇是否對全量同步任務進行限速設置(設置每秒查詢源庫的速率QPS、每秒全量遷移的行數(shù)RPS和每秒全量遷移的數(shù)據(jù)量(MB)BPS),以緩解目標庫的壓力。
說明僅當同步類型選擇了全量同步時才可以配置。
是否限制增量同步速率
您也可以根據(jù)實際情況,選擇是否對增量同步任務進行限速設置(設置每秒增量同步的行數(shù)RPS和每秒增量同步的數(shù)據(jù)量(MB)BPS),以緩解目標庫的壓力。
分片配置
根據(jù)目標Elasticsearch中索引的最大分片配置,設置索引的主分片和副本分片的數(shù)量。
字符串Index
同步至目標Elasticsearch實例中的字符串編入索引的方式。
analyzed:先分析字符串,再編入索引。您還需要選擇具體的分析器,分析器的類型及作用,請參見分析器。
not analyzed:不分析,直接使用原始值編入索引。
no:不編入索引。
時區(qū)
DATETIME或TIMESTAMP的時間類型同步至目標Elasticsearch實例時,您可以選擇所帶時區(qū)。
說明若目標實例中此類時間類型數(shù)據(jù)無需帶有時區(qū),您需要預先在目標實例中設置該時間類型數(shù)據(jù)的文檔類型(type)。
DOCID取值
您無需配置。DOCID默認為表的主鍵,如表中無主鍵,則DOCID為Elasticsearch自動生成的ID列。
環(huán)境標簽
您可以根據(jù)實際情況,選擇用于標識實例的環(huán)境標簽。本示例無需選擇。
配置ETL功能
選擇是否配置ETL功能。關于ETL的更多信息,請參見什么是ETL。
是:配置ETL功能,并在文本框中填寫數(shù)據(jù)處理語句,詳情請參見在DTS遷移或同步任務中配置ETL。
否:不配置ETL功能。
是否去除正反向任務的心跳表sql
根據(jù)業(yè)務需求選擇是否在DTS實例運行時,在源庫中寫入心跳SQL信息。
是:不在源庫中寫入心跳SQL信息,DTS實例可能會顯示有延遲。
否:在源庫中寫入心跳SQL信息,可能會影響源庫的物理備份和克隆等功能。
監(jiān)控告警
是否設置告警,當同步失敗或延遲超過閾值后,將通知告警聯(lián)系人。
不設置:不設置告警。
設置:設置告警,您還需要設置告警閾值和告警聯(lián)系人。更多信息,請參見在配置任務過程中配置監(jiān)控告警。
上述配置完成后,單擊頁面下方的下一步配置庫表字段,設置待同步的表在目標Elasticsearch的_routing策略和_id取值。
類型
說明
是否設置_routing
設置_routing可以將文檔路由存儲在目標Elasticsearch實例的指定分片上,請參見_routing。
選擇為是,您可以自定義列進行路由。
選擇為否,則用_id進行路由。
說明創(chuàng)建的目標Elasticsearch實例為7.x版本時,您必須選擇為否。
_routing列
選擇用來進行路由的列。
說明僅當是否設置_routing選擇為是時,需要設置此參數(shù)。
_id取值
選擇用來做文檔ID的列。
保存任務并進行預檢查。
若您需要查看調(diào)用API接口配置該實例時的參數(shù)信息,請將鼠標光標移動至下一步保存任務并預檢查按鈕上,然后單擊氣泡中的預覽OpenAPI參數(shù)。
若您無需查看或已完成查看API參數(shù),請單擊頁面下方的下一步保存任務并預檢查。
說明在同步作業(yè)正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業(yè)。
如果預檢查失敗,請單擊失敗檢查項后的查看詳情,并根據(jù)提示修復后重新進行預檢查。
如果預檢查產(chǎn)生警告:
對于不可以忽略的檢查項,請單擊失敗檢查項后的查看詳情,并根據(jù)提示修復后重新進行預檢查。
對于可以忽略無需修復的檢查項,您可以依次單擊點擊確認告警詳情、確認屏蔽、確定、重新進行預檢查,跳過告警檢查項重新進行預檢查。如果選擇屏蔽告警檢查項,可能會導致數(shù)據(jù)不一致等問題,給業(yè)務帶來風險。
購買實例。
預檢查通過率顯示為100%時,單擊下一步購買。
在購買頁面,選擇數(shù)據(jù)同步實例的計費方式、鏈路規(guī)格,詳細說明請參見下表。
類別
參數(shù)
說明
信息配置
計費方式
預付費(包年包月):在新建實例時支付費用。適合長期需求,價格比按量付費更實惠,且購買時長越長,折扣越多。
后付費(按量付費):按小時扣費。適合短期需求,用完可立即釋放實例,節(jié)省費用。
資源組配置
實例所屬的資源組,默認為default resource group。更多信息,請參見什么是資源管理。
鏈路規(guī)格
DTS為您提供了不同性能的同步規(guī)格,同步鏈路規(guī)格的不同會影響同步速率,您可以根據(jù)業(yè)務場景進行選擇。更多信息,請參見數(shù)據(jù)同步鏈路規(guī)格說明。
訂購時長
在預付費模式下,選擇包年包月實例的時長和數(shù)量,包月可選擇1~9個月,包年可選擇1年、2年、3年和5年。
說明該選項僅在付費類型為預付費時出現(xiàn)。
配置完成后,閱讀并勾選《數(shù)據(jù)傳輸(按量付費)服務條款》。
單擊購買并啟動,并在彈出的確認對話框,單擊確定。
您可在數(shù)據(jù)同步界面查看具體任務進度。