天天看點

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

一.準備工作

1.因為Mycat是在java環境開發的,是以需要在實驗環境下安裝java,官方建議jdk1.7及以上版本,我這裡也寫一下将jdk1.6替換為jdk1.7的步驟,用來記錄一下,以免下次在遇到。

jdk1.7下載下傳路徑:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html,我這裡下載下傳的是jdk-7u80-linux-x64.gz,将該檔案解壓到你要存放的目錄,我這裡存放的位置是/usr/local/java,如下圖

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

2.使用vi /etc/profile指令修改環境變量,具體配置如下

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

之前的jdk版本是1.6,是以将之前的位址改變為1.7的安裝位址

3.檢查是否安裝成功

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

到此,java環境準備完畢

4.下載下傳linux版本的mycat,我這裡也給出位址:https://github.com/MyCATApache/Mycat-download/tree/master/1.3.0.3-release ,我下載下傳的是Mycat-server-1.3.0.3-release-20150527095523-linux.tar.gz,下載下傳成功之後将它傳到伺服器上,我這裡存放的位址是:/usr/local/mycat/ ,接下來就說說具體的配置

二.配置Mycat檔案,實作簡單的讀寫分離

1.修改mycat/conf/server.xml檔案,具體修改如下

<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
	- you may not use this file except in compliance with the License. - You 
	may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
	- - Unless required by applicable law or agreed to in writing, software - 
	distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
	License for the specific language governing permissions and - limitations 
	under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
	<system>
	<property name="defaultSqlParser">druidparser</property>
	<!-- 
        <property name="processorBufferChunk">40960</property>
        <property name="processors">1</property> 
	<property name="processorExecutor">32</property> 
	 -->
	<!--預設是65535 64K 用于sql解析時最大文本長度 -->
	<!--<property name="maxStringLiteralLength">65535</property>-->
	<!--<property name="sequnceHandlerType">0</property>-->
	<!--<property name="backSocketNoDelay">1</property>-->
	<!--<property name="frontSocketNoDelay">1</property>-->
	<!--<property name="processorExecutor">16</property>-->
	<!--
           <property name="mutiNodeLimitType">1</property> 0:開啟小數量級(預設) ;1:開啟億級資料排序
	   <property name="mutiNodePatchSize">100</property> 億級數量排序批量
	   <property name="processors">32</property> <property name="processorExecutor">32</property> 
	   <property name="serverPort">8066</property> <property name="managerPort">9066</property> 
	   <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> 
	   <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property>
         -->
	</system>
	<user name="root">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>
	</user>

	<user name="user">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
	</user>
       <!--以上配置的是連接配接mycat的使用者名和密碼-->
        <!-- 
        <cluster> 
             <node name="cobar1"> <property name="host">127.0.0.1</property> 
	     <property name="weight">1</property> </node> 
        </cluster>
        -->
	<!-- 
        <quarantine> 
             <host name="1.2.3.4"> <property name="user">test</property> </host> 
        </quarantine>
       -->

</mycat:server>
           

2.修改mycat/conf/schema.xml檔案,具體修改如下

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
		<!-- auto sharding by id (long) -->
		<!-- <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />-->

		<!-- global table is auto cloned to all defined data nodes ,so can join with any table whose sharding node is in the same data node -->
		<!-- <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />-->
		<!-- <table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" />-->
                <!-- random sharding using mod sharind rule -->
		<!-- <table name="hotnews" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="mod-long" />-->
		<!-- <table name="worker" primaryKey="ID" dataNode="jdbc_dn1,jdbc_dn2,jdbc_dn3" rule="mod-long" /> -->
		<!-- <table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" />-->
		<!--<table name="customer" primaryKey="ID" dataNode="dn1,dn2"rule="sharding-by-intfile">
			<childTable name="orders" primaryKey="ID" joinKey="customer_id" parentKey="id">
			<childTable name="order_items" joinKey="order_id" parentKey="id" /></childTable>
			<childTable name="customer_addr" primaryKey="ID" joinKey="customer_id" parentKey="id" />
		</table>-->
	</schema>

	<dataNode name="dn1" dataHost="localhost1" database="test" />
        <!--上面的database屬性設定的就是你要連接配接的資料庫-->
       <!--
        <dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
	<dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
	<dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" />
	<dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" />
        -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
                <!--設定執行寫操作的資料庫的IP位址、使用者名以及密碼-->
                <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="123456">
			<!-- 以下是設定多個執行讀操作的資料庫的IP位址、使用者名以及密碼 -->
			<readHost host="hostS1" url="192.168.1.1:3306" user="root" password="123456"/>
			<readHost host="hostS1" url="192.168.1.2:3306" user="root" password="123456"/>
			<readHost host="hostS1" url="192.168.1.3:3306" user="root" password="123456"/>
		</writeHost>
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>
	<!-- 
	<dataHost name="jdbchost" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM" url="mongodb://192.168.0.99/test" user="admin" password="123456" ></writeHost>
	</dataHost>	
	-->
        <!-- 
	<dataHost name="jdbchost" maxCon="1000" minCon="10" balance="0"
		dbType="mysql" dbDriver="jdbc">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="jdbc:mysql://localhost:3306"
			user="root" password="123456">
		</writeHost>
	</dataHost>
	-->
</mycat:schema>
           

3.修改mycat/conf/wrapper.conf檔案,具體修改如下

找到wrapper.java.command=java 将其改為wrapper.java.command=%JAVA_HOME%/bin/java
           

4.啟動mycat服務

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

因為我這裡之前已經啟動過了,是以提示已經在運作,可以使用ps -ef |grep mycat檢查程序

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

如果使用該指令查詢出來的不是如圖所示的話,有可能mycat服務就沒啟動起來,這是進入log目錄檢視日志檔案,使用 cat /usr/local/mycat/logs/wrapper.log,我第一次啟動的時候就失敗了,檢視日志檔案發現如下錯誤

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

這是不要慌,仔細排查日志,這裡說的就是我的端口名稱未被識别,這是就應該想到肯定跟hosts檔案有關,使用cat /etc/sysconfig/network

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

這是我們将上圖中的HOSTNAME屬性改為localhost,這是應重新開機才會使修改生效,重新開機完之後啟動mycat,然後檢視日志檔案,提示啟動成功

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

三.測試

mycat的連接配接方式與mysql的連接配接方式一樣,隻不過端口不同而已,mycat預設連接配接端口為8066,我這裡使用的是sqlyog連接配接測試,

linux系統安裝mycat,并配置讀寫分離規則一.準備工作

繼續閱讀