萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mycat實現MySQL讀寫分離的配置例子

Mycat實現MySQL讀寫分離的配置例子

MySQL讀寫分離在游戲開發應用中非常的常用到了我們在這裡來為各位介紹一篇Mycat實現MySQL讀寫分離的配置例子,希望文章對大家有幫助。

環境

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   

 
               123456
 
               web
 
       

 
 
 
       
 
               123456
 
               web
 
               true
 
       

 

注意:

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">
 
                 select user()
 
                 
 
                 <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" />
 
                 
 
                 
 
        
 
 
 

 

需要配置的位置:

 

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 |

copyright © 萬盛學電腦網 all rights reserved