mysql 企業版由 oracle 公司維護,當然也是收費的。其産品類别也基本和 oracle 資料庫一緻,包括标準版、企業版、叢集版等。标準版包括基本的特性,價格也會比企業版便宜很多。今天和小編一起來看下 mysql enterprise edition 提供的一些功能,這些功能的源碼當然是不開源的,也是企業版的賣點。
備份
備份工具提供 innodb 的聯機線上備份,同時 myisam 引擎的備份會阻塞寫入。聯機備份是否阻塞應用,還要根據引擎的特性來定。這點上,percona 的備份工具 xtrabackup 提供的功能基本沒有什麼差别,對于 innodb 的增量備份,基本上都是根據 page header 的 lsn ,來确定自上次備份以來的變化。對于binlog的備份,基本是檔案copy。
恢複
隻要保留了備份以來的 binlog,就可以根據 binlog 裡的時間戳或者xid,來恢複到任意時間點或者事務。
開源方案的比較
和 percona xtrabackup 工具比較,mysql 企業版提供的備份最大的不同就是:隻備份實際的資料, 不會複制未使用的page, 對備份和恢複來說使用更少的讀取和寫入,相應的備份檔案占用更少的空間。
對于 xtrabackup 工具,通過讀取 ibd 檔案,一個 page 一個 page 的備份來說,想要不複制未使用的塊,會比較麻煩。對于類似 oracle 這樣的資料庫,需要提前規劃和配置設定表空間的方式來說,rman 隻需要備份使用過的塊即可,可能你的表空間100g大小,但隻會備份已使用的1g空間。這點上要給企業版的備份工具點贊。
總結
從官方的描述來看,企業級的備份工具,在基本功能上和開源的備份工具基本一緻,但提供的進階功能還是值得學習的。
oracle 提供的 mysql 高可用方案,領先開源社群一個身位。
fabric高可用
1. mysqlfabric 在 master<–>slave 的基礎上,通過故障檢測,進行執行個體角色變化,完成主備切換;
2. mysql fabric-aware connector 根據 fabric 的路由資訊,來完成應用的切換。
fabric分片功能
connector根據應用提供的分片規則,來完成路由功能。
fabric最大的特性
1. 需要用戶端綁定 faric 提供的 connector,完成路由功能,如果你了解過或者使用淘寶開源的 tddl,基本上就是這種方式,application 需要引入 tddl 的 jar 包來使用,隻是 tddl 并不負責主備的切換,通常由運維人員來完成主備故障切換,并漂移vip;
2. 無代理運作。同三層的 proxy 架構相比,無疑 fabric 的效率肯定高于 proxy。
rfabric 提供的兩個元件,完成了應用的分片擴充和運維的故障應急功能,但弊端也很明顯,對應用不透明。
oracle vm template內建套件提供了以下元件:
oracle enterprise linux
oracle vm
oracle vm manager
oracle cluster file system
mysql database
架構圖如下所示:

oracle vm template
有沒有覺得這個圖和 oracle rac 非常相似,的确,這是一套基于 share disk 的 cluster 叢集,vm manager 負責執行個體、vm、實體主機的故障檢測和異常恢複。san 和 iscsi 存儲系統複雜的分布式鎖管理保證資料的完整性和快速切換挂載能力。
但從文檔的解釋來看,和 rac 還是有一個最大的差別,目前它并沒有真正的實作cluster,也就是這套系統隻能做到failover,做不到load balance。
但這套系統最大的賣點應該是:
它內建了 mysql 企業版的各種工具,比如 mysql enterprise monitor & query analyzer, mysql enterprise backup and mysql workbench,加上oracle vm可以做到快速部署。如官方文檔中提到的,比較适合雲計算環境。
這個是在存儲級别進行資料複制的成熟商業方案,不多做介紹了。
對于高可用來說,開源工具如 mha 等一些 ha 工具,可以完成故障檢測和角色切換。對于分片功能,各個大公司都會自己維護一套适合自己的中間件。
針對mysql的單程序多線程的處理模型,使用線程池、減少連接配接過多導緻的cpu排程開銷,官方給出的測試結果:
oltp rw
oltp ro
目前開源的社群版本,如 percona server 和 mariadb 都有可以參考和使用的線程池,aliyun rds mysql 分支目前也支援線程池,對于資料庫在大并發的情況下保持穩定性和持續的吞吐能力的确效果非常好。
使用 mysql 的pam plugin,利用pam 對ldap、unix/linux 和其他系統上的使用者進行身份驗證。這個就不多介紹了,主要是為了提高系統管理者/dba的工作效率。
企業版提供了非對稱加密功能,對資料庫持久化的資料進行加密:
資料檔案加密,比如 innodb 資料檔案等;
binlog 日志和 redo 日志檔案加密。
網絡傳輸使用數字證書來保證安全性。
對于商業的資料庫 oracle、sqlserver 而言,其提供了更為細粒度的加密方案,比如對某個表,對某個 column 進行指定不同的加密算法。
企業版提供了 sql firewall 功能,其工作模式是這樣的:
sql在執行的過程中,根據whitelist進行比對,會得到三種結果:
allow 即在白名單中,允許執行
deny 不再白名單中,拒絕執行
detect 也就是在sql firewall在 detecting 模式的時候,并不直接拒絕非白名單sql,隻是記錄可疑 sql 日志,友善上線之前的試運作。
sql firewall提供了簡單、暴力但也非常有效的保護,例如防止 sql 注入等。
審計是一項事後的安全防護政策,但也是問題追蹤最有效的方式,企業版把 audit_log 作為一個獨立的 plugin,使用者隻要 install audit_log plugin 就可以使用。
audit_log提供的參數:
audit_log_buffer_size 審計日志持久化之前的寫入緩沖
audit_log_file 審計日志持久化檔案
audit_log_rotate_on_size 審計日志檔案滾動大小
使用者可以看到的審計日志内容包括連接配接的相關資訊、執行的sql、時間等。
好了,小編先學習到這,後續下回分解。