1. 程式人生 > >MyCat配置檔案詳解--server.xml

MyCat配置檔案詳解--server.xml

         server.xml 包含mycat的系統配置資訊,它有兩個標籤,分別是user和system,掌握system標籤的各項配置屬性是mycat調優的關鍵。

<?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://io.mycat/">
	<system>
	<!-- 配置該屬性的時候一定要保證mycat的字符集和mysql 的字符集是一致的 -->	
	<property name="charset">utf8</property>  
    <!-- 指定每次分配socker direct buffer 的值,預設是4096位元組 -->	
	<property name="processorBufferChunk">4096/property>   
    <!-- 配置系統可用的執行緒數量,預設值為CPU核心X每個核心執行執行緒的數量 -->	
	<property name="processors">4/property>   
    
    <!-- 指定BufferPool 的計算比例  預設值為bufferChunkSize(4096)X processors X 1000
	<property name="processorBufferPool">100000000/property> -->   
    
    <!-- 用來控制ThreadLocalPool 分配Pool的比例大小,預設值為100
	<property name="processorBufferLocalPercent">100/property> -->

    <!-- 用來指定Mycat全域性序列型別,0為本地檔案,1為資料庫方式,2為時間戳列方式,預設使用本地檔案方式,檔案方式主要用於測試
	<property name="sequnceHandlerType">0/property> -->

    <!-- TCP 引數配置,mycat在每次建立前後端連線時候,都會使用這些引數初始化TCP屬性,詳細可以檢視Java API 文件:http://docs.oracle.com/javase/7/docs/api/net/StandardSocketOptions.html
	<property name="frontSocketSoRcvbuf">1024*1024/property>
	<property name="frontSocketSoSndbuf">4*1024*1024/property>
	<property name="frontSocketNoDelay">1/property>
	<property name="backSocketSoRcvbuf">4*1024*1024/property>
	<property name="backSocketSoSndbuf">1024*1024/property>
	<property name="backSocketNoDelay">1/property> -->	

    <!-- mysql 連線相關配置 -->
    <!-- <property name="packetHeaderSize">4</property>  指定mysql協議中的報文頭長度,預設4個位元組-->
	<!-- <property name="maxPacketSize">1024*1024*16</property> 配置可以攜帶的資料量最大值,預設16M-->
	<!-- <property name="idleTimeout">1024*1024*16</property> 指定連線的空閒時間超時長度,如果某個連線空閒時間超過該值,則將連線關閉並回收,單位為毫秒,預設值為30分鐘-->
	<!-- <property name="txIsolation">3</property> 初始化前端連線事務的隔離級別有:
		READ_UNCOMMITTED=1
		READ_COMMITTED=2
		REPEATED_READ=3
		SERIALIZABLE=4 
      預設為3-->
	<!-- <property name="sqlExecuteTimeout">3</property>執行sql超時時間,預設為300秒-->


	<!-- 心跳屬性配置 -->
    <!-- <property name="processorCheckPeriod">1000</property>清理前後端空閒、超時、關閉連線的時間間隔,單位為毫秒,預設為1秒-->
    <!-- <property name="dataNodeIdleCheckPeriod">300*1000</property>對後端連線進行空閒,超時檢查的時間間隔,單位為毫秒,預設為300秒-->
    <!-- <property name="dataNodeHeartbeatPeriod">10*1000</property>對後端所有讀寫庫發起心跳的間隔時間,單位為毫秒,預設為10秒-->

	<!-- 服務相關屬性 -->
    <!-- <property name="bindIp">0.0.0.0</property>mycat服務監聽的ip地址,預設為0.0.0.0-->
    <!-- <property name="serverPort">8066</property>定義mycat使用的埠,預設值為8066-->
    <!-- <property name="managerPort">9066</property>定義mycat管理的埠,預設值為9066-->

	<!-- 分散式事務開關屬性 -->
    <!-- <property name="handleDistributedTransactions">0</property>0為不過濾分散式事務,1過濾分散式事務,2不過濾分散式事務,但是記錄分散式事務日誌。主要使用者是否允許跨庫事務。mycat 1.6版本開始,支援此屬性-->

 
    <!-- <property name="useOffHeapForMerge">1</property>配置是否啟用非堆記憶體跨分片結果集,1為開啟,0為關閉,mycat1.6開始支援該屬性-->

    <!-- 全域性表一致性檢測 -->
	<property name="useGlobleTableCheck">0</property>  <!--通過新增_MYCAT_OP_TIME欄位來進行一致性檢測,為BIGINT型別 1為開啟全加班一致性檢測、0為關閉 -->

	<property name="useSqlStat">0</property>  <!-- 1為開啟實時統計、0為關閉 -->


      <!--  <property name="useCompression">1</property>--> <!--1為開啟mysql壓縮協議-->
      <!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--設定模擬的MySQL版本號-->
	 
	<!-- 
	<property name="processors">1</property> 
	<property name="processorExecutor">32</property> 
	 -->
		<!--預設為type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
		<property name="processorBufferPoolType">0</property>
		<!--預設是65535 64K 用於sql解析時最大文字長度 -->
		<!--<property name="maxStringLiteralLength">65535</property>-->
		<!--<property name="processorExecutor">16</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> -->
		<!--分散式事務開關,0為不過濾分散式事務,1為過濾分散式事務(如果分散式事務內只涉及全域性表,則不過濾),2為不過濾分散式事務,但是記錄分散式事務日誌-->
		<property name="handleDistributedTransactions">0</property>
		
		<!--單位為m-->
		<property name="memoryPageSize">1m</property>

		<!--單位為k-->
		<property name="spillsFileBufferSize">1k</property>

		<property name="useStreamOutput">0</property>

		<!--單位為m-->
		<property name="systemReserveMemorySize">384m</property>

		<!--是否採用zookeeper協調切換  -->
		<property name="useZKSwitch">true</property>

	</system>
	
	<!-- 全域性SQL防火牆設定 -->
	<!-- 
	<firewall> 
	   <whitehost>
	      <host host="127.0.0.1" user="mycat"/>
	      <host host="127.0.0.2" user="mycat"/>
	   </whitehost>
       <blacklist check="false">
       </blacklist>
	</firewall>
	-->
	<!-- 定義登入mycat對的使用者許可權 -->
	<user name="root">
		<property name="password">123456</property>
		<!-- 若要訪問TESTDB 必須現在server.xml 中定義,否則無法訪問TESTDB-->
		<property name="schemas">TESTDB</property>
		<!-- 配置是否允許只讀 -->
		<property name="readOnly">true</property>
		<!-- 定義限制前端整體的連線數,如果其值為0,或者不設定,則表示不限制連線數量 -->
		<property name="benchmark">11111</property>
		<!-- 設定是否開啟密碼加密功能,預設為0不開啟加密,為1則表示開啟加密 -->
		<property name="usingDecrypt">1</property>
		<!-- 表級 DML 許可權設定 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>
</mycat:server>