您可以通過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
重新整理遠程工具後查看錶,已經有了資料,說明已經遷移成功。