linux下mysql主從復制(第二篇讀寫分離) mycat 中間件
阿新 • • 發佈:2018-09-26
gin str user global log prope http 新建 tsql
linux下mysql主從復制(第二篇讀寫分離) mycat 中間件
接著上篇文檔補全,mysql 讀寫分離,在上篇文章案例下準備好Mycat-server-1.4-release-20151019230038-win.tar.gz 解壓包
1.解壓後的文件如下:
1.1 接下來進入到conf 目錄下配置四個文件server.xml、schema.xml、rule.xml、log4j.xml 下面一一介紹
1.2 首先在我們主服務上面test 庫下新建兩張表如下:
CREATE
TABLE
`t_users` (
`user_id`
varchar(
64)
NOT
NULL
COMMENT
‘註冊用戶ID‘,
`user_email`
varchar(
64)
NOT
NULL
COMMENT
‘註冊用戶郵箱‘,
`user_password`
varchar(
64)
NOT
NULL
COMMENT
‘註冊用戶密碼‘,
`user_nikename`
varchar(
64)
NOT
NULL
COMMENT
‘註冊用戶昵稱‘,
`user_creatime` datetime
NOT
NULL
COMMENT
‘註冊時間‘,
`user_status` tinyint(
1)
NOT
NULL
COMMENT
‘驗證狀態 1:已驗證 0:未驗證‘,
`user_deleteflag` tinyint(
1)
NOT
NULL
COMMENT
‘刪除標記 1:已刪除 0:未刪除‘,
PRIMARY
KEY (
`user_id`)
)
ENGINE=
InnoDB
DEFAULT
CHARSET=utf8;
-- -------------------------------------
-- Table structure for `t_message`微博表
-- -------------------------------------
DROP
TABLE
IF
EXISTS
`t_message` ;
CREATE
TABLE
`t_message` (
`messages_id`
varchar(
64)
NOT
NULL
COMMENT
‘微博ID‘,
`user_id`
varchar(
64)
NOT
NULL
COMMENT
‘發表用戶‘,
`messages_info`
varchar(
255)
DEFAULT
NULL
COMMENT
‘微博內容‘,
`messages_time` datetime
DEFAULT
NULL
COMMENT
‘發布時間‘,
`messages_commentnum`
int(
12)
DEFAULT
NULL
COMMENT
‘評論次數‘,
`message_deleteflag` tinyint(
1)
NOT
NULL
COMMENT
‘刪除標記 1:已刪除 0:未刪除‘,
`message_viewnum`
int(
12)
DEFAULT
NULL
COMMENT
‘被瀏覽量‘,
PRIMARY
KEY (
`messages_id`),
KEY
`user_id` (
`user_id`),
CONSTRAINT
`t_message_ibfk_1` FOREIGN
KEY (
`user_id`)
REFERENCES
`t_users` (
`user_id`)
)
ENGINE=
InnoDBDEFAULT
CHARSET
=utf8;
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> <system> <property name="defaultSqlParser">druidparser</property> <property name="charset">utf8</property> </system>
1.3配置server.xml
<!--添加user 此用戶可以讀寫-->
<user name="mycat"> <property name="password">mycat</property> <property name="schemas">mycat</property> </user> <!--添加user 此用戶只能讀--> <user name="mycat_red"> <property name="password">mycat_red</property> <property name="schemas">mycat</property> <property name="readOnly">true</property> </user> </mycat:server>1.4配置schema.x
<?xml version="1.
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="mycat" checkSQLschema="true" sqlMaxLimit="100"> <table name="t_users" primaryKey="user_id" dataNode="dn1" rule="rule1"/> <table name="t_message" type="global" primaryKey="messages_id" dataNode="dn1" /> </schema> <dataNode name="dn1" dataHost="jdbchost" database="test"/> <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostMaster" url="192.168.226.128:3306" user="root" password="123456"> </writeHost> <writeHost host="hostSlave" url="192.168.226.128:3306" user="root" password="123456" /> </dataHost> </mycat:schema>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://org.opencloudb/"> <tableRule name="rule1"> <rule> <columns>user_id</columns> <algorithm>func1</algorithm> </rule> </tableRule> <function name="func1" class="org.opencloudb.route.function.AutoPartitionByLong"> <property name="mapFile">autopartition-long.txt</property> </function> </mycat:rule>
1.5配置rule.xml
1.6 配置log4j.xml只需要把level 改成debug 就行,報錯可以在log看到錯誤信息方便定位
<level value="debug" />
ps:至此我們四個配置文件就配置完成了進入bin目錄下啟動我們的mycat吧!如下
啟動後我們進入navicat 新建兩個鏈接:
可讀可寫鏈接如下:
只可讀鏈接如下:
結構如下:
看到區別了嗎,莫名其妙多了主服務上面的三張表,到此為止你就可以進行測試了,簡單的讀寫分離也就完成了!
最後說一句,MyCat 很好的管理了我們讀寫分離的用戶最後附上讀連接進行寫操作的時候爆出來錯誤
ps :到此結束,小白教程,不喜勿噴,有問題留言,多謝大神指教!!!!!!!!!!!!!!!
linux下mysql主從復制(第二篇讀寫分離) mycat 中間件