當您的資料分散儲存在Log ServiceLogstore和RDS MySQL資料庫中時,您可以通過Log Service資料加工功能從對應資料庫擷取資料,實現資料富化。本文介紹如何配置資料加工規則及進階參數,實現通過RDS內網地址訪問RDS MySQL資料庫擷取資料。
背景資訊
2019年8月上海地區某共用單車的動態資料(例如訂單號、單車編號、使用者ID、地理位置、使用者騎車行為等)儲存在Log Service的Logstore中,而共用單車的待用資料(例如單車編號、品牌以及投放批次等)儲存在阿里雲RDS MySQL資料庫中,現在該共用單車公司希望將單車即時動態記錄日誌與儲存在RDS MySQL上的待用資料做富化和資料分析處理,實現共用單車最優調度。
由於通過RDS外網地址訪問RDS MySQL資料庫會降低RDS MySQL執行個體的安全性,並且不穩定。Log Service推出VPC反向 Proxy功能,通過RDS內網地址訪問RDS MySQL資料庫來保證傳輸速率和安全性。
RDS MySQL執行個體與Log ServiceProject需處於同一地區,否則無法擷取資料。
Log Service支援跨帳號訪問RDS MySQL資料庫。
使用RDS內網地址訪問RDS MySQL資料庫時,需設定IP位址區段白名單(固定設定為100.104.0.0/16)。更多資訊,請參見設定白名單。
Log Service除了支援通過阿里雲內網地址訪問RDS MySQL資料庫外,還支援通過內網地址訪問AnalyticDB MySQL和PolarDB MySQL資料庫。具體操作,請參見附錄:使用內網地址訪問AnalyticDB MySQL或PolarDB MySQL資料庫。
加工資料
您可以參見如下方案配置資料加工規則和進階參數,實現通過RDS內網地址訪問RDS MySQL資料庫擷取資料。
未經處理資料
RDS MySQL資料庫表中的資料範例如下表所示。
Log ServiceLogstore中的日誌範例如下所示。
加工流程
在源Logstore中開啟資料加工任務。
使用資料加工中的res_rds_mysql等函數從RDS MySQL資料庫中拉取資料。
將加工結果儲存到目標Logstore中。
加工規則
e_table_map(res_rds_mysql(str_format("{}:{}",res_local("config.vpc.instance_id.test1"),res_local("config.vpc.instance_port.test1")), "your rds username", "your rds password", "your database",table="your table",primary_keys="bikeid"), "bikeid",["brand","batch"])
說明通過RDS內網地址訪問RDS MySQL資料庫,請嚴格遵循以下文法,請勿使用其他加工文法。
加工規則格式如下所示:
e_table_map(res_rds_mysql(str_format("{}:{}",res_local("config.vpc.instance_id.name"),res_local("config.vpc.instance_port.name")), "資料庫帳號", "資料庫密碼", "資料庫名稱",table="資料庫表名"), "field", "output_fields")
config.vpc.instance_id.name和config.vpc.instance_port.name中的name需保持一致,且還需與進階參數配置中配置的name保持一致,支援自訂。
field為匹配欄位,Logstore中的日誌和RDS MySQL資料庫表中資料存在共同欄位,且欄位的值相同,才能匹配成功。
output_fields為輸出欄位,欄位匹配成功後,返回輸出欄位,產生一條新的日誌。
進階參數配置
通過RDS內網地址訪問RDS MySQL資料庫,還需在預覽資料和儲存加工結果時設定進階參數配置,其他參數配置請參見建立資料加工任務。
config.vpc.vpc_id.name、config.vpc.instance_id.name和config.vpc.instance_port.name中的name需保持一致,且還需與加工規則中配置的name保持一致,支援自訂。
Key格式
Key樣本值
Value樣本值
說明
config.vpc.vpc_id.name
config.vpc.vpc_id.test1
vpc-uf6mskb0b****n9yj
vpc_id為RDS MySQL執行個體所屬於的網路類型ID。
config.vpc.instance_id.name
config.vpc.instance_id.test1
rm-uf6e61k****ahd7-2024091513
通過調用DescribeDBInstanceAttribute - 查詢執行個體詳情介面擷取
VpcCloudInstanceId
。具體操作,請參見關聯MySQL資料來源config.vpc.instance_port.name
config.vpc.instance_port.test1
3306
instance_port為RDS MySQL執行個體內網地址連接埠。
錯誤排查
RDS白名單未配置
如果提示
reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"Database connection failed, cause: (2003, \\\"Can't connect to MySQL server on '192.168.1.1' (timed out)\\\")\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}
錯誤,表示資料加工授權後台授權VPC映射已經成功,但是因為RDS沒有配置白名單,導致無法串連到資料庫。進階參數配置錯誤
進階參數配置中name不一致
如果提示
reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"address check failed, please check the configuration of address. address: rm-bp***r5\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}
錯誤,表示config.vpc.instance_port.name中的name與config.vpc.instance_id.name、config.vpc.vpc_id.name中的name設定不一致。參數配置不完整
如果提示
reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"address check failed, please check the configuration of address. address: rm-bp1***9r5\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}
錯誤,表示缺少config.vpc.vpc_id.name配置資訊。
加工語句錯誤
如果提示
reason: {"errorCode": "InvalidConfig", "errorMessage": "error when calling : res_rds_mysql\nDetail: {\"errorCode\": \"InvalidConfig\", \"errorMessage\": \"Database connection failed, cause: (2003, \\\"Can't connect to MySQL server on 'rm-bp***r5.mysql.rds.aliyuncs.com' (timed out)\\\")\\nDetail: None\", \"requestId\": \"\"}", "requestId": ""}
錯誤,表示使用了錯誤的加工文法。
附錄:使用內網地址訪問AnalyticDB MySQL或PolarDB MySQL資料庫
Log Service除了支援通過阿里雲內網地址訪問RDS MySQL資料庫外,還支援通過內網地址訪問AnalyticDB MySQL和PolarDB MySQL資料庫。相關配置如下所示:
PolarDB MySQL資料庫
通過內網地址訪問PolarDB MySQL資料庫時,需設定IP位址區段白名單(固定設定為100.104.0.0/16)。具體操作,請參見操作步驟。其他動作請參見訪問RDS MySQL資料庫的配置。
AnalyticDB MySQL資料庫
通過內網地址訪問AnalyticDB MySQL資料庫時,需設定IP位址區段白名單(固定設定為100.104.0.0/16)。具體操作,請參見設定白名單。其他動作請參見訪問RDS MySQL資料庫的配置,其中設定進階參數配置時,config.vpc.instance_id.name的值需配置為AnalyticDB MySQL執行個體名加-controller,如下圖所示: