全部產品
Search
文件中心

:使用mysqldump將自建MariaDB資料庫遷移上雲

更新時間:Feb 28, 2024

您可以通過mysqldump工具將自建MariaDB資料庫遷移到RDS MariaDB,本文將介紹詳細的操作步驟。

背景資訊

由於RDS提供的關係型資料庫服務與原生的資料庫服務完全相容,所以對使用者來說,將原有資料庫遷移到RDS執行個體的過程,與從一個MariaDB伺服器遷移到另外一台MariaDB伺服器的過程基本類似。

本文以本地Linux7和MariaDB 10.2.4版本為例,示範如何從本地遷移到RDS MariaDB。

注意事項

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

前提條件

已對RDS執行個體設定白名單申請外網地址

操作步驟

  1. 使用遠程工具登入RDS MariaDB執行個體,建立空資料庫(例如test001)。

  2. 登入本地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
    重要

    匯出期間請勿進行資料更新。本步驟僅僅匯出資料,不包括預存程序、觸發器及函數。

  3. 使用 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。

  4. 通過如下命令將資料檔案和預存程序檔案匯入到目標 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
  5. 重新整理遠程工具後查看錶,已經有了資料,說明已經遷移成功。