mycat读写分离部署步骤
1.下載mycat:
https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5-RELEASE-20160301083012-linux.tar.gz
2.安裝mycat:
tar -zxvf?Mycat-server-1.5-GA-20160225120029-linux.tar.gz
mv mycat ?/srv/mycat-1.5
ln -s ?mycat-1.5 mycat
3.配置java環境變量:
which java
在bin/startup_nowrap.sh文件中找到noJavaHome=false行下并增加如下內容:
JAVA_HOME=Java_home的實際路徑
4.配置conf/schema.xml文件:
該文件主要配置讀寫分離數據庫的連接地址信息,具體如下:
root@ebj-rd-02:/srv/mycat/conf#?cat?schema.xml
<?xml?version="1.0"?>
<!DOCTYPE?mycat:schema?SYSTEM?"schema.dtd">
<mycat:schema?xmlns:mycat="http://org.opencloudb/">
????<schema?name="mydb"?checkSQLschema="false"?sqlMaxLimit="100"??dataNode="dn1"/>
????<dataNode?name="dn1"?dataHost="localhost1"?database="test"?/>
????<dataHost?name="localhost1"?maxCon="1000"?minCon="50"?balance="1"
????????writeType="0"?dbType="mysql"?dbDriver="native"?switchType="-1"??>
????????<heartbeat>select?user()</heartbeat>
????????<writeHost?host="host_3320"?url="127.0.0.1:3320"?user="root"???password="password">
????????????<readHost?host="host_3321"?url="127.0.0.1:3321"?user="root"????password="password"/>
????????????<readHost?host="host_3322"?url="127.0.0.1:3322"?user="root"????password="password"/>
????????</writeHost>
????</dataHost>
</mycat:schema>
文件終于參數說明:
這里mydb?就是我們對外聲稱的我們有數據庫的名稱??必須和server.xml中的用戶指定的數據庫名稱一致
添加一個dataNode="dn1"?是指定了我們這個庫只在dn1上.沒有進行分庫
sqlMaxLimit表示sql語句最大返回的結果集的大小;
writeHost和readHost配置的是實際的讀數據庫和寫數據庫的IP地址端口,用戶名及密碼;
balance?屬性負載均衡類型,目前的取值有?4?種:
1.?balance="0",?不開啟讀寫分離機制,所有讀操作都發送到當前可用的?writeHost?上。
2.?balance="1",全部的?readHost?與?stand?by?writeHost?參與?select?語句的負載均衡,
簡單的說,當雙主雙從模式(M1?->S1?,?M2->S2,并且?M1?與?M2?互為主備),正常情況下,?M2,S1,S2?都參與?select?語句的負載均衡。
3.?balance="2",所有讀操作都隨機的在?writeHost、?readhost?上分發。
4.?balance="3",?所有讀請求隨機的分發到?wiriterHost?對應的?readhost?執行,writerHost?不負擔讀壓力,注意?balance=3?只在?1.4?及其以后版本有,?1.3?沒有。
writeType?屬性,目前的取值有?3?種:
1.?writeType="0",?所有寫操作發送到配置的第一個?writeHost,第一個掛了切到還生存的第二個
writeHost,重新啟動后已切換后的為準,切換記錄在配置文件中:dnindex.properties?.
2.?writeType="1",所有寫操作都隨機的發送到配置的?writeHost。
3.?writeType="2",沒實現。
switchType?屬性
-?-1?表示不自動切換
-?1?默認值,自動切換
-?2?基于MySQL?主從同步的狀態決定是否切換
5配置?server.xml?
該文件主要配置的是mycat的用戶名和密碼及mycat的端口號信息配置,mycat的用戶名和密碼和mysql的用戶名密碼是分開的,應用連接mycat就用這個用戶名和密碼。
root@ebj-rd-02:/srv/mycat/conf#?cat?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="serverPort">18066</property>?
????????<property?name="managerPort">19066</property>
????????<property?name="charset">utf8</property>
????????<property?name="idleTimeout">30000000</property>
??????<!--??<property?name="useCompression">1</property>-->?<!--1為開啟mysql壓縮協議-->
????<!--?<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="test">
????????<property?name="password">test_123</property>
????????<property?name="schemas">mydb</property>
????</user>
????<user?name="user">
????????<property?name="password">user_123</property>
????????<property?name="schemas">mydb</property>
????????<property?name="readOnly">true</property>
????</user>
????<!--?
????<quarantine>?
???????<whitehost>
??????????<host?host="127.0.0.1"?user="mycat"/>
??????????<host?host="127.0.0.2"?user="mycat"/>
???????</whitehost>
???????<blacklist?check="false"></blacklist>
????</quarantine>
????-->
</mycat:server>
文件終于參數說明:
serverPort設置mycat的服務端口,默認為8066;
managerPort設置mycat的管理端口,默認為9066;
idleTimeout設置mycat的空閑超時時間;
user設置mycat的訪問相關schema的用戶名及密碼;
6.配置日志文件的路徑及日志級別:
root@ebj-rd-02:/srv/mycat/conf#?cat?log4j.xml?
<?xml?version="1.0"?encoding="UTF-8"?>
<!--
?-?Copyright?1999-2012?Alibaba?Group.
?-??
?-?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?log4j:configuration?SYSTEM?"log4j.dtd">
<log4j:configuration?xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender?name="ConsoleAppender"?class="org.apache.log4j.ConsoleAppender">
??<layout?class="org.apache.log4j.PatternLayout">
???<param?name="ConversionPattern"?value="%d{MM-dd?HH:mm:ss.SSS}??%5p?[%t]?(%F:%L)?-%m%n"?/>
??</layout>
?</appender>
??<appender?name="FILE"?class="org.apache.log4j.RollingFileAppender">
??????<param?name="file"?value="/data/log/mycat/mycat.log"?/>
????<param?name="Append"?value="false"/>
????<param?name="MaxFileSize"?value="1000KB"/>
????<param?name="MaxBackupIndex"?value="10"/>?
????<param?name="encoding"?value="UTF-8"?/>
????<layout?class="org.apache.log4j.PatternLayout">
??????<param?name="ConversionPattern"?value="%d{MM/dd?HH:mm:ss.SSS}??%5p?[%t]?(%F:%L)?-%m%n"?/>
????</layout>
??</appender>
??<root>
????<level?value="info"?/>
????<appender-ref?ref="FILE"?/>
?????<!--<appender-ref?ref="FILE"?/>-->
??</root>
</log4j:configuration>
文件終于參數說明:
<level?value="debug"?/>表示設置mycat的日志級別為調試模式,默認為info;
<param?name="file"?value="/data/log/mycat/mycat.log"?/>表示設置mycat的日志文件路徑為/data/log/mycat/mycat.log
7.mycat日常管理
root@ebj-rd-02:/srv/mycat#?./bin/mycat?--help
Usage:?./bin/mycat?{?console?|?start?|?stop?|?restart?|?status?|?dump?}
登錄mycat讀寫分離服務:
mysql?-utest?-ptest_123?-P18066?-h127.0.0.1
登錄mycat管理端:
mysql?-utest?-ptest_123?-P19066?-h127.0.0.1
在事務中,通過/*balance*/強制讀取主數據庫數據:
MySQL?[mydb]>?begin;
MySQL?[mydb]>?/*balance*/select?*?from?mytest1;
MySQL?[mydb]>?commit;
查看mycat管理端的命令幫助:
MySQL?[(none)]>?show?@@help;
8.部署中的異常處理:
MySQL?[(none)]>?use?test;
Database?changed
MySQL?[test]>?show?tables;
ERROR?1184?(HY000):?Unknown?charsetIndex:192
MySQL?[test]>?select?*?from?mytest;
ERROR?1184?(HY000):?Unknown?charsetIndex:192
MySQL?[test]>?exit
該異常是字符集問題引起的數據庫不能連接成功
在conf/index_to_charset.properties文件中增加與自己mysql服務器匹配的字符集即可:
root@ebj-rd-02:/srv/mycat/conf#?tail?-1?index_to_charset.properties
192=utf8
root@ebj-rd-02:/srv/mycat/conf#?
轉載于:https://blog.51cto.com/webseven/1746870
總結
以上是生活随笔為你收集整理的mycat读写分离部署步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怀孕梦到小男孩是什么意思
- 下一篇: 做梦梦到蝙蝠好不好