什麼是POLARDB
POLARDB 是阿裡雲自研的下一代關系型分布式資料庫,100%相容MySQL,之前使用MySQL的應用程式不需要修改一行代碼,即可使用POLARDB。
POLARDB在運作形态上是一個多節點叢集,叢集中有一個Writer節點(主節點)和多個Reader節點,他們之間節點間通過分布式檔案系統(PolarFileSystem)共享底層的同一份存儲(PolarStore)。
POLARDB通過内部的代理層(Proxy)對外提供服務,也就是說所有的應用程式都先經過這層代理,然後才通路到具體的資料庫節點。Proxy不僅可以做安全認證(Authorization)和保護(Protection),還可以解析SQL,把寫操作(比如事務、Update、Insert、Delete、DDL等)發送到Writer節點,把讀操作(比如Select)均衡地分發到多個Reader節點,這個也叫讀寫分離。
POLARDB對外預設提供了兩個資料庫位址,一個是叢集位址(Cluster),一個是主位址(Primary),推薦使用叢集位址,因為它具備讀寫分離功能可以把所有節點的資源整合到一起對外提供服務。主位址是永遠指向主節點,通路主位址的SQL都被發送到主節點,當發生主備切換(Failover)時,主位址也會在30秒内自動漂移到新的主節點上,確定應用程式永遠連接配接的都是可寫可讀的主節點。

如上圖,底層一套存儲,節省成本,是『合』;中間多個節點,提高擴充性,是『分』;上層一套代理層,統一入口,使用簡單,也是『合』。如此『合-分-合』的架構,在擴充性和使用便捷性之間保持了平衡,使得對于上層應用程式來說,就像使用一個單點的MySQL資料庫一樣簡單。
如何使用
POLARDB部署在雲端,建立時先選擇使用的地域可用區和具體的VPC網絡,然後指定節點的數量(從 2個 到 16 個)和配置(從 2核 到 88核)即可,存儲空間不用提前配置,也不需要關心容量大小,系統會根據實際的使用量自動收取費用。
建立過程可能持續5-10分鐘,然後配置好白名單、建立完高權限賬号就可以使用了。邏輯DB和賬号User,可以在控制台建立,也可以通過高權限賬号登入到資料庫執行SQL建立,二者效果完全一樣,沒有差別。
如果您需要遷移老的資料庫到POLARDB,推薦使用DTS。不管源庫是在RDS,還是在ECS自建MySQL,甚至是在雲下有公網位址可通路的MySQL,都可以通過DTS做線上平滑遷移,停機時間5-10分鐘。
特點
除了可以像使用MySQL一樣使用POLARDB,這裡還有一些傳統MySQL資料庫不具備的優勢。
-
容量大
最高100T,不再因為單機容量的天花闆而去購買多個MySQL執行個體做Sharding,甚至也不需要考慮分庫分表,簡化應用開發,降低運維負擔。
-
高成本效益
多個節點隻收取一份存儲的錢,也就是說隻讀執行個體越多越劃算。
-
分鐘級彈性
存儲與計算分離的架構,再加上共享存儲,使得快速更新成為現實。
-
讀一緻性
叢集的讀寫分離位址,利用LSN(Log Sequence Number)確定讀取資料時的全局一緻性,避免因為主備延遲引起的不一緻問題。
-
毫秒級延遲——實體複制
利用基于Redo的實體複制代替基于Binlog的邏輯複制,提升主備複制的效率和穩定性。即使是加索引、加字段的大表DDL操作,也不會對資料庫造成延遲。
-
無鎖備份
利用存儲層的快照,可以在60秒内完成2T資料量大小的資料庫的備份。并且這個備份過程不需要對資料庫加鎖,對應用程式幾乎無影響,全天24小時均可進行備份。
-
複雜SQL查詢加速
内置并行查詢引擎,對執行時長超過1分鐘的複雜分析類SQL加速效果明顯。該功能需要額外連接配接位址。