一、基本環境
W7 64位、Mycat1.6、MySQL8.0
二、Mycat核心配置文件配置
解壓Mycat1.6,並對server.xml、schema.xml、rule.xml三個核心配置文件做相關配置,見下圖
1、對server.xml設置登錄的帳號密碼以及邏輯庫名(root賬戶可讀寫,user賬戶只讀);並設置sequnceHandlerType爲0
2、配置schema.xml,這裏的庫、表、數據庫連接等會在後面介紹。rule="mod-long"會在rule.xml中有相關設置
3、設置rule.xml,由於只設置了兩臺數據庫,這裏改爲2
主鍵名稱需要做下變更
三、執行創建庫和表的命令,數據庫mycat1、mycat2都需創建這兩張表
CREATE TABLE IF NOT EXISTS t_order
(
order_id
int(20) NOT NULL,
user_id
int(11) DEFAULT NULL,
pay_mode
tinyint(4) DEFAULT NULL,
amount
float DEFAULT NULL,
order_date
datetime DEFAULT NULL,
PRIMARY KEY (order_id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘訂單主表’;
CREATE TABLE IF NOT EXISTS t_order_detail
(
od_id
int(20) NOT NULL,
order_id
int(11) DEFAULT NULL,
goods_id
int(11) DEFAULT NULL,
unit_price
float DEFAULT NULL,
qty
int(11) DEFAULT NULL,
PRIMARY KEY (od_id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘訂單明細表’;
四、重啓mycat,並用mysql連接工具連接mycat
停止命令:mycat.bat stop
啓動命令:mycat.bat start
連接mycat,注意默認端口是8066
錯誤的看日誌wrapper.log
五、連接mycat後,在mycat_order數據庫下執行插入命令,並查看mycat1和mycat2中t_order表
INSERT INTO t_order(order_id, user_id, pay_mode, amount)VALUES(next value for MYCATSEQ_ORDER, ‘105’, 1, 100); 執行多次
用mysql連接工具分別用root和user賬戶連接Mycat,均可查詢出兩張表的彙總數據,且user賬戶只能查詢不能寫,如下圖
至此分庫分表和讀寫分離的的功能基本實現
但是真正應用到項目中還有許多坑需要踩。