首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.5 遷移 MariaDB 10.1.14 實戰遇到的問題與解決方案

     編輯:MySQL 綜合教學

MySQL 5.5 遷移 MariaDB 10.1.14 實戰遇到的問題與解決方案

記錄從 MySQL 5.5 遷移至 MariaDB 10.1.14 的完整過程,包含備份策略、表空間衝突、資料類型相容性、主從同步錯誤等實戰問題與解法。

遷移架構規劃

  1. 使用 xtrabackup 熱備份 MySQL 5.5 指定資料庫
  2. 還原至 MariaDB,建立主從複制
  3. 驗證無誤後切換流量

遇到的問題與解決

1. 表空間遷移需獨立表空間

問題:xtrabackup 還原需 innodb_file_per_table=ON,但部分舊表仍在共享表空間 ibdata 中。

解決:申請維護窗口,對受影響表執行 ALTER TABLE ... ENGINE=InnoDB 重建至獨立 .ibd 檔案。

2. 匯入表空間時 date/datetime/timestamp 結構不符

問題:IMPORT TABLESPACE 報錯「表結構不匹配」,涉及欄位為 DATE、DATETIME、TIMESTAMP 類型。

解決:對報錯表改用 mysqldump 邏輯備份匯入,速度可接受且避開實體檔案相容性問題。

3. 主從同步主鍵衝突 (Error 1062)

問題:備份與建立複制間有時間差,新資料導致從庫同步主鍵衝突。

解決:

-- 臨時跳過主鍵衝突
SET GLOBAL sql_slave_skip_counter = 1;  -- 或設定 slave_skip_errors = 1062

-- 開啟 MariaDB 多執行緒複制加速追趕
SET GLOBAL slave_parallel_mode = 'optimistic';
SET GLOBAL slave_parallel_threads = 6;
SET GLOBAL innodb_flush_log_at_trx_commit = 0;  -- 暫時犧牲耐久性換速度

觀察同步狀態:

MariaDB> SHOW PROCESSLIST;
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                            | Info             |
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+
| 23 | system user |           | NULL | Connect | 1197 | Waiting for master to send event | NULL             |
| 24 | system user |           | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL             |
...
| 30 | system user |           | NULL | Connect | 0    | apply log event                  | NULL             |
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+

關鍵參數說明

參數用途
slave_parallel_modeoptimistic:樂觀平行複制,自動偵測衝突
slave_parallel_threadsSQL 執行緒數量
innodb_flush_log_at_trx_commit0=每秒刷盤,效能最佳但可能丟失 1 秒資料

遷移建議總結

  • 大表優先 mysqldump,小表可 xtrabackup 表空間遷移
  • 預先檢查 DATE/DATETIME 欄位相容性
  • 複制延遲大時開啟多執行緒複制並暫時降低耐久性
  • 完整驗證資料一致性(pt-table-checksum)後再切換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved