環境
MySQL版本:
mysql> select version();
+————+
| version() |
+————+
| 5.6.30-log |
+————+
1 row in set (0.05 sec)
確保主從已經同步
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
QQ20160627094913
安裝mycat
在192.168.10.252上操作
cd /soft
wget https://github.com/MyCATApache/Mycat-download/raw/master/1.4.1-DEV/Mycat-server-1.4.2-20160613220038-linux.tar.gz
tar xf Mycat-server-1.4.2-20160613220038-linux.tar.gz
[root@db01 soft]# mkdir -p /application
[root@db01 soft]# mv mycat /application/
[root@db01 soft]# ll /application/mycat/
total 24
drwxr-xr-x. 2 root root 4096 Jun 7 13:53 bin
drwxrwxrwx. 2 root root 4096 Oct 20 2015 catlet
drwxrwxrwx. 2 root root 4096 Jun 7 13:53 conf
drwxr-xr-x. 2 root root 4096 Jun 7 13:53 lib
drwxrwxrwx. 2 root root 4096 Oct 20 2015 logs
-rwxrwxrwx. 1 root root 211 Jun 13 2016 version.txt
[root@db01 soft]# source /etc/profile
[root@db01 soft]# tail -1 /etc/profile
export PATH=/application/mycat/bin:$PATH
安裝java環境
在192.168.10.252操作
下載JDK
wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz
tar xf jdk-8u60-linux-x64.tar.gz -C /application/
ln -s /application/jdk1.8.0_60 /application/jdk
設置java的環境變量
echo ‘export JAVA_HOME=/application/jdk’>>/etc/profile
echo ‘export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib’ >>/etc/profile
echo ‘export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin’ >>/etc/profile
. /etc/profile
[root@db01 soft]# java -version
java version “1.8.0_60”
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
提示:jdk至少要1.7的版本
創建管理用戶
主庫上對web用戶授權如下:
grant insert,delete,update,select on web.* to web@’192.168.10.%’ identified by ‘123456’;
從庫上對web用戶授權如下:
提示:由於主庫和從庫是同步復制的,所以從庫上的web用戶會自動和主庫的一致,即無法實現只讀select的授權
revoke insert,update,delete on web.* from web@’192.168.10.%’;
配置mycat
修改server.xml,
Source code
注意:
1、這裡配置的是可以連接主庫的兩個用戶
用戶:web 密碼: 123456 給予此用戶web數據庫增刪改查的權限。
用戶:web_r 密碼:123456 給予此用戶web數據庫讀的權限。
2、這裡的web,不一定是你數據庫上的真實庫名,可以任意指定,只要接下來和schema.xml的配置文件的庫名統一即可
修改schemaxml
Source code
<table name="hotnews" primaryKey="ID" dataNode="dn1,dn2,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 name="customer_addr" primaryKey="ID" joinKey="customer_id"
parentKey="id" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<writeHost host="hostM1" url="192.168.10.230:3306" user="web"
password="123456">
<readHost host="hostS1" url="192.168.10.229:3306" user="web"
password="123456" />
?xml:namespace>?xml>
需要配置的位置:
balance=”1″ writeType=”0″ switchType=”1″
balance
1、balance=0 不開啟讀寫分離機制,所有讀操作都發送到當前可用的writehostle .
2、balance=1 全部的readhost與stand by writeHost 參與select語句的負載均衡。簡單的說,雙主雙從模式(M1àS1,M2àS2,並且M1和M2互為主備),正常情況下,M1,S1,S2都參與select語句的復雜均衡。
3、balance=2 所有讀操作都隨機的在readhost和writehost上分發
writeType
負載均衡類型,目前的取值有3種:
1、writeType=”0″, 所有寫操作發送到配置的第一個writeHost。
2、writeType=”1″,所有寫操作都隨機的發送到配置的writeHost。
3、writeType=”2″,不執行寫操作。
switchType
1、switchType=-1 表示不自動切換
2、switchType=1 默認值,自動切換
3、switchType=2 基於MySQL 主從同步的狀態決定是否切換
啟動mycat
[root@wohong bin]# ./mycat console
Running Mycat-server…
wrapper |