#網上有很多讀寫分離的中間件,像proxy,mycat等等,由於本人比較懶,懶得去讀各種開源的東西,還是想造輪子來得快。 ##1、瞭解mysql通信協議,其中有分4.1之前和4.1版本的,由於4.1之前幾乎沒有人去使用了,所以我就直接按4.1的版本來實現。 ##2、找一個解析sql的庫,從而得到sq ...
網上有很多讀寫分離的中間件,像proxy,mycat等等,由於本人比較懶,懶得去讀各種開源的東西,還是想造輪子來得快。
1、瞭解mysql通信協議,其中有分4.1之前和4.1版本的,由於4.1之前幾乎沒有人去使用了,所以我就直接按4.1的版本來實現。
2、找一個解析sql的庫,從而得到sql的解析樹,從而得知該sql具體是哪類操作,如select、insert、update、delete等等。
3、需要支持監聽mysqlclient的連接和去聯接mysqlserver服,類似於代理伺服器,這裡需要連接兩個mysqlserver,一個是主庫(寫)、一個是從庫(讀)。如下麵的配置
監聽13306埠,協議為mysql4.1協議,負責監聽mysqlclient的連接請求,如下配置:
解析請求的sql,如果是select的話,就跑從庫(slave)
到這裡就完成了,在這裡需要說明一點的是,每一個mysqlclient連接到xdbrouter,xdbrouter都需要給這個mysqlclient連接創建兩個連mysqlserver的連接(一主一庫),因為mysql對於請求的sql是序號問題,沒有辦法將多個mysqlclient連接只共用一庫一從的連接,這樣做保證了數據的安全。代碼已經上傳到百雲了,歡迎大家與我交流。
鏈接:https://pan.baidu.com/s/1aCsq7mKaWpbAuFsjPLgz7Q?pwd=xx0j
提取碼:xx0j