本頁介紹MySQL遷移/同步到MySQL時各種預檢查不通過情況的故障排除方法。
數據庫參數檢查
1、 源數據庫binlog日志是否開啟
| 失敗原因 | 處理建議 |
|---|
| 源庫Binlog未開啟。 | 請在配置文件的[mysqld]標簽下配置上log_bin參數: log_bin=mysql_bin
然后重啟mysqld服務。
|
2、源庫binlog模式檢查
| 失敗原因 | 處理建議 |
|---|
| 請在配置文件的[mysqld]標簽下配置上log_bin參數: binlog_format=row 然后重啟mysqld服務。
|
3、源庫binlog影像類型檢查
| 失敗原因 | 處理建議 |
|---|
| 源庫binlog_row_image設置不正確。 | 請在配置文件的[mysqld]標簽下配置上log_bin參數: binlog_row_image=full 然后重啟mysqld服務。
|
4、源庫binlog存在性檢查
5、源庫和目標庫字符集一致性檢查
| 失敗原因 | 處理建議 |
|---|
| 源數據庫和目標數據庫字符集不一致。 | 查看源數據庫和目標數據庫的字符集是否一致: show global variables like "character_set_server"; 使用命令修改服務器的字符集: set global character_set_server='<字符集>';
|
6、源庫和目標庫時區一致性檢查
7、sql_mode參數一致性檢查
| 失敗原因 | 處理建議 |
|---|
| 源庫和目標庫的sql_mode設置不一致。 | 登錄源庫,查看源庫的sql_mode取值: show global variables like '%sql_mode%'; 登錄目標數據庫,將sql_mode設置為和源庫一致: set global sql_mode='<源庫的sql_mode>';
|
8、源庫server_id檢查
| 失敗原因 | 處理建議 |
|---|
| 查看源庫的server_id是否大于0。 | |
9、lower_case_table_names一致性檢查
| 失敗原因 | 處理建議 |
|---|
| 源庫和目標庫lower_case_table_names設置不一致。 | 請登錄源庫和目標庫檢查各自lower_case_table_names的值,并選擇目標庫,在配置文件的[mysqld]標簽下明確添加lower_case_table_names的值和對方一致。 然后重啟mysqld服務。
|
10、log_slave_updates參數檢查
| 失敗原因 | 處理建議 |
|---|
| 源庫為集群的從節點,且log_slave_updates參數不為ON,期間源庫重放集群主節點的事務將不會同步到目標庫。 | |
11、gtid_mode參數檢查
| 失敗原因 | 處理建議 |
|---|
| 源庫和目標庫的gtid_mode參數不為ON,將不支持同步過程中源庫的主備切換。 | |
12、目標庫日志包大小檢查
| 失敗原因 | 處理建議 |
|---|
目標庫max_allowed_packet的值設置小于500M。 | set global max_allowed_packet=500M;
然后重新進行預檢查。
|
13、待遷移表主鍵檢查
| 失敗原因 | 處理建議 |
|---|
待遷移對象中存在無主鍵的表。 待遷移對象中的表在列名映射中,主鍵未被勾選。
| |
數據庫用戶權限檢查
1、源庫用戶權限檢查
| 失敗原因 | 處理建議 |
|---|
源庫遷移賬號沒有對MySQL庫的查詢權限。 源庫遷移賬號沒有對某些待遷移庫的查詢權限。 源庫遷移賬號缺少部分全局權限。
| 源庫為MySQL5.7時,執行以下命令為源庫遷移賬號賦予正確權限:
GRANT SELECT ON mysql.* TO '遷移賬號'@'%'; GRANT SELECT, EVENT,TRIGGER ON 待遷移的庫.* TO '遷移賬號'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON *.* TO '遷移賬號'@'%';
源庫為MySQL8.0時,執行以下命令為源庫遷移賬號賦予正確權限: GRANT SELECT ON mysql.* TO '遷移賬號'@'%'; GRANT SELECT, EXECUTE, EVENT, TRIGGER ON 待遷移的庫.* TO '遷移賬號'@'%'; GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, SHOW_ROUTINE ON *.* TO '遷移賬號'@'%';
|
2、目標庫用戶權限檢查
| 失敗原因 | 處理建議 |
|---|
| 目標庫遷移賬號缺少部分全局權限。 | 登錄MySQL目標數據庫,執行以下命令賦予遷移賬號以下全局權限: GRANT SELECT ON mysql.* TO '遷移賬號'@'%'; GRANT SHOW DATABASES,PROCESS,CREATE USER ON *.* TO '遷移賬號'@'%'; GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES,CREATE VIEW, DELETE ,DROP, EVENT, EXECUTE, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE ON `待遷移庫`.* TO '遷移賬號'@'%';
|
數據庫版本檢查
1、MySQL版本檢查
網絡情況檢查
1、源庫連通性檢查
| 失敗原因 | 處理建議 |
|---|
源數據庫賬號或密碼不正確。
| 輸入正確的數據庫賬號和密碼后重新執行預檢查。 |
| 源數據庫所在網絡或服務器設置了防火墻。 | 查看數據庫所在的網絡防火墻是否限制了DTS的IP地址段,如果有,關閉防火墻或者將DTS的IP地址加入防火墻白名單中。 |
| 源庫遷移賬號登錄權限不足。 | 登錄源庫,為遷移賬號添加相應的遠程訪問權限。 |
| 網絡互通問題。 | 聯系數據庫所在機器管理人員和DTS部署機器管理人員排查問題。 |
2、目標庫連通性檢查
| 失敗原因 | 處理建議 |
|---|
目標數據庫賬號或密碼不正確。
| 輸入正確的數據庫賬號和密碼后重新執行預檢查。 |
| 目標數據庫所在網絡或服務器設置了防火墻。 | 查看數據庫所在的網絡防火墻是否限制了DTS的IP地址段,如果有,關閉防火墻或者將DTS的IP地址加入防火墻白名單中。 |
| 目標庫遷移賬號登錄權限不足。 | 登錄目標庫,為遷移賬號添加相應的遠程訪問權限。 |
| 網絡互通問題。 | 聯系數據庫所在機器管理人員和DTS部署機器管理人員排查問題。 |
數據庫對象檢查
1、同名對象存在性檢查
| 失敗原因 | 處理建議 |
|---|
| 目標庫存在和待遷移對象同名的表、視圖、函數或者存儲過程。 | |
2、schema默認字符集檢查
3、存儲引擎檢查
| 失敗原因 | 處理建議 |
|---|
部分待遷移表的存儲引擎不是InnoDB或MyISAM。
| 將不支持的表更換到支持的存儲引擎: alter table <表名> engine=InnoDB; 根據失敗詳情,從待遷移對象中移出那些存儲引擎不支持的表。
|
鼠標選中文檔,精準反饋問題
選中存在疑惑的內容,即可快速反饋問題,我們會跟進處理
知道了