*壹、什麽是MyCat: MyCat是壹個開源的分布式數據庫系統,是壹個實現了MySQL協議的服務器,前端用戶可以把它看作是壹個數據庫代理,用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將壹個大表水平分割為N個小表,存儲在後端MySQL服務器裏或者其他數據庫裏。
MyCat發展到目前的版本,已經不是壹個單純的MySQL代理了,它的後端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在MyCat裏,都是壹個傳統的數據庫表,支持標準的SQL語句進行數據的操作,這樣壹來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
二、那麽為什麽要用到MyCat呢?
*例如操作系統是對各類計算機硬件的抽象。那麽我們什麽時候需要抽象?假如只有壹種硬件的時候,我們需要開發壹個操作系統嗎? 再比如壹個項目只需要壹個人完成的時候不需要leader,但是當需要幾十人完成時,就應該有壹個管理者,發揮溝通協調等作用,而這個管理者對於他的上層來說就是對項目組的抽象。 同樣的,當我們的應用只需要壹臺數據庫服務器的時候我們並不需要Mycat,而如果妳需要分庫甚至分表,這時候應用要面對很多個數據庫的時候,這個時候就需要對數據庫層做壹個抽象,來管理這些數據庫,而最上面的應用只需要面對壹個數據庫層的抽象或者說數據庫中間件就好了,這就是Mycat的核心作用。 所以可以這樣理解:數據庫是對底層存儲文件的抽象,而Mycat是對數據庫的抽象。*
註意事項:
(1)、原始表的自增主鍵{AUTO_INCREMENT=1446}值,就是之前用掉的值,要去掉。新庫按照新的來
(2)、{CREATE TABLE IF NOT EXISTS `edu_impoverish` } 改成 {CREATE TABLE `edu_impoverish` (}。mycat沒有判斷是否存在的功能
(3)、DROP TABLE IF EXISTS `onlinenum`; 這種格式是支持的。
(4)、全局表,字典表:可能會在其他表中存有其id字段的值。所以這些表id也要導過來。
(5)、業務表的id最好也導入過來,避免重新生成導致關聯對不上的情況。
(6)、全局表、跨庫分表都要用全局序列。單庫單業務,不和其他關聯的表;可以用數據庫自帶的自增主鍵。