在預檢查階段,系統會檢查DTS伺服器是否能夠連通源端資料庫。本文將介紹源庫串連性檢查失敗的可能原因及修複方法。
當源庫串連性預檢查失敗時,可能是以下幾種原因。
資料庫帳號名或密碼不正確
報錯樣本
Access denied for user 'XXX'@'XXX' (using password: YES)
檢測方法
使用命令列或用戶端串連來源資料庫,驗證資料庫帳號名和密碼是否正確。
常見錯誤:
填寫了阿里雲帳號。請填寫資料庫帳號。
填寫的資料庫帳號不存在。
填寫的密碼錯誤。
修複方法
在資料轉送控制台修改資料移轉任務,填入正確的資料庫帳號和密碼後重新執行預檢查。
若源端為Tair/Redis,請按正確格式填寫帳號密碼:
預設帳號(以執行個體ID命名):直接填寫密碼。
建立帳號:密碼格式為
<自訂帳號>:<密碼>
,例如:Redis自訂使用者名稱為admin,密碼為Rp829dlwa,則填入密碼admin:Rp829dlwa。
來源資料庫對來源IP進行了限制
檢測方法
使用命令列或用戶端串連來源資料庫,如果串連正常,說明來源資料庫可能限制了DTS伺服器IP地址。
如果來源資料庫為自建MySQL,可以使用用戶端串連來源資料庫後執行下述命令進行檢查。
SELECT HOST FROM mysql.user WHERE user='username',password='password';
說明將username和password替換為資料移轉任務中填寫的資料庫帳號和資料庫密碼。
檢查輸出結果中的授權IP地址清單是否包含DTS伺服器IP地址,詳情請參見添加DTS伺服器的IP位址區段。
如果來源資料庫為SQL Server,那麼檢查SQL Server所在伺服器是否設定了防火牆,或者檢查來源資料庫中是否有endpoint或trigger限制了訪問來源IP。
如果來源資料庫為Oracle,那麼檢查來源資料庫的設定檔sqlnet.ora。如果配置項
TCP.VALIDNODE_CHECKING
為yes
,說明來源資料庫限制了訪問來源IP。
修複方法
如果來源資料庫為自建MySQL,您可以在來源資料庫中執行以下命令為資料移轉使用的資料庫帳號重新授權。
GRANT ALL ON *.* TO 'username'@'%';
說明將username替換為資料移轉任務中填寫的資料庫帳號。
如果來源資料庫為SQL Server,關閉防火牆或禁用trigger。
如果來源資料庫為Oracle,修改
TCP.VALIDNODE_CHECKING
為no
並重啟進程。
執行了上述修複操作後,登入資料轉送控制台,重新執行預檢查。
來源資料庫伺服器設定了防火牆
檢測方法
如果安裝來源資料庫的伺服器為Windows,那麼在控制台中尋找到Windows防火牆,查看是否配置了防火牆。
如果安裝來源資料庫的伺服器為Linux,那麼使用
iptables -L
命令檢查伺服器是否配置了防火牆。
修複方法
關閉相關防火牆限制後,登入資料轉送控制台,重新執行預檢查。
網路互連問題
經過上述排查後仍然無法通過源庫串連性檢查,可能是DTS伺服器與來源資料庫網路互連問題。