1.什么是RDS數(shù)據(jù)庫?
RDS數(shù)據(jù)庫是在一個實(shí)例下創(chuàng)建的邏輯單元,一個實(shí)例可以創(chuàng)建多個數(shù)據(jù)庫,在實(shí)例內(nèi)數(shù)據(jù)庫命名唯一,所有數(shù)據(jù)庫都會共享該實(shí)例下的資源。
2.RDS for MySQL有哪些限制?
1、不支持在命令行創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫賬號。只支持在RDS管理控制臺操作。
2、不支持Memory和Federated引擎, RDS默認(rèn)將創(chuàng)建的Memory引擎表轉(zhuǎn)換為InnoDB引擎表。
3、不支持memcached插件。
4、沒有File權(quán)限,不能使用load data infile裝載數(shù)據(jù)(但可使用load data local infile語法從本地裝載數(shù)據(jù))。
5、用戶不可訪問RDS實(shí)例中MySQL庫中如下表格:user、tables_priv、host、db 、columns_priv、procs_priv。
3. 自建數(shù)據(jù)庫遷移至RDS操作。
1、MySQL數(shù)據(jù)庫的系統(tǒng)庫將不允許遷移至RDS,不允許遷移的數(shù)據(jù)庫為:mysql,information_schema,perfermance_schema。這些數(shù)據(jù)庫將不會顯示在遷移列表中。
2、在全量遷移過程中,會短暫的給自建數(shù)據(jù)庫加全局表鎖。
3、全量+增量遷移模式,請確認(rèn)自建數(shù)據(jù)庫中的所有庫表全部是正常的。通過命令show create table tbl_name確認(rèn)無錯誤結(jié)果輸出。
4、遷移過程中源數(shù)據(jù)庫不允許執(zhí)行DDL語句(DDL是數(shù)據(jù)定義語句,用于定義SQL模式、基本表、視圖和索引的創(chuàng)建和撤消操作)。
5、RDS for mysql必須設(shè)置參數(shù)autocommit=1(注:RDS for mysql 默認(rèn)參數(shù)autocommit即為1)。
6、不支持的庫名和表名:
(1)庫名中含有單個反斜杠
(2)表名中含有單個反斜杠
(3)庫名中含有“.” 號
(4)庫名以減號 “-” 開始
(5)表名以減號“-”開始
(6)庫名中包含路徑符“/”
4. RDS使用注意事項(xiàng)
1、RDS實(shí)例升級需要注意的事項(xiàng)RDS在進(jìn)行實(shí)例升級的過程中會出現(xiàn)最長30秒左右的連接閃斷,需要您提前做好準(zhǔn)備,并設(shè)置好程序跟RDS的自動重連,避免因?yàn)樯壍拈W斷導(dǎo)致您的服務(wù)不可用。
2、RDS切換內(nèi)外網(wǎng)存在的風(fēng)險RDS在切換內(nèi)外網(wǎng)的過程中會出現(xiàn)服務(wù)器跟RDS的連接斷開,切換完成以后請及時更新程序中的連接地址,同時切換內(nèi)外網(wǎng)會導(dǎo)致IP地址變更。
3、RDS回滾風(fēng)險須知目前RDS支持?jǐn)?shù)據(jù)回滾,回滾是針對整個實(shí)例的,不支持單表單庫,在回滾之前備份好重要數(shù)據(jù),以免回滾完成以后導(dǎo)致數(shù)據(jù)丟失。如果只是部分表格或者部分?jǐn)?shù)據(jù)需要回滾,我們建議您通過創(chuàng)建臨時實(shí)例來恢復(fù)數(shù)據(jù),臨時實(shí)例創(chuàng)建成功后從臨時實(shí)例中把需要的數(shù)據(jù)導(dǎo)回到生產(chǎn)庫。
4、RDS鎖定策略須知 RDS具有鎖定機(jī)制,如果您的實(shí)例存儲空間滿了,系統(tǒng)就會將您的實(shí)例鎖定,實(shí)例被鎖定以后會變成只讀,建議定期檢查存儲空間使用情況,同時也可以在RDS控制臺中設(shè)置空間占用短信提醒。
5、RDS故障切換RDS采用一主一備的高可用模式,當(dāng)主庫出現(xiàn)故障時,RDS會在30秒鐘之內(nèi)切換到備庫。切換過程中有(小于等于)30秒鐘的不可訪問,需要您設(shè)置好程序跟RDS的自動重連,避免因?yàn)榍袚Q導(dǎo)致您的服務(wù)不可用。
6、RDS for MySQL數(shù)據(jù)同步模式須知RDS for MySQL 5.1主備之間的數(shù)據(jù)同步采用的是異步的模式,異步模式下性能高,但是缺點(diǎn)是有一定的概率會出現(xiàn)主備之間數(shù)據(jù)不一致。RDS for MySQL 5.5主備之間數(shù)據(jù)同步采用的是半同步的模式,該模式下寫性能會有下降,但是優(yōu)點(diǎn)是主備數(shù)據(jù)不一致的概率極大的降低了。如果您對數(shù)據(jù)可靠性要求非常高(比如金融系統(tǒng)),則建議您購買5.5以上(含)版本的RDS for MySQL。RDS for MySQL 5.6主備之間數(shù)據(jù)同步采用的是MySQL 5.6的新特性GTID,該特性即能保證性能,又能保證主備數(shù)據(jù)一致。
7、購買RDS后,您還需要做什么?
購買RDS實(shí)例后,您不需要做數(shù)據(jù)庫的基礎(chǔ)運(yùn)維(比如高可用、備份、安全補(bǔ)丁等),但是您還需要重點(diǎn)關(guān)注以下事情:
1)您RDS實(shí)例的CPU、IOPS、空間、連接數(shù)是否足夠,如果不夠需要優(yōu)化或者升級。
2)您RDS實(shí)例是否存在性能問題,是否有大量的慢SQL,SQL語句是否需要優(yōu)化,是否有多余的索引或者缺失的索引等。
3)您RDS實(shí)例是否存在SQL注入警告,若存在,則說明您的數(shù)據(jù)庫有可能被黑客SQL注入攻擊,需要修改您的應(yīng)用程序來避免SQL注入攻擊。
5. 自建數(shù)據(jù)庫導(dǎo)出成適用于 RDS 的sql文件。
1)導(dǎo)出數(shù)據(jù)表結(jié)構(gòu)和數(shù)據(jù)。
mysqldump -u xxx -p xxx --opt --hex-blob --skip-triggers > 0.1.0-alirds-data.sql
2)導(dǎo)出觸發(fā)器。
mysqldump -u xxx -p xxx --skip-opt --triggers -d -t > 0.1.0-alirds-trgs.sql
-
導(dǎo)出函數(shù)
mysqldump -u xxx -p xxx --skip-opt -d -t --skip-triggers -R > 0.1.0-alirds-func.sql
6. 本地還原數(shù)據(jù)庫的執(zhí)行順序。
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-data.sql
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-trgs.sql
mysql -u xxx -p xxx -D xxx < 0.1.0-alirds-func.sql
如果發(fā)現(xiàn)執(zhí)行報錯可使用以下方法重建數(shù)據(jù)庫然后再次導(dǎo)入,此方法只適用本地開發(fā)環(huán)境,請謹(jǐn)慎操作,先備份好必要數(shù)據(jù)。
mysql -u xxx -p xxx;
drop database if exists `xxx`;
CREATE DATABASE if not exists `xxx` DEFAULT CHARACTER SET utf8;
阿里云RDS 數(shù)據(jù)庫幫助中心:http://help.aliyun.com/knowledge_list.htm?categoryId=8314899