云數據庫PolarDB是阿里云對外提供的一種即開即用、穩定可靠、可彈性伸縮的在線數據庫服務(了解PolarDB)。
購買PolarDB前須知
OpenSearch目前支持PolarDB for mysql5.6、5.7、8.0。
PolarDB集群必須隸屬于當前登錄阿里云賬號才能訪問使用。
PolarDB集群所在區域必須與OpenSearch應用區域一致。
PolarDB集群創建后,binlog默認是關閉的,會導致數據源注冊失敗,因此需要開啟。開啟方式為:loose_polar_log_bin默認為OFF,需設置為ON_WITH_GTID;binlog_row_image默認為FULL,不需要變更。
支持clone實例。
需要PolarDB集群設置為讀寫集群。
支持功能
支持(手動/定時)拉取指定數據庫表全量。
支持單個或多個數據源表數據橫向合并,要求這些源表結構及數據源插件配置必須完全相同,并且主鍵值均不重復(主鍵值重復會覆蓋),主要支持以下2種場景:
應用表中配有一個數據源,并且包含多個源表。
應用表中配有多個數據源,并且各數據源包含1個或多個源表。
支持數據源字段轉換插件。
支持的數據同步方式:
自動同步;
自購DTS實時同步;
不自動同步。
支持(全量)過濾條件。
支持通過通配符
*
匹配數據庫表名。
當您選擇“自動同步”作為數據同步方式時,將啟用 OpenSearch 提供的內部服務來訂閱數據庫的 binlog,并同步增量數據。請注意,如果發生用戶端的變更操作,如刪除數據庫表、變更訪問權限、清理 binlog 日志或修改數據庫密碼等,可能會導致 OpenSearch 無法成功訂閱并同步所配置表的 binlog。在這種情況下,由于增量數據無法同步,OpenSearch 將不承擔任何責任。用戶應確保在進行此類操作前已經完全了解可能產生的影響,并采取必要的預防措施;
若配置了RDS/PolarDB數據源,并且同步方式選擇自動同步,OpenSearch將盡力保障同步服務的穩定性但不保障同步的延遲,如果對同步延遲比較敏感的業務建議同步方式采用DTS數據訂閱實例(DTS實時同步);
相關限制
只支持PolarDB集群的binlog為full模式。開啟方式為:loose_polar_log_bin默認為OFF,需設置為ON_WITH_GTID;binlog_row_image默認為FULL,不需要變更。
目前只支持PolarDB mysql5.6、5.7、8.0。
PolarDB集群必須隸屬于當前登錄阿里云賬號才能訪問。
PolarDB集群所在區域必須與OpenSearch應用區域一致。
標準版應用在配置PolarDB數據源后,不支持(SDK/API)推送增量。
標準版應用的PolarDB數據源,暫不支持數據源過濾條件。
不支持replace into語法。
不支持truncate和drop命令,請使用delete命令刪除數據。
PolarDB 訪問密碼不能包含
%
符號,會導致索引重建任務失敗。不支持在不同數據庫源表結構之間做字段列合并。
loose_max_statement_time和connect_timeout建議都設置為0,等索引重建或線下變更觸發全量同步完成之后,可以再修改為正常值。
注意事項
如果是drds后掛數據源(RDS/PolarDB)接入到opensearch,則需要在數據源配置的時候,配置drds下的實際分庫的庫名(drds下的數據庫會被分成一個影子庫和8個分庫實際分庫,寫入數據會隨機寫入到分庫實際分庫中)。
PolarDB集群支持內/外網的域名切換,OpenSearch對PolarDB數據獲取均不收取任何流量費用。
OpenSearch僅支持從主庫拉取全量數據,建議根據您的業務繁忙情況,選擇低峰期索引重建導入全量數據。
PolarDB集群表中datetime及timestamp此類時間類型,系統會自動轉化為毫秒數,請將對應應用表字段類型設置為TIMESTAMP。
不符合數據源過濾條件的(全量)文檔會被過濾,并且如果對應應用表中存在相同主鍵值的文檔也會刪除。
數據源側長時間(15天及以上)沒有增量數據,可能會導致數據同步異常,如遇此情況請手動操作線下變更即可解決。
如果PolarDB開啟了SSL證書加密,一定要保證證書有效期沒有過期,如果過期了,會導致連接異常,請及時更新SSL證書有效期。
青島區域不支持配置polardb數據源。
通過OpenSearch同步PolarDB數據源數據時,需要將OpenSearch服務器的IP地址段加入到PolarDB對應的安全設置中,各區域的IP白名單可參考如下列表:
地域
IP地址
杭州
100.104.190.128/26,100.104.241.128/26
北京
100.104.16.192/26,100.104.179.0/26
上海
100.104.37.0/26,100.104.46.0/26
深圳
100.104.87.192/26,1100.104.132.192/26
張家口
100.104.155.192/26,100.104.238.64/26
德國
100.104.127.0/26,100.104.35.192/26
美國
100.104.193.128/26,100.104.119.128/26
新加坡
100.104.58.192/26,100.104.74.192/26
賬號授權問題
PolarDB接入時,需要授權訪問集群。并且填寫賬號密碼, 初次接入時,請謹慎選擇賬號密碼。
【確保賬號權限】必須確保賬號能有查看該庫所有表的權限(上游DTS服務的限制), 保證能正確執行 show create table
*
. *,如果沒有。可能會發生實時服務同步出現問題。【少做賬號權限變更】賬號變更會帶來當前實時任務的不能正常消費。同時新版本創建也會受影響。若變更賬號密碼,需要刪除實例重新接入庫。
常見問題
如果配置PolarDB數據源后,索引重建出現卡住的現象,請在數據表所在的庫中創建一個測試表,并且每分鐘寫入或更新1~2條數據,保證您在索引重建時有連續的binlog產生。
如果高級版應用PolarDB集群期間欠過費,但后續有將欠費補上,可以直接觸發一次手動索引重建。
PolarDB集群訪問密碼不能包含
%
符號,否則會導致索引重建任務失敗。(報錯提示: Illegal hex characters in escape (%) pattern)。系統要求應用表主鍵值不重復,如果分表情況下主鍵值有重復會覆蓋,可使用StringCatenateExtractor數據源插件合并多個字段值,來源字段為
pk,$table
(pk替換為PolarDB集群表主鍵字段,$table為默認系統變量,表示對應數據庫表名),拼接字符為-
(可自定義)。
例如,PolarDB集群表為my_table_0
,主鍵字段值為123456
,拼接后新主鍵值為123456-my_table_0
。
根據數據庫表中的date或datetime字段類型過濾數據,假設數據庫表字段名為createtime,則數據源過濾條件中的時間格式必須為
createtime>'2018-03-01 00:00:00'
,如果使用createtime>'2018-3-1 00:00:00'
這種格式會報錯。
配置PolarDB數據源
控制臺配置步驟及注意事項
1.創建或修改應用時,在第三步數據源中,添加數據源或編輯,選擇PolarDB數據源,點擊新建數據庫。
2.PolarDB數據源信息填寫完成后,點擊連接按鈕。
參數名稱 | 說明 |
集群ID | PolarDB集群ID,可以在PolarDB控制臺中獲取(大小寫敏感),需填寫的集群ID格式參考:pc-uf6c056ny9tiaj1l7 |
數據庫名 | 該實例下需要連接的數據庫名(大小寫不敏感)。 |
用戶名 | 數據庫賬號,用于獲取數據庫表模式及全量數據(大小寫敏感)。 |
密碼 | 賬號對應的密碼。 |
OpenSearch會嘗試連接,并根據具體情形,給出結果提示:
提示信息 | 處理方法 |
當前用戶的當前區域沒有此PolarDB集群 | 請檢查集群ID是否正確,并確保PolarDB集群所在區域與OpenSearch應用區域一致。如果條件符合仍然報錯,可提工單反饋 |
連接數據庫服務失敗 | 請檢查PolarDB連接串是否正確包括集群ID、數據庫名、用戶名、密碼 |
當前PolarDB集群下沒有此表 | 請檢查表名填寫是否正確,以及PolarDB數據庫中是否確實存在該表 |
配置PolarDB集群配置項問題 | 前往PolarDB控制臺 參數配置 頁面修改相應配置項目后,進行重試 |
3.PolarDB數據源信息連接后,選擇數據表。已建立數據源連接界面如下,選擇對應表,點擊確定。
選擇或輸入該數據庫下需要訪問的表名(大小寫敏感)。
支持分表規則 table_* 的方式,例如 table_a、table_b 等。
4.若連接成功,則進行字段配置,OpenSearch會自動獲取表字段。數據源插件說明,請數據源插件說明查看。
5.配置PolarDB數據源過濾條件(標準版不支持),配置好數據源后點擊提交,完成應用結構配置。
OpenSearch應用表中也可配置多個數據源,但最終這些表結構及配置必須完全相同。
PolarDB數據源配置的過濾條件只能拉取符合該條件的記錄,詳細配置請參考數據源過濾條件(RDS/PolarDB)。