網上有很多讀寫分離的中間件,像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的連接請求,如下配置:
當mysql連接上xDbRouter時,則會發起兩個連接去連接mysqlserver,一個連主server,一個連從server,把myclient與主server通信內容進行決議,并記錄相當于資訊,比如mysql的權限位這類; 當完成了與主server的通信后,再模擬xdbrouter自己為mysqlclient與從server通信,這里的功能有點復雜,但慢慢把位元組調好了,順序弄好,后面也不會有問題(嚴謹不能出錯), 決議請求的sql,如果是select的話,就跑從庫(slave)

到這里就完成了,在這里需要說明一點的是,每一個mysqlclient連接到xdbrouter,xdbrouter都需要給這個mysqlclient連接創建兩個連mysqlserver的連接(一主一庫),因為mysql對于請求的sql是序號問題,沒有辦法將多個mysqlclient連接只共用一庫一從的連接,這樣做保證了資料的安全,代碼已經上傳到百云了,歡迎大家與我交流,
鏈接:https://pan.baidu.com/s/1aCsq7mKaWpbAuFsjPLgz7Q?pwd=xx0j
提取碼:xx0j
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/502345.html
標籤:MySQL
