為保障資料移轉任務的順利執行,在預檢查階段檢查DTS伺服器是否能夠連通要遷移的目標資料庫。本文將介紹目標資料庫連接性檢查失敗可能的原因及修複方法。
當目標資料庫連接性預檢查失敗時,可能是以下幾種原因。
資料庫帳號或資料庫密碼不正確
檢測方法:
在任何一台可以串連目標資料庫的裝置上,使用資料移轉任務中填入的資料庫帳號和資料庫密碼來串連目標資料庫,驗證資料庫帳號和資料庫密碼是否正確。
您也可以直接在目標資料庫部署的伺服器上驗證資料庫帳號和資料庫密碼是否正確。
修複方法:
登入資料轉送控制台,修改資料移轉任務,填入正確的資料庫帳號和資料庫密碼後重新執行預檢查。
若目標端為Tair/Redis,請根據選取的帳號(需要具備讀寫權限)填寫密碼:
預設帳號(即以執行個體ID命名的帳號):直接填寫密碼即可。
新建立的帳號:密碼格式為
<自訂帳號>:<密碼>
,例如:Redis執行個體自訂的使用者名稱為admin,密碼為Rp829dlwa,則此處填入的資料庫密碼為admin:Rp829dlwa。
目標資料庫對來源IP進行了限制
檢測方法:
您可以直接在目標資料庫部署的伺服器上,使用資料移轉任務中填入的資料庫帳號和資料庫密碼來串連目標資料庫。如果串連正常,說明可能目標資料庫可能限制了來源IP。
如果目標資料庫為MySQL,您可以使用MySQL用戶端串連目標資料庫後執行下述命令進行檢查。
SELECT HOST FROM mysql.user WHERE user='username',password='password';
說明將username和password替換為資料移轉任務中填寫的資料庫帳號和資料庫密碼。
檢查輸出結果中的授權IP地址清單中是否包含DTS的IP地址,關於DTS遷移時所使用IP地址資訊,請參見遷移、同步或訂閱本機資料庫時需添加的IP白名單。
如果目標資料庫為SQL Server,那麼檢查SQL Server安裝伺服器上是否設定了防火牆,或者檢查目標資料庫中是否有endpoint或trigger限制了訪問來源IP。
如果目標資料庫為Oracle,那麼檢查目標資料庫的設定檔sqlnet.ora,確認配置項
TCP.VALIDNODE_CHECKING
是否為yes
。如果為yes
,說明目標資料庫限制了訪問來源IP。
修複方法:
如果目標資料庫為MySQL,您可以在目標資料庫中執行以下命令為資料移轉使用的資料庫帳號重新授權。
GRANT ALL ON *.* TO 'username'@''%' IDENTIFIED BY 'password';
說明將username和password替換為資料移轉任務中填寫的資料庫帳號和資料庫密碼。
如果目標資料庫為SQL Server,關閉掉防火牆或禁用掉trigger。
如果目標資料庫為Oracle,修改
TCP.VALIDNODE_CHECKING
為no
並重啟進程。
執行了上述修複操作後,登入資料轉送控制台,重新執行預檢查。
目標資料庫伺服器設定了防火牆
檢測方法:
如果安裝目標資料庫的伺服器為Windows,那麼在控制台中尋找到Windows防火牆,查看是否配置了防火牆。
如果安裝目標資料庫的伺服器為Linux,那麼在Shell中使用
iptables -L
命令檢查伺服器是否配置了防火牆。
修複方法:
關閉相關防火牆限制後,登入資料轉送控制台,重新執行預檢查。
網路互連問題
經過上述排查後仍然無法通過目標資料庫連接性檢查,可能是DTS伺服器與目標資料庫網路互連問題。