在預檢查階段,系統會檢查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服務器與源數據庫網絡互通問題。您可以通過釘釘(釘釘通訊客戶端下載地址)進入到DTS客戶交流釘釘群(群號:68325004196或68640008972),進行咨詢。