創(chuàng)建數(shù)據(jù)庫實例
RDS 服務管理入口位于蜂巢首頁的數(shù)據(jù)庫服務選項。點擊「數(shù)據(jù)庫」,即可顯示你的所有 RDS 實例列表,包括普通實例和只讀實例。你可以在該界面進行實例創(chuàng)建、安全組管理等操作,此外還可以對具體實例進行設(shè)置、創(chuàng)建只讀實例或提升只讀實例角色(即提升只讀實例為普通實例)等操作。
點擊「實例名稱」,即可進入實例詳情界面,如下圖所示:
創(chuàng)建實例
在數(shù)據(jù)庫主界面,點擊「創(chuàng)建實例」創(chuàng)建一個新的 RDS 實例。創(chuàng)建實例的界面如下圖所示。首先填寫實例名稱、選擇數(shù)據(jù)庫引擎、實例規(guī)格和設(shè)置網(wǎng)絡(luò)類型,然后點擊「確認」按鈕,開始創(chuàng)建實例。
實例創(chuàng)建時,蜂巢對實例的復制類型、備份類型、數(shù)據(jù)庫參數(shù)和安全組等采用了默認參數(shù)和配置,你可以在「設(shè)置實例」中修改這些配置。
創(chuàng)建只讀實例
數(shù)據(jù)庫主界面顯示了各個實例的概要信息。如果實例是一個高可用實例,則在實例的「操作」列會顯示「創(chuàng)建只讀」鏈接。點擊「創(chuàng)建只讀」,即可為實例創(chuàng)建一個只讀實例,如下圖所示:
只讀實例的創(chuàng)建界面中,數(shù)據(jù)庫引擎和源實例一致,不可更改,其余內(nèi)容與創(chuàng)建實例相同,如下圖所示:
提升只讀實例角色
在數(shù)據(jù)庫的主界面,點擊實例名稱右側(cè)的箭頭(如果存在),可以查看該實例的只讀實例。對于只讀實例,「操作」列提供了「提升角色」的功能,如下圖所示。點擊「提升角色」并確認,能夠解除只讀實例與源實例的關(guān)系,將只讀實例變成一個普通的非高可用實例。
設(shè)置(修改)實例
某一指定實例的設(shè)置頁面有兩處入口:
1.在數(shù)據(jù)庫的主界面,點擊該實例在「操作」列的「設(shè)置」鏈接,如下圖所示:
2.在數(shù)據(jù)庫的主界面,點擊該實例的名稱,進入該實例的「實例詳情」頁面,再點擊「設(shè)置」按鈕,如下圖所示:
設(shè)置實例頁面提供了復制類型、備份類型、數(shù)據(jù)庫參數(shù)和安全組等各項配置的修改操作,并可選擇將修改設(shè)定為「立即生效」或「定時生效」。如果你選擇定時生效,還需要選擇「生效時間」。設(shè)置完成以后,點擊「確認」即可。
各項配置的詳細說明如下:
(1)復制類型
蜂巢提供同步和異步兩種復制類型,推薦使用同步復制:如下圖所示:
(2)備份類型
你可以選擇「增量備份」或「全量備份」。在選擇了備份類型后,還可以對「備份周期」、「備份時間」等進行設(shè)置,如下圖所示:
(3)參數(shù)組
在參數(shù)組設(shè)置中,你可以修改數(shù)據(jù)庫的配置。頁面中只顯示用戶最常修改的參數(shù),要查看和修改更多的參數(shù),點擊「更多設(shè)置」即可。
(4)安全組
點擊「修改安全組」可以為實例配置安全組,從而限制能夠訪問實例的主機,如下圖所示:
在「設(shè)置實例」中,你只能新建或綁定已存在的安全組。
遷移外部數(shù)據(jù)庫
蜂巢的外部數(shù)據(jù)庫遷移功能支持多線程數(shù)據(jù)庫備份和恢復,也支持基于業(yè)務負載的自適應遷移和遷移失敗的重試。此外,蜂巢提供了較為全面的遷移參數(shù)檢查,提高了遷移數(shù)據(jù)的成功率。目前,蜂巢提供外部 MySQL 實例的遷移功能。本文將以有公網(wǎng) IP 的外部 MySQL 數(shù)據(jù)庫實例遷移至蜂巢 RDS 為例。
前提條件
開始遷移前,務必檢查以下內(nèi)容:
1.請確保外部數(shù)據(jù)庫實例擁有 test 數(shù)據(jù)庫,沒有則新建空白 test 數(shù)據(jù)庫即可;
2.若使用 增量遷移,請確認外部數(shù)據(jù)庫實例已開啟 binlog 并設(shè)置 server_id(目前 server_id 不能設(shè)置為 0 或 1);
3.若需要 遷移權(quán)限,確認外部數(shù)據(jù)庫實例與 RDS 實例權(quán)限沒有沖突或者覆蓋。
遷移限制:
目前在遷移 5.1.41 以下的 MySQL 版本時會出現(xiàn)失敗場景,若遇到,請?zhí)岱涑补谓鉀Q。
目前正在適配外部實例版本為 MySQL 5.7 的場景,RDS 的 MySQL 5.7 版本也即將推出。請等待完成適配后再遷移 MySQL 5.7 版本到 RDS ;
不支持遷移名稱中包含「;」符號的數(shù)據(jù)庫;
不支持遷移 MySQL 系統(tǒng)庫,如 information_schema、performance_schema、#bak_database 或 data_dictionary、mysql 中的 general_log 和 slow_log 表等。
其他說明:
在導出外部實例數(shù)據(jù)階段,會臨時修改外部實例 MySQL InnoDB 參數(shù) innodb_old_blocks_time,完成數(shù)據(jù)導出或?qū)С鍪r,RDS 會自動將其設(shè)置回原值;
在將數(shù)據(jù)導入 RDS 實例階段,RDS 實例的 sync-binlog、innodb_flush_log_at_trx_commit、log_slow_queries 參數(shù)均會進行臨時優(yōu)化,完成數(shù)據(jù)導入或?qū)胧r,會自動將其設(shè)置回原值。
創(chuàng)建遷移賬號
建議新建一個擁有相應權(quán)限的賬號進行數(shù)據(jù)遷移。 登錄 MySQL 客戶端,使用如下命令創(chuàng)建賬號并賦予權(quán)限:
GRANT all privileges ON [數(shù)據(jù)庫名].[表名] TO '[期望創(chuàng)建的用戶名]'@'[用戶地址]' IDENTIFIED BY '[期望設(shè)置的密碼]';
方便起見,本例中直接賦予數(shù)據(jù)庫所有表的全部權(quán)限:「GRANT all privileges ON *.*」;
[用戶地址] 可以是 IP 地址、計算機名、域名,如果想從任意地址連接,使用「%」即可;
重要:該帳號擁有所有權(quán)限,出于安全考慮,數(shù)據(jù)遷移完成后,請刪除該賬號或直接刪除本地數(shù)據(jù)庫。
獲取數(shù)據(jù)庫列表
登錄蜂巢控制臺,選擇「數(shù)據(jù)庫」,點擊「遷移外部數(shù)據(jù)庫」按鈕:
進入「獲取數(shù)據(jù)庫列表」步驟,需要輸入待遷移的外部數(shù)據(jù)庫 IP 地址、端口、數(shù)據(jù)庫賬號以及密碼等信息,如下圖所示,輸入完畢后,點擊「下一步」:
如果連接失敗,請檢查以下內(nèi)容:
1.遷移賬號權(quán)限;
2.賬號、密碼、IP 地址、端口;
3.MySQL 數(shù)據(jù)庫版本須高于 5.1.41;
4.外部數(shù)據(jù)庫實例擁有 test 數(shù)據(jù)庫,沒有則新建空白 test 數(shù)據(jù)庫即可。
選擇待遷移的數(shù)據(jù)庫
連接外部數(shù)據(jù)庫成功后,開始「選擇待遷移的數(shù)據(jù)庫」,這里顯示了該數(shù)據(jù)庫實例內(nèi)的所有數(shù)據(jù)庫,如下圖所示。蜂巢支持一次性遷移同一實例下多個數(shù)據(jù)庫,選擇所需遷移的數(shù)據(jù)庫名稱,點擊「下一步」:
不支持遷移名稱中包含「;」符號的數(shù)據(jù)庫;
不支持遷移 MySQL 系統(tǒng)庫,如 mysql 中的 general_log 和 slow_log 表、information_schema、performance_schema、#bak_database 或 data_dictionary 等。
參數(shù)設(shè)置
選擇完數(shù)據(jù)庫之后,進入「參數(shù)設(shè)置」步驟,如下圖所示。具體的參數(shù)詳情,請參見 參數(shù)說明,在確認參數(shù)無誤后,點擊「下一步」發(fā)起遷移操作。
注意:點擊「下一步」后,默認會進行參數(shù)預檢查,包括實例連通性、各個參數(shù)設(shè)置是否正確等,如果發(fā)現(xiàn)錯誤,蜂巢會顯示出錯信息,你可以進行相應修改后重新點擊「下一步」。
參數(shù)說明
1.遷移類型
(1)增量遷移
增量遷移包括全量遷移和增量復制兩個階段。完成全量遷移后,會將遷移過程發(fā)生的數(shù)據(jù)變更同步到目標實例,如果遷移期間進行了 DDL 操作,那么這些結(jié)構(gòu)變更不會遷移到目標實例。
(2)全量遷移
將源實例遷移對象的結(jié)果定義及數(shù)據(jù)全部遷移到目標實例。遷移過程中,為了保證數(shù)據(jù)一致性,非事務表會被鎖定,鎖定期間這些表無法寫入,鎖定時長依賴于這些表的數(shù)據(jù)量大小,在這些非事務表遷移完成后,鎖才會釋放。
(3)結(jié)構(gòu)遷移
將源實例遷移對象(數(shù)據(jù)庫、表)的結(jié)構(gòu)定義(schema)遷移到目標實例。支持結(jié)構(gòu)遷移的對象包括:表、視圖、觸發(fā)器、存儲過程、存儲函數(shù)等。
(4)權(quán)限遷移
表示是否遷移源實例 mysql.user 表中的用戶賬號及權(quán)限到目標實例。RDS 默認會取消所遷移權(quán)限中的 Super 權(quán)限。
2.導出并發(fā)度
表示啟用多少個線程來同時導出表中的數(shù)據(jù)。請合理選擇數(shù)據(jù)導出線程數(shù),系統(tǒng)默認為 2 個,建議剛開始使用暫先不超過 3 個。
3.導入并發(fā)度
表示啟用多少個線程來同時導入表中的數(shù)據(jù)。RDS 的數(shù)據(jù)導入線程需要根據(jù) RDS 本身的存儲介質(zhì)性能進行合理規(guī)劃。系統(tǒng)默認為 2 個,蜂巢的經(jīng)驗表明:2至4個線程一般來說已能夠達到最大數(shù)據(jù)寫入性能。
4.持鎖超時時間
表示進行數(shù)據(jù)導出時,允許對源實例加讀鎖(通過執(zhí)行 flush tables with read lock 獲取讀鎖)的時長,單位為 s。注意,該值的設(shè)置會極大影響遷移,設(shè)小會導致遷移出錯,設(shè)大的話需要關(guān)注是否對外部實例業(yè)務產(chǎn)生影響。
5.負載監(jiān)控閾值
表示從源實例導出數(shù)據(jù)時,允許導出線程 select 數(shù)據(jù)的最大負載,通過 threads_running 數(shù)值來衡量,如果該參數(shù)超過閾值則數(shù)據(jù)導出暫停,降到閾值以下時再繼續(xù)。系統(tǒng)默認的監(jiān)控項為 300,如果外部實例壓力較大,連接數(shù)較多,請合理選擇監(jiān)控項,并適當增加監(jiān)控項。
6.創(chuàng)建新實例
系統(tǒng)預檢查無誤后,顯示如下「創(chuàng)建新實例」頁面,即可進行數(shù)據(jù)遷移,此時只需填寫新實例名稱,選擇合適的內(nèi)存及存儲空間后,點擊「開始遷移」即可,數(shù)據(jù)庫列表會自動生成遷移的數(shù)據(jù)庫實例。
注意:需要確保遷移中創(chuàng)建的 RDS 實例有足夠的空間用于遷移外部實例數(shù)據(jù),可以通過設(shè)置存存儲空間來進行調(diào)整。
如果遷移失敗,可以通過數(shù)據(jù)庫實例列表中的「查看進度」查看原因。并根據(jù)系統(tǒng)出錯提示,參照 參數(shù)說明 適當調(diào)整參數(shù),最后點擊「重試」即可。
如果不確定如何調(diào)整參數(shù),建議提工單聯(lián)系技術(shù)人員協(xié)助處理。