解析DataWorks数据集成中测试连通性失败问题
摘要: 大家好,這里和大家分享的是DataWorks數據集成中測試連通性失敗的排查思路。與測試連通性成功與否的相關因素有很多,本文按照多個因素逐步排查,最終解決問題,希望大家以后再遇到此類問題,請參考此文,相信能夠順利解決您的問題。
原文鏈接:http://click.aliyun.com/m/43552/
一、問題現象
此案例中,DataWorks項目位于華東2,RDS Mysql數據源位于華東1(VPC網絡),使用DataWorks進行數據同步之前,首先需要建立數據源,但在建立數據源RDS Mysql的配置頁面,“測試連通性”失敗,即數據源并沒有連通。
二、問題處理過程
(1)首先,應該判斷該數據源是否支持“測試連通性”
遇到測試連通性問題,首先應該判斷該數據源是否支持“測試連通性”,請大家參考《各數據源測試連通性支持情況》。請注意,通過經典網絡或VPC網絡的跨區域訪問,是不保證連通性的,但RDS產品除外,也就是說本案例中的數據源是支持測試連通性的。(本案例中項目和數據源的基本情況,已經在開篇位置介紹了)。
(2)數據源是否配置了完整的白名單
接下來,我們看下是否在Mysql數據庫配置了白名單。關于白名單,請參考《數據集成添加白名單》。該文檔詳細介紹了每個region對應的白名單內容(請注意添加您的項目所在region的白名單,而非您的數據源所在region的白名單)。經過核實,這個RDS Mysql數據源的白名單如下:
這正是項目所在region華東2的白名單,所以白名單錯誤或不完整的原因也排除了。而且開篇第一張圖報錯中出現的100.104.205.10這個ip也在上述白名單中。
(3)數據源配置頁面的信息是否正確
接下來需要核實該數據源配置頁面的信息是否正確了。
經過核實,RDS實例ID、RDS實例購買者ID、數據庫名、用戶名、密碼,均沒有任何問題。而且,用此處填寫的數據庫名、用戶名、密碼可以成功登陸Mysql數據庫。如下圖:
說明基本信息填寫正確。
(4)通過公網連接,“測試連通性”是否能成功
上述數據源配置頁面,在“數據源類型”選擇的是“阿里云數據庫(RDS)”,即通過內網連接。接下來嘗試下在“數據源類型”選擇“有公網IP”,即嘗試下通過公網連接,“測試連通性”是否能成功,但測試結果依然失敗,并且報錯依然是“Access denied”,并且121.43.110.160這個ip也在配置的白名單中。如下圖:
(5)核查數據庫賬號的權限
既然上述配置、白名單等都沒問題,那接下來看下該數據庫賬號(這里假設是zhangsan)的權限問題。
DataWorks的數據集成功能,底層是通過開源工具DataX來進行同步的,DataX是通過select操作去數據源中讀取數據的,下圖是一個同步任務的日志,從日志中可以看到,同步任務是通過執行select語句去讀取數據的,如下圖所示:
也就是說,用戶必須能夠登錄數據庫,并有select權限,才能進行數據同步。那我們首先看下用戶’zhangsan’的權限和屬性。
登錄Mysql數據庫后,執行:
執行結果如下:
經過上圖分析,該用戶’zhangsan’沒有show grants for zhangsan; 的權限,同樣也沒有權限查詢mysql數據庫user表中,用戶為’zhangsan’的賬號和允許登錄的ip。而且,當前用戶’zhangsan’的連接情況是正常的。
通過有root權限的相關人員查詢得到,該用戶’zhangsan’綁定了登錄ip,即只有在指定ip下才能用此賬號登錄,即:
Host: 116.228.89.206
User: zhangsan
也就是說,用戶zhangsan是無法通過用于同步的阿里云服務器登錄其數據庫的,測試連通性當然就失敗了!由此,我們終于找到了測試連通性失敗的原因!
接下來,用root賬戶新建用戶lisi,然后給lisi賦select權限,命令如下:
grant select on 數據庫.* to lisi@’%’ identified by ‘user_password’;
// 給lisi賦select權限,并允許在任意ip登錄
flush privileges;
//刷新MySQL的系統權限相關表
由此,再進行RDS Mysql數據源的測試連通性就成功了。
三、結論&建議
當使用DataWorks數據集成功能,遇到數據源測試連通性失敗的時候,可以依照上述排查思路,一步步排查,并請注意數據源中配置賬號的權限問題。
總結
以上是生活随笔為你收集整理的解析DataWorks数据集成中测试连通性失败问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyODPS 安装常见问题解决
- 下一篇: 你的专属云资源管家!阿里云正式对外发布云