全部產品
Search
文件中心

Simple Log Service:使用RDS內網地址訪問RDS MySQL資料庫

更新時間:Jul 27, 2024

當您的資料分散儲存在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資料庫表中的資料範例如下表所示。RDS資料

    • Log ServiceLogstore中的日誌範例如下所示。日誌

  • 加工流程

    1. 在源Logstore中開啟資料加工任務。

    2. 使用資料加工中的res_rds_mysql等函數從RDS MySQL資料庫中拉取資料。

    3. 將加工結果儲存到目標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.nameconfig.vpc.instance_port.name中的name需保持一致,且還需與進階參數配置中配置的name保持一致,支援自訂。

    • field為匹配欄位,Logstore中的日誌和RDS MySQL資料庫表中資料存在共同欄位,且欄位的值相同,才能匹配成功。

    • output_fields為輸出欄位,欄位匹配成功後,返回輸出欄位,產生一條新的日誌。

  • 進階參數配置

    通過RDS內網地址訪問RDS MySQL資料庫,還需在預覽資料和儲存加工結果時設定進階參數配置,其他參數配置請參見建立資料加工任務

    添加預覽配置

    config.vpc.vpc_id.nameconfig.vpc.instance_id.nameconfig.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中的nameconfig.vpc.instance_id.nameconfig.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,如下圖所示:ADB