本文介紹如何使用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權限的語句,將相關語句刪除再執行。