1. 程式人生 > 其它 >OB-從MySQL遷移資料到Oceanbase

OB-從MySQL遷移資料到Oceanbase

將MySQL表物件資料遷移到Oceanbase

相容性支援情況

物件型別相容性

  1. 基本支援MySQL表和業務SQL的相容
  2. 對於MySQL 的函式、觸發器、儲存過程 的相容性不友好

資料型別相容性

  1. OceanBase 資料庫暫不支援空間資料型別和 JSON 資料型別
  2. 其它資料型別基本都支援
    • 數值型別
    • 日期實踐型別
    • 字元型別
    • 大物件型別

字符集相容性

OceanBase MySQL 租戶支援字符集 binaryutf8mb4 。 預設是utf8mb4

從 MySQL 中匯出資料時,確保資料庫裡的字元正確輸出。推薦使用: utf-8

  • 通過vim 中檢視檔案編碼::set fileencoding

資料遷移方案

這裡主要對資料庫表物件及其資料的遷移。

  1. 將MySQL資料通過邏輯備份工具匯出到可讀格式檔案(SQL,CSV)後在OceanBase中執行即可

    • mysqldump 實現
    • mydumper
  2. 通過binlog日誌同步

邏輯匯出MySQL表物件資料

mysqldump 工具匯出物件資料

mysqldump 是 MySQL 提供的用於匯出 MySQL 資料庫物件和資料的工具。功能豐富且簡單易用。

用法

mysqldump --help

具體實現

匯出指定資料庫的表結構(不含資料)
mysqldump -h 127.1 -uroot -P3306 -d TPCH --compact > tpch_ddl.sql
注意:
  1. 需要去掉MySQL中特定的語法,如:變數 SQL_NOTESDEFINER 語句等

    vim 
    :%s/MAX_ROWS=/; -- MAX_ROWS=/g 
    
  2. 確認兩端的表名稱大小寫是否敏感

  3. 匯入OceanBase MySQL租戶中,需要禁用外來鍵檢查約束

    set global foreign_key_checks=off;
    show global variables like 'foreign_key_checks';
    
匯出指定資料庫的表資料(不含物件定義結構)
mysqldump -h 127.1 -uroot -P3306 -t TPCH > tpch_data.sql