剛接觸RDS,只能對RDS上的一些特性做一些筆記,方便記憶,以下為RDS上的內容摘錄,取自官方文檔
1 數據備份
可使用命令行或圖形界面進行邏輯數據備份。僅限通過 RDS 管理控制台 或 OPEN API 進行物理備份。
2 數據還原
可使用命令行或圖形界面進行邏輯數據還原。僅限通過 RDS 管理控制台 或 OPEN API 進行物理還原。
3 數據遷入
可以使用命令行或圖形界面進行邏輯導入。可以使用 mysqldump、數據傳輸進行數據遷入。
4 存儲引擎
支持MyISAM,InnoDB,TokuDB,不支持Memory引擎,如果創建,會自動轉換成InnoDB存儲引擎
5 數據庫復制
MySQL自動搭建了主備復制,不需要手動搭建,但無法直接訪問
6 RDS的連接模式
如果應用在ECS上,不需要申請外網,如果在阿里雲之外的,需要申請外網地址,用於應用對接
7 RDS的兩種連接方式
內網地址、外網地址,在訪問模式下,高安全模式下才能同時使用內網地址和外網地址。RDS會針對外網地址流量有一定的費用
8 高安全模式的特性
高安全模式下具有90%的連接閃斷和SQL攔截的能力(基於SQL語義分析來實現防御SQL注入攻擊),但會增加20%的響應時間
9 RDS對外提供服務的端口
取值范圍為3200~3999
10 創建數據庫和賬號
在使用數據庫之前,需要在 RDS 實例中創建數據庫和帳號;在數據庫遷移之前,需要在 RDS 實例中創建和本地數據庫一致的數據庫,並在 RDS 實例和本地數據庫中創建一致的帳號
11 遷移RDS
遷移本地數據庫到 RDS,請在 RDS 數據庫和本地數據庫中一致的遷移帳號和數據庫
12 RDS上的實例數據庫數
同一實例下的數據庫共享該實例下的所有資源,MySQL 版實例最多可以創建 500 個數據庫,500 個帳號
13 高級賬號
阿里雲數據庫 My SQL 版支持創建高權限帳號,且僅支持 MySQL5.5 和 MySQL5.6 版本,只針對有需要的用戶開放,需要提交工單申請開放
支持用戶在實例內直接執行 create、drop、grant 等命令,實現更便捷的管理操作。
14 高級賬號模式的變化
1.不支持通過 RDS 控制台或者 API 來管理數據庫和帳號,用戶可在實例內直接執行相應的命令進行管理。 控制台上的帳號管理和數據庫管理頁面將會消失,
如果您在應用程序里調用了 API 創建數據庫和帳號的接口,請及時修改應用程序。
2.MySQL 的單庫備份功能使用方式會改變,需要您手動輸入需要備份的數據庫。
3.可以通過 show grants for xxx 來查看已經創建的帳號。
4.不能直接訪問 mysql.user 和 mysql.db 表,可以通過 mysql.user_view 和 mysql.db_view 視圖來查看現有帳號及權限。
5.不能更改全局變量,如 set global xxx = on。
6.在創建其他帳號時,可以通過類似 grant select on test. to user01@'%' identified by'user01password' 方式賦權,
當需要更改權限或密碼時,需要 Drop user user01; 后重新 grant。
7.控制台和 API 支持重置高權限帳號的權限和密碼。實例中已經創建的其他帳號不受影響。
8.創建高權限帳號過程中會有一次實例重啟,將造成30秒內的網絡閃斷1次,請確保在合適的時間選擇創建,同時確保應用程序支持數據庫重連。
15 權限列表
權限 | 是否支持 |
alter | 支持 |
Alter_routine | 支持 |
create | 支持 |
Create_routine | 支持 |
Create_tem_table | 支持 |
Create_user | 支持 |
Create view | 支持 |
delete | 支持 |
drop | 支持 |
ececute | 支持 |
event | 支持 |
grant | 部分支持 |
index | 支持 |
insert | 支持 |
Lock_tables | 支持 |
process | 支持 |
reload | 部分支持 |
Repl_client | 支持 |
Repl_slave | 支持 |
Select | 支持 |
trigger | 支持 |
update | 支持 |
16 遷移數據
使用DTS遷移數據,可以實現應用不停服務的情況下,平滑完成數據庫的遷移工作。
17 DTS支持的功能
結構遷移、全量遷移和增量遷移
1.結構遷移
DTS 會將本地數據庫的結構定義遷移到目標實例。目前 DTS 支持結構遷移的對象有:表、視圖、觸發器、存儲過程、存儲函數
2.全量遷移
DTS 會將本地數據庫遷移對象的數據全部遷移到目標實例。如果用戶還選擇了增量遷移,那么全量遷移過程中,為了保證數據一致性,無主鍵的非事務表會被鎖定,
鎖定期間這些表無法寫入,鎖定時長依賴於這些表的數據量大小,在這些無主鍵非事務表遷移完成后,鎖才會釋放。
3.增量遷移
增量遷移會將遷移過程進行數據變更同步到目標實例,如果遷移期間進行了DDL 操作,那么這些結構變更不會遷移到目標實例。
18 DTS遷移的限制
1.遷移過程中不支持DDL操作 2.結構遷移不支持EVENT遷移 3.如果使用了對象名映射功能后,依賴這個對象的其他對象可能遷移失敗 4.當增量遷移時,本地MySQL實例需要開啟binlog,且本地庫的binlog_format要為ROW,如果是5.6版本,binlog_row_image還要設置為full
19 本地數據庫遷移到RDS上的過程
遷移類型 結構遷移 全量遷移 增量遷移
本地數據庫 select select select replication slave/replication client
RDS 實例讀寫 權限讀寫 權限讀寫權限
20 具體過程
1.本地數據庫創建遷移賬號
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
2.授權
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;(授權該帳號能使用GRANT命令,該參數為可選)
3.開啟本地數據庫的binlog,查詢
show global variables like "log_bin";
開啟方法
log_bin=mysql_bin
binlog_format=row
server_id=大於 1 的整數
binlog_row_image=full //當本地 MySQL 版本大於 5.6 時,則需設置該項
4.修改完成,重啟MySQL進程
5.RDS管理控制台操作-略,看官方文檔
21 遷移注意事項
1.數據遷移只會將本地數據庫的數據(結構)復制一份到目標數據庫,並不會對本地數據庫數據(結構)造成影響
2.數據遷移過程中,不支持 DDL 操作,如進行 DDL 操作可能導致遷移失敗
3.DTS 增量遷移的時間最長支持 15 天,如果超過 15 天不停止任務,系統資源可能被回收
22 遷移完畢
因遷移帳號擁有讀寫權限,為了保證本地數據庫安全,請在數據遷移完成后,刪除本地數據庫和 RDS 實例中的遷移帳號
23 使用mysqldump遷移數據
使用 mysqldump 工具的優點是簡單易用、容易上手,缺點是停機時間較長,因此它適用於數據量不大,或者允許停機的時間較長的情況
24 遷移過程
1.關閉MySQL進程 mysql_dir/bin/mysqladmin -u root -p shutdown 2.使用 mysqldump 的數據導出工具,將本地數據庫數據導出為數據文件 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skiptriggers> /tmp/dbName.sql 3.使用 mysqldump 導出存儲過程、觸發器和函數 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/triggerProcedure.sql 4.參見ECS產品文檔,將數據文件和存儲文件上傳到ECS 5.登錄ECS mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/dbName.sql mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName </tmp/triggerProcedure.sql
25 壓縮數據
MySQL 5.6 版支持通過 TokuDB 存儲引擎壓縮數據。經過大量測試表明,數據表從 InnoDB 存儲引擎轉到 TokuDB 存儲引擎后,數據量可以減少 80% 到 90%,
即 2T 的數據量能壓縮到 400G 甚至更低。除了數據壓縮外,TokuDB 存儲引擎還支持事務和在線 DDL 操作,可以很好兼容運行於 MyISAM 或 InnoDB存儲引擎上的應用。
26 使用TokuDB的限制
1.TokuDB 存儲引擎無法支持外鍵 Foreign Key
2.TokuDB 存儲引擎不適用於頻繁大量讀取的場景
27 創建RDS只讀實例的要求
要創建只讀實例,主實例要求 MySQL5.6 及以上版本
28 只讀實例的功能限制
1.1 個主實例做多可以創建 5 個只讀實例
2.備份設置:不支持備份設置以及臨時備份
3.數據遷移:不支持數據遷移至只讀實例
4.數據庫管理:不支持創建和刪除數據庫
5.帳號管理:不支持創建和刪除帳號,不支持為帳號授權以及修改帳號密碼功能
6.實例恢復:不支持通過備份文件或任意時間點創建臨時實例,不支持通過備份集覆蓋實例
7.創建只讀實例后,主實例將不支持通過備份集直接覆蓋實例來恢復數據
29 RDS災備
1.提供獨立的數據庫連接地址,由用戶應用端自助控制連接
2.使用主備高可用架構
3.支持按小時計費,即開即用,即停即止
4.提供獨立的白名單配置,帳號管理
30 RDS災備的前提
1.當前災備實例只支持數據庫類型為 MySQL 的 RDS 實例
2.要創建災備實例,主實例要求 MySQL 5.6 及以上版本。在升級主實例版本前,請做好兼容性測試;或者新建一個 MySQL 5.6 的實例,將數據從主實例復制到新建實例,
然后在新建實例上創建災備實例
3.創建災備實例的主實例必須要有內網地址
31 RDS上災備的功能限制
1.暫僅支持在國內五大地域:華東 1(杭州)、華東 2(上海)、華南 1(深圳)、華北 1(青島)、華北 2(北京)
2.暫不支持創建在 VPC 內(主實例可創建在 VPC 內)
3.出於同步鏈路自身穩定性的需要,災備實例僅支持創建只讀權限的帳號不支持備份設置、備份恢復、數據遷移、數據庫管理、申請外網訪問地址、修改連接地址功能