1. 程式人生 > >linux下mysql主從復制(第二篇讀寫分離) mycat 中間件

linux下mysql主從復制(第二篇讀寫分離) mycat 中間件

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) NOTNULLCOMMENT註冊用戶ID‘,
  `user_email`varchar(64) NOTNULLCOMMENT註冊用戶郵箱,
  `user_password`varchar(64) NOTNULLCOMMENT註冊用戶密碼,
  `user_nikename`varchar(64) NOTNULLCOMMENT註冊用戶昵稱,
  `user_creatime` datetime NOTNULLCOMMENT註冊時間,
  `user_status` tinyint(1) NOTNULL
COMMENT驗證狀態 1:已驗證 0:未驗證,
  `user_deleteflag` tinyint(1) NOTNULLCOMMENT刪除標記  1:已刪除 0:未刪除,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDBDEFAULTCHARSET=utf8;
 
-- -------------------------------------
-- Table structure for `t_message`微博表
-- -------------------------------------
DROPTABLEIFEXISTS`t_message`
;
CREATETABLE`t_message` (
  `messages_id`varchar(64) NOTNULLCOMMENT微博ID‘,
  `user_id`varchar(64) NOTNULLCOMMENT發表用戶,
  `messages_info`varchar(255) DEFAULTNULLCOMMENT微博內容,
  `messages_time` datetime DEFAULTNULLCOMMENT發布時間,
  `messages_commentnum`int(12) DEFAULTNULLCOMMENT評論次數,
  `message_deleteflag` tinyint(1) NOTNULLCOMMENT刪除標記 1:已刪除 0:未刪除,
  `message_viewnum`int(12) DEFAULTNULLCOMMENT被瀏覽量,
  PRIMARY KEY (`messages_id`),
  KEY`user_id` (`user_id`),
  CONSTRAINT`t_message_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES`t_users` (`user_id`)
) ENGINE=InnoDBDEFAULTCHARSET=utf8;


1.3配置server.xml

<?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>
<!--
添加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>
  
1.5配置rule.xml

<?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.6 配置log4j.xml只需要把level 改成debug 就行,報錯可以在log看到錯誤信息方便定位
<level value="debug" />


ps:至此我們四個配置文件就配置完成了進入bin目錄下啟動我們的mycat吧!如下
技術分享圖片

啟動後我們進入navicat 新建兩個鏈接:

   可讀可寫鏈接如下:

技術分享圖片

   只可讀鏈接如下:

技術分享圖片

結構如下:

技術分享圖片

    看到區別了嗎,莫名其妙多了主服務上面的三張表,到此為止你就可以進行測試了,簡單的讀寫分離也就完成了!

最後說一句,MyCat 很好的管理了我們讀寫分離的用戶最後附上讀連接進行寫操作的時候爆出來錯誤

技術分享圖片

ps :到此結束,小白教程,不喜勿噴,有問題留言,多謝大神指教!!!!!!!!!!!!!!!

linux下mysql主從復制(第二篇讀寫分離) mycat 中間件