本文介紹如何使用mysqldump工具將自建MySQL資料庫遷移至PolarDB 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系統上示範相關操作步驟。
使用mysqldump匯出自建資料庫的資料、預存程序、觸發器和函數。
說明匯出期間請勿進行資料更新,耐心等待匯出完成。
在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
(可選)在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
將匯出的檔案匯入到目標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叢集帳號需要是高許可權帳號或具有讀寫權限的帳號。
匯入成功後,您可以登入PolarDB叢集資料庫中查看資料是否正常。具體操作,請參見串連資料庫叢集。
常見問題
Q:Access denied; you need (at least one of) the SUPER privilege(s) for this operation
報錯怎麼解決?
A:SQL指令碼裡麵包括SUPER許可權的語句,將相關語句刪除再執行。