全部產品
Search
文件中心

PolarDB:從自建MySQL遷移至PolarDB MySQL版(mysqldump工具)

更新時間:Jul 06, 2024

本文介紹如何使用mysqldump工具將自建MySQL資料庫遷移至PolarDB MySQL版

前提條件

遷移方式對比

您可以通過mysqldump或DTS工具將自建MySQL資料庫遷移至PolarDB MySQL版,下表對比了兩種遷移方式的差異供您參考。

對比項

mysqldump

DTS

自建MySQL資料庫版本

無限制

自建MySQL資料庫版本為5.1、5.5、5.6、5.7或8.0版本。

是否支援結構遷移和全量資料移轉

支援

支援

是否支援增量資料移轉

不支援

支援

是否支援不停機遷移

不支援

支援

說明

使用DTS工具進行資料移轉的操作步驟,請參見自建MySQL遷移至PolarDB MySQL版

注意事項

遷移後的表名不區分大小寫,統一變為小寫。

操作步驟

說明

本文以自建MySQL 8.0版本為例,在Linux系統上示範相關操作步驟。

  1. 使用mysqldump匯出自建資料庫的資料、預存程序、觸發器和函數。

    說明

    匯出期間請勿進行資料更新,耐心等待匯出完成。

    1. 在Linux命令列下匯出自建資料庫的資料,命令如下:

      說明

      針對自建資料庫的串連地址:

      • 若自建MySQL資料庫部署在ECS執行個體上,請填入127.0.0.1

      • 若自建MySQL資料庫部署在本地,請填入該資料庫的公網串連地址。

      mysqldump -h <自建資料庫的串連地址>  -u user -p --opt --default-character-set=utf8 --hex-blob <自建資料庫名> --skip-triggers --skip-lock-tables > /tmp/<自建資料庫名>.sql

      樣本

      mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sql
    2. (可選)在Linux命令列下匯出預存程序、觸發器和函數,命令如下:

      說明

      若資料庫中沒有使用預存程序、觸發器和函數,可跳過該步驟。

      mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <自建資料庫名> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<自建資料庫名>Trigger.sql

      樣本

      mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sql
  2. 將匯出的檔案匯入到目標PolarDB叢集中,命令如下:

    mysql -h <PolarDB叢集串連地址> -P <PolarDB叢集連接埠> -u <PolarDB叢集帳號> -p <PolarDB資料庫名稱> < /tmp/<自建資料庫名>.sql
    mysql -h <PolarDB叢集串連地址> -P <PolarDB叢集連接埠> -u <PolarDB叢集帳號> -p <PolarDB資料庫名稱> < /tmp/<自建資料庫名>Trigger.sql

    樣本

    mysql -h polardbtest.mysql.polardb.rds.aliyuncs.com -P 3306 -u testuser -p testdb  < /tmp/testdb.sql
    mysql -h polardbtest.mysql.polardb.rds.aliyuncs.com -P 3306 -u testuser -p testdb  < /tmp/testdbTrigger.sql
    說明
    • PolarDB資料庫名稱需要是PolarDB叢集上已建立的資料庫。建立資料庫操作,請參見建立資料庫

    • PolarDB叢集帳號需要是高許可權帳號或具有讀寫權限的帳號。

  3. 匯入成功後,您可以登入PolarDB叢集資料庫中查看資料是否正常。具體操作,請參見串連資料庫叢集

常見問題

Q:Access denied; you need (at least one of) the SUPER privilege(s) for this operation報錯怎麼解決?

A:SQL指令碼裡麵包括SUPER許可權的語句,將相關語句刪除再執行。