記得十多年前就開始用mysql開發系統了,那時只是單庫在使用,哪管什么主從復制和讀寫分離。曾幾何時,互聯網行業興起,阿里雲這樣的雲平台直接將數據庫進行組件化封裝,並以雲服務的方式(即RDS)提供給第三方使用。RDS在提供服務時,把主從復制、讀寫分離都做了封裝,所以在互聯網時代,中小型公司在使用mysql基本上只管花錢,不用操心這些技術上的事了。
但是隨着數據存儲量的增大以及並發訪問量的上升,即使是讀寫分離也越來越難支撐,在這樣的情形下,如何保證業務的正常進行呢? 分庫分表這樣的技術也就自然應運而生,但事物的表現往往是多樣化的,所以解決方案也不可能只是一種單一方案,業界近幾年也現了專業的分布式數據庫 TDSQL這樣的解決方案 , 此外,Hadoop生態圈中的Hbase也可以解決海量數據的存儲和實時查詢,也是可以考慮的方案之一。
但由於關系型數據庫在業界已經使用了幾十年了,在各方面都比較成熟,
- RDBMS生態完善;
- RDBMS絕對穩定;
- RDBMS的事務特性;
所以基於MySQL分庫分表的解決方案目前還是業界的主流方案,專業的分布式數據庫暫時還處於嘗試和部分替代方案而出現。阿里雲也提供DRDS這樣的組件服務來支持分庫分表的功能,但畢竟是商業產品,價格是個要考慮的因素,所以如果有提供了基於MySQL的讀寫分離、主從復制、分庫分表的功能的開源產品,還是很受業界的歡迎的,Mycat也是在這樣的背景下應運而生。
Mycat是一個徹底開源的面向企業應用開發的大數據庫集群,支持事務、ACID,是可以替代MySQL的加強版數據庫。它的底層不但可以是MySQL,Mycat后端以JDBC方式支持Oracle、DB2、SQL Server、MongoDB、SequoiaDB 等多種數據庫。我們前面提到的讀寫分離、主從復制、分庫分表對Mycat而言也都不是問題,Mycat的官網地址:http://www.mycat.io/