一鍵克隆RDS MySQL至PolarDB MySQL版
本章節(jié)介紹了一鍵克隆RDS MySQL至PolarDB MySQL版的方案簡(jiǎn)介、兩種克隆方式及其優(yōu)勢(shì)和對(duì)比、克隆前提條件、使用限制、收費(fèi)規(guī)則等。
注意事項(xiàng)
通過一鍵克隆方式遷移到PolarDB集群,源RDS實(shí)例的增量數(shù)據(jù)不會(huì)同步到PolarDB集群。
如果需要在新建PolarDB集群的同時(shí),使源RDS實(shí)例的增量數(shù)據(jù)實(shí)時(shí)同步到PolarDB集群,即實(shí)現(xiàn)平滑遷移(不停機(jī)遷移),請(qǐng)參見一鍵升級(jí)RDS MySQL至PolarDB MySQL版。
方案概述
PolarDB支持從RDS MySQL一鍵克隆數(shù)據(jù)至新的PolarDB MySQL版集群。一鍵克隆功能將會(huì)新建一個(gè)與源RDS實(shí)例的數(shù)據(jù)相同的PolarDB集群,PolarDB集群包含源RDS實(shí)例的賬號(hào)、數(shù)據(jù)庫(kù)、IP白名單和必要的參數(shù)。
當(dāng)前支持一鍵克隆的源RDS MySQL的版本和存儲(chǔ)類型,以及目標(biāo)PolarDB MySQL版的版本情況如下:
支持源RDS MySQL所有版本以及所有存儲(chǔ)類型實(shí)例的遷移。不管是RDS MySQL 5.6、5.7還是8.0,本地SSD盤還是云盤存儲(chǔ),都支持一鍵克隆至PolarDB MySQL版。
支持遷移RDS MySQL至相同或不同版本的PolarDB MySQL版。如支持RDS MySQL 5.6一鍵克隆至PolarDB MySQL版 5.6,也支持RDS MySQL 5.6克隆至PolarDB MySQL版 8.0。
RDS MySQL 8.0版本、RDS MySQL云盤版本一鍵克隆至PolarDB MySQL版,以及RDS MySQL跨版本一鍵克隆至PolarDB MySQL版,都是通過邏輯遷移(DTS數(shù)據(jù)同步)方式實(shí)現(xiàn)。
物理遷移和邏輯遷移對(duì)比
當(dāng)前的一鍵克隆功能支持通過物理遷移(物理復(fù)制)和邏輯遷移(DTS數(shù)據(jù)同步)兩種方式實(shí)現(xiàn)。
物理遷移(物理復(fù)制)方式:通過物理復(fù)制的方式,從源RDS MySQL實(shí)例復(fù)制全量數(shù)據(jù)至創(chuàng)建的PolarDB MySQL版集群中。
邏輯遷移(DTS數(shù)據(jù)同步)方式:通過數(shù)據(jù)傳輸服務(wù)DTS,創(chuàng)建數(shù)據(jù)同步任務(wù),將源RDS MySQL實(shí)例的庫(kù)表結(jié)構(gòu)和全量數(shù)據(jù)同步至創(chuàng)建的PolarDB MySQL版集群中。
物理遷移(物理復(fù)制)和邏輯遷移(DTS數(shù)據(jù)同步)方式區(qū)別如下:
對(duì)比項(xiàng) | 物理遷移(物理復(fù)制) | 邏輯遷移(DTS數(shù)據(jù)同步) |
是否需要DTS工具 | 不需要 | 需要 |
是否支持遷移或同步增量數(shù)據(jù) | 不支持 | 不支持 |
是否影響源RDS操作 | 不影響 | 不影響 |
源和目標(biāo)的MySQL版本能否不同 | 僅支持5.6和5.7本地盤實(shí)例相同版本克隆 | 支持相同版本和跨版本克隆 |
克隆后是否需要在PolarDB集群中創(chuàng)建數(shù)據(jù)庫(kù)賬戶 | 不需要,克隆后PolarDB集群包含源RDS實(shí)例的賬號(hào) | 不需要,克隆后PolarDB集群包含源RDS實(shí)例的賬號(hào) |
是否支持新增庫(kù)的遷移 | 不支持 | 不支持 |
支持克隆的RDS MySQL版本和存儲(chǔ)類型如下:
RDS MySQL版本 | 基礎(chǔ)版 | 高可用版 | 集群版 | 三節(jié)點(diǎn)企業(yè)版 |
5.6 | 無 | 本地盤 | 無 | 本地盤 |
5.7 | 云盤 | 本地盤、云盤 | 云盤 | 本地盤 |
8.0 | 云盤 | 本地盤、云盤 | 云盤 | 本地盤 |
其中,除RDS MySQL 5.6和5.7高可用版且存儲(chǔ)類型為本地SSD盤的集群,克隆至相同版本的PolarDB MySQL版集群屬于物理遷移(物理復(fù)制)外,其他形態(tài)的RDS MySQL集群克隆至相同或不同版本的PolarDB MySQL版集群均為邏輯遷移(DTS數(shù)據(jù)同步)。
方案優(yōu)勢(shì)
克隆過程完全免費(fèi)
克隆過程數(shù)據(jù)0丟失
前提條件
通過物理遷移方式進(jìn)行一鍵克隆,源RDS實(shí)例版本需滿足如下條件,邏輯遷移無版本限制:
針對(duì)RDS MySQL 5.6,內(nèi)核小版本需為20190815或以上版本。
針對(duì)RDS MySQL 5.7,內(nèi)核小版本需為20200331或以上版本。
說明您可以執(zhí)行
SHOW VARIABLES LIKE '%rds_release_date%';
命令查看源RDS實(shí)例的內(nèi)核小版本。如果源RDS實(shí)例的內(nèi)核小版本低于上述指定版本,您可以將內(nèi)核小版本升級(jí)到最新版。關(guān)于如何升級(jí)內(nèi)核小版本,請(qǐng)參見升級(jí)內(nèi)核小版本。僅表存儲(chǔ)引擎類型為InnoDB或X-Engine的源RDS實(shí)例支持一鍵克隆功能。
源RDS實(shí)例未開啟TDE和SSL。若已開啟,您可以選擇手動(dòng)創(chuàng)建DTS數(shù)據(jù)遷移任務(wù)將源RDS遷移至PolarDB。更多詳情,請(qǐng)參見RDS MySQL遷移至PolarDB MySQL版。
如果RDS處于高安全模式(數(shù)據(jù)庫(kù)代理模式),需要?jiǎng)?chuàng)建有高權(quán)限賬號(hào)(請(qǐng)參見創(chuàng)建賬號(hào)),或者切換到高性能模式(參見【產(chǎn)品/功能變更】RDS網(wǎng)絡(luò)鏈路升級(jí)說明),才能進(jìn)行一鍵克隆。
使用限制
僅支持將RDS MySQL一鍵克隆至相同版本或更高版本的PolarDB MySQL版,不支持降版本克隆。
如:不支持從RDS MySQL 5.7一鍵克隆至PolarDB MySQL版 5.6,不支持從RDS MySQL 8.0.2一鍵克隆至PolarDB MySQL版 8.0.1。
物理遷移(物理復(fù)制)方式的使用限制如下:
暫不支持跨地域遷移。
遷移期間不允許對(duì)源RDS實(shí)例執(zhí)行參數(shù)設(shè)置的操作。
邏輯遷移(DTS數(shù)據(jù)同步)方式的使用限制如下:
暫不支持跨地域遷移。
遷移期間不允許對(duì)源RDS實(shí)例執(zhí)行參數(shù)設(shè)置的操作。
對(duì)源庫(kù)有如下限制:
類型
說明
源庫(kù)限制
待同步的表需具備主鍵或唯一約束,且字段具有唯一性,否則可能會(huì)導(dǎo)致目標(biāo)數(shù)據(jù)庫(kù)中出現(xiàn)重復(fù)數(shù)據(jù)。
如同步對(duì)象為表級(jí)別,且需進(jìn)行編輯(如表列名映射),則單次同步任務(wù)僅支持同步至多1000張表。當(dāng)超出數(shù)量限制,任務(wù)提交后會(huì)顯示請(qǐng)求報(bào)錯(cuò),此時(shí)建議您拆分待同步的表,分批配置多個(gè)任務(wù),或者配置整庫(kù)的同步任務(wù)。
Binlog日志:需開啟Binlog,開啟方法請(qǐng)參見設(shè)置實(shí)例參數(shù),并且binlog_row_image為full。否則預(yù)檢查階段提示報(bào)錯(cuò),且無法成功啟動(dòng)數(shù)據(jù)同步任務(wù)。
其他限制:
類型
說明
其他限制
執(zhí)行數(shù)據(jù)同步前需評(píng)估源庫(kù)和目標(biāo)庫(kù)的性能,同時(shí)建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步。否則全量數(shù)據(jù)初始化時(shí)將占用源庫(kù)和目標(biāo)庫(kù)一定的讀寫資源,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的負(fù)載上升。
全量初始化會(huì)并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫(kù)的表產(chǎn)生碎片,因此全量初始化完成后目標(biāo)實(shí)例的表空間比源實(shí)例的表空間大。
如同步對(duì)象為單個(gè)或多個(gè)表(非整庫(kù)),那么在數(shù)據(jù)同步時(shí),勿對(duì)源庫(kù)的同步對(duì)象使用gh-ost或pt-online-schema-change等類似工具執(zhí)行在線DDL變更,否則會(huì)導(dǎo)致同步失敗。
您可以使用數(shù)據(jù)管理DMS(Data Management Service)來執(zhí)行在線DDL變更,請(qǐng)參見不鎖表結(jié)構(gòu)變更。
在DTS同步期間,不允許有除DTS外的數(shù)據(jù)寫入目標(biāo)庫(kù),否則會(huì)導(dǎo)致源庫(kù)與目標(biāo)庫(kù)數(shù)據(jù)不一致。例如,有除DTS外的數(shù)據(jù)寫入目標(biāo)庫(kù)時(shí),使用DMS執(zhí)行在線DDL變更,可能引起目標(biāo)庫(kù)數(shù)據(jù)丟失。
DTS默認(rèn)同步到目標(biāo)數(shù)據(jù)庫(kù)中時(shí)會(huì)取消外鍵約束,因此源數(shù)據(jù)庫(kù)的級(jí)聯(lián)、刪除等操作不會(huì)同步到目標(biāo)數(shù)據(jù)庫(kù)。
收費(fèi)規(guī)則
物理遷移(物理復(fù)制)方式的收費(fèi)規(guī)則如下:
從RDS遷移到PolarDB的操作完全免費(fèi),您只需承擔(dān)購(gòu)買PolarDB集群的費(fèi)用。關(guān)于PolarDB集群的費(fèi)用,詳情請(qǐng)參見計(jì)費(fèi)項(xiàng)概覽。
對(duì)于包年包月的RDS實(shí)例,從RDS遷移到PolarDB完成后,若確定業(yè)務(wù)已在PolarDB上穩(wěn)定運(yùn)行且不再需要RDS時(shí),您可以申請(qǐng)轉(zhuǎn)單優(yōu)惠退款,避免浪費(fèi)閑置的RDS資源,詳情請(qǐng)參見包年包月RDS遷移至PolarDB后申請(qǐng)轉(zhuǎn)單優(yōu)惠退款。
邏輯遷移(DTS數(shù)據(jù)同步)方式的收費(fèi)規(guī)則如下:
您除了需承擔(dān)購(gòu)買PolarDB集群的費(fèi)用之外,還需承擔(dān)DTS所創(chuàng)建的同步任務(wù)產(chǎn)生的費(fèi)用。但現(xiàn)階段該功能處于試用階段,創(chuàng)建的同步任務(wù)30天內(nèi)不收取任何費(fèi)用(不支持虛商、RAM用戶(子賬號(hào))等賬號(hào)參加該免費(fèi)活動(dòng))。具體如下:
遷移對(duì)象
費(fèi)用
庫(kù)表結(jié)構(gòu)同步和全量數(shù)據(jù)同步
創(chuàng)建同步任務(wù)后,30天內(nèi)不收取任何費(fèi)用。
超過30天后,將會(huì)取消創(chuàng)建的同步任務(wù)。
說明您可以前往新版DTS同步任務(wù)的列表頁面查看同步任務(wù)的剩余時(shí)間。
接下來將為您介紹如何進(jìn)行一鍵克隆RDS MySQL至PolarDB MySQL版。
前置檢查:檢查是否已創(chuàng)建PolarDB服務(wù)關(guān)聯(lián)角色(僅限邏輯遷移)
在使用邏輯遷移(DTS數(shù)據(jù)同步)方式進(jìn)行一鍵克隆前,請(qǐng)先檢查當(dāng)前阿里云賬號(hào)下是否已創(chuàng)建PolarDB服務(wù)關(guān)聯(lián)角色。具體步驟如下:
前往RAM控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇身份管理>角色。
在角色列表中,查看是否已存在名為AliyunServiceRoleForPolarDB的服務(wù)關(guān)聯(lián)角色。
若存在,則執(zhí)行步驟一:從RDS克隆;。
若不存在,則繼續(xù)執(zhí)行以下步驟。
單擊左側(cè)創(chuàng)建角色。
在彈出的創(chuàng)建角色對(duì)話框中,選擇阿里云服務(wù),并單擊下一步。
選擇角色類型為服務(wù)關(guān)聯(lián)角色,并選擇云服務(wù)為云數(shù)據(jù)庫(kù)PolarDB。
單擊完成,返回角色列表,確保已創(chuàng)建成功。
前置檢查:刪除源RDS實(shí)例中多余系統(tǒng)賬號(hào)
為了兼容RDS MySQL和PolarDB兩者的系統(tǒng)賬號(hào)體系,避免遷移后目標(biāo)PolarDB的系統(tǒng)賬號(hào)被覆蓋,源RDS實(shí)例中不允許同時(shí)存在root和aliyun_root賬號(hào)。因此,在進(jìn)行遷移前,請(qǐng)先刪除源RDS實(shí)例中多余的系統(tǒng)賬號(hào)。
RDS MySQL各個(gè)版本的正確系統(tǒng)賬號(hào)名如下:
RDS MySQL版本 | 正確的系統(tǒng)賬號(hào)名 |
RDS MySQL 5.6 | root |
RDS MySQL 5.7 | aliyun_root |
RDS MySQL 8.0 | aliyun_root |
各個(gè)版本除了對(duì)應(yīng)的系統(tǒng)賬號(hào)之外,其余系統(tǒng)賬號(hào)均需刪除。
賬號(hào)可能是用戶創(chuàng)建的,也可能是系統(tǒng)創(chuàng)建并因版本升級(jí)而遺留的,某些場(chǎng)景下不會(huì)在控制臺(tái)顯示。
以清理RDS MySQL 5.6多余的系統(tǒng)賬號(hào)為例,具體刪除步驟如下:
使用高權(quán)限賬號(hào)連接實(shí)例。
找到所有的root和aliyun_root系統(tǒng)賬號(hào)。
select * from mysql.user where user in ('root', 'aliyun_root');
刪除多余的系統(tǒng)賬號(hào)。RDS MySQL 5.6正確的系統(tǒng)賬號(hào)是root,因此需要?jiǎng)h除aliyun_root賬號(hào)。
delete from mysql.user where user = 'aliyun_root' limit n;
步驟一:從RDS克隆
本操作將創(chuàng)建一個(gè)與源RDS實(shí)例數(shù)據(jù)相同的PolarDB集群。
在左上角,選擇集群所在地域。
單擊創(chuàng)建新集群。
選擇計(jì)費(fèi)類型為包年包月、按量付費(fèi)或Serverless。
包年包月:在創(chuàng)建集群時(shí)支付計(jì)算節(jié)點(diǎn)的費(fèi)用,而存儲(chǔ)空間會(huì)根據(jù)實(shí)際數(shù)據(jù)量按小時(shí)計(jì)費(fèi),并從賬戶中按小時(shí)扣除。
按量付費(fèi):無需預(yù)先支付費(fèi)用,計(jì)算節(jié)點(diǎn)和存儲(chǔ)空間(根據(jù)實(shí)際數(shù)據(jù)量)均按小時(shí)計(jì)費(fèi),并從賬戶中按小時(shí)扣除。
Serverless:無需預(yù)先支付費(fèi)用,計(jì)算節(jié)點(diǎn)、存儲(chǔ)空間、數(shù)據(jù)庫(kù)代理等資源在集群使用過程中基于實(shí)際需求動(dòng)態(tài)彈性擴(kuò)縮,并根據(jù)擴(kuò)縮的實(shí)際用量來計(jì)費(fèi)。
設(shè)置如下參數(shù)。
說明下表格中未詳細(xì)介紹的參數(shù),請(qǐng)參考購(gòu)買集群相關(guān)章節(jié)。
參數(shù)
說明
創(chuàng)建方式
選擇從RDS克隆。
地域
選擇源RDS MySQL實(shí)例所在地域。
說明新建的PolarDB集群也在此地域。
源RDS版本
源RDS實(shí)例的版本,您可以選擇5.6、5.7或8.0。
源RDS實(shí)例
選擇源RDS實(shí)例,不包括只讀實(shí)例。
數(shù)據(jù)庫(kù)引擎
目標(biāo)PolarDB集群的數(shù)據(jù)庫(kù)引擎版本。您可以選擇與源RDS實(shí)例一致的版本,也可以選擇跨版本。
節(jié)點(diǎn)規(guī)格
按需選擇,建議不低于源RDS實(shí)例規(guī)格。關(guān)于PolarDB節(jié)點(diǎn)規(guī)格,詳情請(qǐng)參見企業(yè)版計(jì)算節(jié)點(diǎn)規(guī)格。
在右上角檢查集群配置信息,設(shè)置購(gòu)買時(shí)長(zhǎng)(針對(duì)包年包月集群)、購(gòu)買數(shù)量和是否自動(dòng)續(xù)費(fèi)。
閱讀并勾選服務(wù)協(xié)議。單擊立即購(gòu)買。
在支付頁面,確認(rèn)未支付訂單信息和支付方式,單擊訂購(gòu)。
說明支付成功后,需要等待10~15分鐘創(chuàng)建集群,之后您就可以在集群列表中看到新創(chuàng)建的集群。
當(dāng)集群中的節(jié)點(diǎn)狀態(tài)為創(chuàng)建中時(shí),整個(gè)集群可能仍未創(chuàng)建完成,此時(shí)集群不可用。只有當(dāng)集群狀態(tài)為運(yùn)行中時(shí),集群才可以正常使用。
請(qǐng)確認(rèn)已選中正確的地域,否則無法看到您創(chuàng)建的集群。
登錄PolarDB控制臺(tái),查看新建的PolarDB集群的狀態(tài)。
說明若您是通過邏輯遷移(DTS數(shù)據(jù)同步)方式進(jìn)行一鍵克隆,請(qǐng)單擊集群ID進(jìn)入集群基本信息頁,查看遷移狀態(tài)。若RDS遷移狀態(tài)變?yōu)?b data-tag="uicontrol" id="uicontrol-ovj-zwb-tnv" class="uicontrol">預(yù)檢查失敗,請(qǐng)根據(jù)錯(cuò)誤信息中的提示進(jìn)行處理。
例如,如果源RDS中創(chuàng)建了觸發(fā)器,則預(yù)檢查會(huì)失敗并報(bào)錯(cuò)“RDS實(shí)例存在觸發(fā)器”。請(qǐng)先刪除源RDS的觸發(fā)器,再點(diǎn)擊繼續(xù)遷移,或者點(diǎn)擊放棄遷移后手動(dòng)去DTS控制臺(tái)頁面創(chuàng)建遷移任務(wù)。具體可參見源庫(kù)存在觸發(fā)器時(shí)如何配置同步或遷移作業(yè)。
您也可以在此步驟選擇放棄遷移,相關(guān)影響請(qǐng)參見常見問題。
步驟二:查看數(shù)據(jù)同步任務(wù)詳情(僅限邏輯遷移)
若您是通過邏輯遷移(DTS數(shù)據(jù)同步)方式進(jìn)行一鍵克隆,請(qǐng)單擊集群ID進(jìn)入集群基本信息頁,查看遷移狀態(tài)。若遇到遷移報(bào)錯(cuò)(如預(yù)檢查失敗)或者其他異常狀態(tài)(如復(fù)制延遲異常高)時(shí),您可以前往對(duì)應(yīng)的DTS數(shù)據(jù)同步任務(wù)的詳情頁,查看數(shù)據(jù)同步任務(wù)的具體信息。
進(jìn)入PolarDB控制臺(tái)。
找到目標(biāo)集群,單擊集群ID。
在基本信息頁面的RDS遷移功能中,單擊DTS數(shù)據(jù)同步任務(wù)的任務(wù)名稱,進(jìn)入DTS控制臺(tái)數(shù)據(jù)同步列表。
找到對(duì)應(yīng)的數(shù)據(jù)同步任務(wù),您可查看預(yù)檢查失敗詳情、查看同步任務(wù)詳情、查看同步任務(wù)日志等。
常見問題
Q:一鍵升級(jí)RDS MySQL至和一鍵克隆RDS MySQL至PolarDB MySQL版兩者有什么區(qū)別?
A:兩者間的區(qū)別如下表:
對(duì)比項(xiàng)
一鍵克隆RDS MySQL至PolarDB MySQL版
是否支持遷移或同步增量數(shù)據(jù)
支持
不支持
是否影響源RDS操作
不影響
不影響
源和目標(biāo)的MySQL版本能否不同
可以不同
可以不同
Q:從RDS克隆會(huì)影響源RDS實(shí)例嗎?
A:不會(huì)影響源RDS實(shí)例的正常運(yùn)行。
Q:取消遷移會(huì)有什么影響?
A:取消遷移會(huì)有如下影響:
會(huì)切斷源集群到目標(biāo)集群的同步鏈路,源集群和目標(biāo)集群不再關(guān)聯(lián)。
目標(biāo)集群恢復(fù)可讀可寫狀態(tài),且不會(huì)自動(dòng)釋放。若不再需要使用該集群,請(qǐng)盡快釋放,避免產(chǎn)生額外費(fèi)用。
手動(dòng)取消遷移時(shí)可以選擇是否關(guān)閉集群的Binlog,自動(dòng)取消遷移時(shí)不會(huì)關(guān)閉Binlog。
說明關(guān)閉Binlog會(huì)帶來少量的寫入性能提升,Binlog關(guān)閉后,已有的Binlog文件會(huì)一直保留。您可以先縮短Binlog文件的保存時(shí)長(zhǎng),等待不需要的文件自動(dòng)刪除后,再關(guān)閉Binlog。關(guān)閉Binlog后集群會(huì)自動(dòng)重啟,重啟任務(wù)會(huì)在5分鐘之內(nèi)完成,重啟時(shí)服務(wù)閃斷時(shí)間在40秒左右。具體時(shí)間與數(shù)據(jù)量和表數(shù)量相關(guān),建議您在業(yè)務(wù)低谷期進(jìn)行操作并確保應(yīng)用程序具備重連機(jī)制。
相關(guān)API
API | 描述 |
創(chuàng)建PolarDB集群。 說明 一鍵克隆時(shí),參數(shù)CreationOption取值需要為CloneFromRDS。 |
后續(xù)步驟
請(qǐng)盡快將應(yīng)用的數(shù)據(jù)庫(kù)連接地址修改為PolarDB的地址,詳情請(qǐng)參見管理連接地址。