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