使用 DTS 遷移 MySQL 數據__遷移數據_快速入門(MySQL)_雲數據庫 RDS 版-阿裏雲
使用數據傳輸服務(DTS)將本地數據庫遷移到 RDS for MySQL,可以實現應用不停服務的情況下,平滑完成數據庫的遷移工作。
背景信息
DTS 數據遷移支持 MySQL 的結構遷移、全量遷移和增量遷移。
結構遷移
DTS 會將本地數據庫的結構定義遷移到目標實例。目前 DTS 支持結構遷移的對象有:表、視圖、觸發器、存儲過程、存儲函數。
全量遷移
DTS 會將本地數據庫遷移對象的數據全部遷移到目標實例。如果用戶還選擇了增量遷移,那麼全量遷移過程中,為了保證數據一致性,無主鍵的非事務表會被鎖定,鎖定期間這些表無法寫入,鎖定時長依賴於這些表的數據量大小,在這些無主鍵非事務表遷移完成後,鎖才會釋放。
增量遷移
增量遷移會將遷移過程進行數據變更同步到目標實例,如果遷移期間進行了 DDL 操作,那麼這些結構變更不會遷移到目標實例。
遷移限製
將本地數據庫遷移到 RDS 上有以下限製。
- 遷移過程中,不支持 DDL 操作
- 結構遷移不支持 event 的遷移
- 如果使用了對象名映射功能後,依賴這個對象的其他對象可能遷移失敗
- 當選擇增量遷移時,本地 MySQL 實例需要開啟 binlog,且本地庫的 binlog_format 要為 row。如果本地 MySQL 為5.6版本時,它的 binlog_row_image 還須設置為 full
前提條件
已完成 RDS 實例數據庫的準備,可參見 設置連接模式 和 創建數據庫和賬號。
操作步驟
本例以有公網 IP 的本地數據庫遷移到 RDS 上為例。
準備本地數據
在正式遷移之前,需要先在本地數據庫和 RDS 實例中創建遷移賬號,並在 RDS 實例中創建要遷移的數據庫,並將要遷移的數據庫的讀寫權限授權給遷移賬號。不同的遷移類型需要不同的權限,如下表所示。
遷移類型 | 結構遷移 | 全量遷移 | 增量遷移 |
---|---|---|---|
本地數據庫 | select | select | select replication slave replication client |
RDS 實例 | 讀寫權限 | 讀寫權限 | 讀寫權限 |
在本地數據庫中創建遷移賬號。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
參數說明:
- username:要創建的賬號
- host:指定該賬號登錄數據庫的主機。如果是本地用戶可以使用 localhost,如果想讓該用戶從任意主機登錄,可以使用通配符 %
- password:該賬號的登錄密碼
例:要創建賬號為 William,密碼為 Changme123 的賬號從任意主機登錄本地數據庫,命令如下:
CREATE USER 'William'@'%' IDENTIFIED BY 'Changme123';
在本地數據庫中給遷移賬號授權,本地數據庫中遷移賬號的權限要求請參見上表。
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
參數說明:
- privileges:該賬號的操作權限,如 SELECT、INSERT、UPDATE 等。如果要授權該賬號所有權限,則使用 ALL
- databasename:數據庫名。如果要授權該賬號所有的數據庫權限,則使用通配符 *
- tablename:表名。如果要授權該賬號所有的表權限,則使用通配符 *
- username:要授權的賬號名
- host:授權登錄數據庫的主機名。如果是本地用戶可以使用 localhost,如果想讓該用戶從任意主機登錄,可以使用通配符 %
- WITH GRANT OPTION:授權該賬號能使用GRANT命令,該參數為可選
例:授權賬號 William 對所有數據庫和表的所有權限,並可以從任意主機登錄本地數據庫,命令如下:
GRANT ALL ON *.* TO 'William'@'%';
說明: 如果需要進行增量遷移,那麼需要確認本地數據庫的 binlog 是否開啟並正確設置,執行以下步驟。
開啟本地數據庫的 binlog。
使用如下命令查詢是否開啟了binlog。
show global variables like "log_bin";
如果查詢結果為 log_bin=OFF,那麼本地數據庫沒有開啟 binlog。為了使遷移過程中產生的增量數據能同步遷移,需要修改配置文件 my.cnf 中的如下參數。
log_bin=mysql_bin
binlog_format=row
server_id=大於 1 的整數
binlog_row_image=full //當本地 MySQL 版本大於 5.6 時,則需設置該項
- 修改完成後,重啟 MySQL 進程。
其中,“mysql_dir”為MySQL安裝目錄。$mysql_dir/bin/mysqladmin -u root -p shutdown
$mysql_dir/bin/safe_mysqld &
正式遷移操作
數據準備完畢後,即可進入正式的遷移操作。
在 RDS 管理控製台 上單擊 遷移數據庫,進入 DTS,如下圖所示。
單擊 創建在線遷移任務,進入 創建遷移任務 頁麵,如下圖所示。
輸入任務名稱、本地數據庫信息和目標數據庫信息,單擊 授權白名單並進入下一步,如下圖所示。
- 任務名稱:自定義任務名稱,可以保持默認值
- 源庫信息
- 實例類型:本地數據庫的實例類型,可以選擇 有公網IP的自建數據庫、ECS上的自建數據庫、RDS實例、雲數據庫MongoDB
- 數據庫類型:本地數據庫的類型,可以選擇 Oracle、MySQL、SQLServer、PostgreSQL、MongoDB
- 主機名或 IP 地址:本地數據庫的公網地址
- 端口:本地數據庫的公網端口
- 賬號:本地數據庫的遷移賬號
- 密碼:本地數據庫遷移賬號對應的密碼
- 目標庫信息
- 實例類型:默認為 RDS 實例
- RDS 實例 ID:目標 RDS 實例的 ID。點擊下拉菜單將自動聯想當前登錄 RDS 管理控製台 的賬號的 RDS 實例,點擊選擇所需要的實例
- 賬號:目標 RDS 數據庫的遷移賬號
- 密碼:目標 RDS 數據庫遷移賬號對應的密碼
擇遷移類型,並在 遷移對象 中選擇要遷移的對象,單擊 > 將要遷移的對象放入 已選擇 中,單擊 預檢查並啟動,如下圖所示。
注意
- 數據遷移隻會將本地數據庫的數據(結構)複製一份到目標數據庫,並不會對本地數據庫數據(結構)造成影響
- 數據遷移過程中,不支持 DDL 操作,如進行 DDL 操作可能導致遷移失敗
- DTS 增量遷移的時間最長支持 15 天,如果超過 15 天不停止任務,係統資源可能被回收
如果要修改遷移對象在目標數據庫上的名字,可以在 已選擇 列表右側單擊 編輯,修改已選擇的對象名稱,如上圖4所示。
說明: 以下以預檢查不通過為例進行描述,如果預檢查通過,請直接參見步驟 8。
係統顯示預檢查結果,如下圖所示。
單擊 檢測結果 為 失敗 的檢測項後的 !,查看失敗詳細信息,根據失敗詳細信息完成錯誤排查。
錯誤排查完畢後,在 遷移任務列表 頁麵,選擇當前遷移任務,單擊 啟動,如下圖所示。
係統預檢查通過後,單擊 確定,自動進行遷移任務,如下圖所示。
後續操作
因遷移賬號擁有讀寫權限,為了保證本地數據庫安全,請在數據遷移完成後,刪除本地數據庫和 RDS 實例中的遷移賬號。
最後更新:2016-11-23 16:03:53
上一篇:
創建高權限賬號__設置實例基礎配置_快速入門(MySQL)_雲數據庫 RDS 版-阿裏雲
下一篇:
使用 mysqldump 遷移 MySQL 數據__遷移數據_快速入門(MySQL)_雲數據庫 RDS 版-阿裏雲
DRDS數據源配置__數據源配置_數據同步手冊_用戶操作指南_大數據開發套件-阿裏雲
DRDSWriter__Writer插件_使用手冊_數據集成-阿裏雲
萬網域名使用萬網企業郵箱,設置解析方法__郵箱解析_產品使用問題_雲解析-阿裏雲
IP黑名單__訪問控製_用戶指南_CDN-阿裏雲
Hue 使用說明__開源組件介紹_用戶指南_E-MapReduce-阿裏雲
郵箱設置___郵箱常見問題_企業郵箱-阿裏雲
雲服務器 ECS包月ECS帶寬按流量計費FAQ
API使用__錄音文件識別_語音識別(ASR)_智能語音交互-阿裏雲
VirtualBorderRouterForPhysicalConnectionType__數據類型_API 參考_雲服務器 ECS-阿裏雲
EncryptionContext說明__API 參考_密鑰管理服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲