搭建mycat 一、準備工作 1、確保jdk已安裝成功,並且jdk版本選用1.7以上版本 2、準備一臺新的主機mysql_mycat放到master的前面做代理 mycat ip 192.168.232.13 3、將三台機器互做本地解析 192.168.232.11 mysql_master 192 ...
搭建mycat
一、準備工作
1、確保jdk已安裝成功,並且jdk版本選用1.7以上版本
2、準備一臺新的主機mysql_mycat放到master的前面做代理
mycat ip 192.168.232.13
3、將三台機器互做本地解析
192.168.232.11 mysql_master
192.168.232.12 mysql_slave1
192.168.232.13 mysql_slave2
192.168.232.14 mysql_mycat
架構:
二、下載安裝mycat
我們通過本地上傳mycat包來安裝mycat
[root@mysql_mycat ~]# tar xf Mycat-server-1.6.5-release-linux.tar.gz -C /usr/local/
cd 到/usr/local目錄下,多了一個mycat文件夾
三、編輯配置文件
[root@mysql_mycat conf]# cd mycat/conf
[root@mysql_mycat conf]# vim server.xml
1.server.xml
<user name="mycat" defaultAccount="true">
<property name="password">Qf@12345!</property>
<property name="schemas">testdb</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>
<!--只讀用戶-->
<user name="mycat_read">
<property name="password">Qf@12345!</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
2.編輯schema.xml
[root@mysql_mycat conf]# vim schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="testdb"/>
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="mysql_master" url="192.168.232.11:3306" user="mycat" password="Qf@12345!" >
<readHost host="mysql_slave1" url="192.168.232.12:3306" user="mycat" password="Qf@12345!" />
</writeHost>
</dataHost>
</mycat:schema>
註意:一定要嚴格遵守標簽開始和結尾格式,否則會報錯導致mycat啟動後自動關閉
3.在mysql_mycat上創建庫
mysql> create database testdb;
mysql> use testdb;
mysql> create table testdb.t1(id int);
mysql> insert into testdb.t1 values(1);
4.在master上給用戶授權
[root@mysql_master ~]# mysql -uroot -p
mysql> grant all on testdb.* to mycat@'%' identified by 'Qf@12345!';
mysql> flush privileges;
5.在mycat機器上測試mycat用戶登錄master
[root@mysql_mycat ~]# mysql -umycat -p'Qf@12345!' -h mysql_master
登錄上之後不進行任何操作,直接退出
6.在wrapper.conf中添加
[root@mycat mycat]# cd conf/
[root@mysql_mycat conf]# vim wrapper.conf
#在設置JVM哪裡添加如下內容
wrapper.startup.timeout=300 //超時時間300秒
啟動:
[root@mysql_mycat mycat]# bin/mycat start
Starting Mycat-server...
[root@mysql_mycat mycat]# jps
3814 Jps
3801 WrapperSimpleApp
再次啟動jps查看,如果進程丟失一個,則是因為jdk版本問題,更換jdk
四、卸載重新安裝jdk
1.卸載原有jdk版本
[root@mysql_mycat mycat]# java -version
查看jdk所有包
[root@mysql_mycat ~]# rpm -qa | grep openjdk
卸載:[root@mysql_mycat ~]# rpm -qa | grep openjdk |xargs rpm -e --nodeps
再查看:[root@mysql_mycat ~]# rpm -qa | grep openjdk
發現jdk已全部刪除
2.安裝新jdk1.8
(1)從本地上傳jdk文件壓縮包
(2)解壓縮
[root@mysql_mycat ~]# tar xzf jdk-8u162-linux-x64.tar.gz -C /usr/local/
[root@mysql_mycat ~]# cd /usr/local/
[root@mysql_mycat local]# mv jdk1.8.0_162/ java
(3)設置環境變數
[root@mysql_mycat ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
然後使之生效:
[root@mysql_master local]# source /etc/profile
(4)查看java版本
[root@mysql_mycat ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
五、開啟mycat
[root@mysql_mycat mycat]# bin/mycat start
[root@mysql_mycat mycat]# jps
7173 WrapperSimpleApp
7189 Jps
查看8066埠
[root@mysql_mycat ~]# netstat -lntp | grep java
(1)將master當做mycat的客戶端
[root@mysql_master ~]# mysql -umycat -hmysql_mycat -p'Qf@12345!' -P 8066
六、常見問題
1.在master上登錄:mysql -umycat -hmysql_mycat -p'Qf@12345!' -P 8066
2.若出現連接失敗,大概率是mycat未啟動
3.cd到/mycat/bin/mycat目錄,start啟動
4.查看jps,有兩個進程,啟動成功
5.多行註釋:
<![CDATA[---內容---]]>
6.mycat配置的密碼是Qf@12345!
7.插入數據操作在mycat端
七、show tables報錯
如果在show table報錯:
mysql> show tables;
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0
解決方式:
登錄master服務將mycat的登錄修改為%
mysql> update user set Host = '%' where User = 'mycat' and Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
或者在授權用戶mycat許可權為*.*