您可以通過mysqldump工具將自建MariaDB數據庫遷移到RDS MariaDB,本文將介紹詳細的操作步驟。
背景信息
由于RDS提供的關系型數據庫服務與原生的數據庫服務完全兼容,所以對用戶來說,將原有數據庫遷移到RDS實例的過程,與從一個MariaDB服務器遷移到另外一臺MariaDB服務器的過程基本類似。
本文以本地Linux7和MariaDB 10.2.4版本為例,演示如何從本地遷移到RDS MariaDB。
注意事項
遷移后的表不區分大小寫,統一變為小寫。
前提條件
操作步驟
使用遠程工具登錄RDS MariaDB實例,創建空數據庫(例如test001)。
登錄本地Linux服務器,使用自帶的mysqldump工具將本地數據庫數據導出為數據文件。
mysqldump -h localhost -u <本地數據庫用戶名> -p --opt --default-character-set=utf8 --hex-blob <想要遷移的數據庫名> --skip-triggers > /tmp/<想要遷移的數據庫名>.sql
示例
說明下文中的user用戶需要具備相關權限,權限設置的詳細操作,請參見權限設置。
mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers > /tmp/testdb.sql
重要導出期間請勿進行數據更新。本步驟僅僅導出數據,不包括存儲過程、觸發器及函數。
使用 mysqldump 導出存儲過程、觸發器和函數。
mysqldump -h localhost -u <本地數據庫用戶名> -p --opt --default-character-set=utf8 --hex-blob <想要遷移的數據庫名> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<想要遷移的數據庫名>_trigger.sql
示例
mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdb_trigger.sql
說明若數據庫中沒有使用存儲過程、觸發器和函數,可跳過此步驟。在導出存儲過程、觸發器和函數時,需要將definer去掉,以兼容RDS。
通過如下命令將數據文件和存儲過程文件導入到目標 RDS 中。
mysql -h <RDS實例外網地址> -P <RDS實例外網端口> -u <RDS實例高權限賬號> -p <RDS上數據庫名> < /tmp/<想要遷移的數據庫名>.sql mysql -h <RDS實例外網地址> -P <RDS實例外網端口> -u <RDS實例高權限賬號> -p <RDS上數據庫名> < /tmp/<想要遷移的數據庫名>trigger.sql
示例
mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb.sql mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb_trigger.sql
刷新遠程工具后查看表,已經有了數據,說明已經遷移成功。
文檔內容是否對您有幫助?