Mycat詳解及配置讀寫分離(Centos7)

一.理論概述

  • 原理簡述 參考文檔 MyCAT主要是經過對SQL的攔截,而後通過必定規則的分片解析、路由分析、讀寫分離分析、緩存分析等,而後將SQL發給後端真實的數據塊,並將返回的結果作適當處理返回給客戶端。java

  • 功能簡述
  1. 對數據庫分片 經過設置條件,將統一數據庫中的數據分散的存儲到多個數據庫中,達到負載均衡的效果
  2. 水平拆分 同一張表的不一樣記錄,根據表的某個字段的某種規則拆分到多個數據庫(主機)上,這既是水平拆分。單庫業務表可能會過於龐大,存在單庫讀寫與存儲瓶頸,這種狀況能夠經過水平拆分解決
  3. 垂直拆分 不一樣的表切分到不一樣的數據庫(主機)上,這就是垂直拆分。
    通常按照業務表進行分類,劃分爲不一樣的業務、模塊庫,耦合度越低,越容易作垂直拆分
  4. 讀寫分離

mycat功能也比較強大,本案例只是針對於讀寫分離進行測試mysql

二.環境

ip 角色
192.168.111.8 mycat
192.168.111.100 寫動做數據庫
192.168.111.200 讀操做數據庫

三.部署

官網地址:http://www.mycat.io/linux

下載地址:http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gzsql

文檔地址:http://www.mycat.io/document/Mycat_V1.6.0.pdf數據庫

  • 部署mycat
[root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz 
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java8

[root@localhost ~]# rm -rf /usr/bin/java

[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java8' >> /etc/profile
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/java8/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

[root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

[root@localhost ~]# groupadd mycat
[root@localhost ~]# useradd -r -g mycat mycat
[root@localhost ~]# chown -R mycat.mycat /usr/local/mycat/

#下面是添加環境變量
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/mycat/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile

[root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local

[root@localhost ~]# vim /usr/local/mycat/conf/server.xml 

 80         <user name="root"> #鏈接mycat的用戶名
 81                 <property name="password">123456</property> #鏈接mycat對應的密碼
 82                 <property name="schemas">test</property> #使用該用戶名登陸時,是用哪一個數據庫,這裏寫的是邏輯庫名,在scheme.xml中會與物理庫庫名關聯起來


94 <!--
95         <user name="user">
96                 <property name="password">user</property>
97                 <property name="schemas">TESTDB</property>
98                 <property name="readOnly">true</property>
99         </user>
100 -->
#將這些註釋掉,暫時用不到,咱們只用上面一個用戶

#這個配置文件就這些

5         <schema name="test" checkSQLschema="false" sqlMaxLimit="100">
  6           <table name="test1" dataNode="dn1"/>
  7           <table name="test2" dataNode="dn1"/>
  8           <table name="test3" dataNode="dn1"/>
  9           <table name="test4" dataNode="dn1"/>
 10           <table name="test5" dataNode="dn1"/>
 11         </schema>
#這些是提早定義的表,將這些表都寫入dn1,dn1主機在下面配置文件會定義

 14         <dataNode name="dn1" dataHost="test1" database="test" />
 #database指定物理數據庫的庫名,將dn1,關聯到test1,test1在下面配置文件定義
 
 15         <dataHost name="test1" maxCon="1000" minCon="10" balance="1"
 16                           writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
 #name:物理數據庫名,與dataNode中dataHost對應
 #calance:均衡負載的方式;1表示開啓讀寫分離
 #dbType:數據庫類型
 #writeType:寫入方式
 
 17                 <heartbeat>select user();</heartbeat>
 #heartbeat:心跳檢測語句,注意語句結尾的分號要加。
 
 18                 <writeHost host="hostM1" url="192.168.111.100:3306" user="root"
 19                                    password="123456">
 20                     
 21                         <readHost host="hostS2" url="192.168.111.200:3306" user="root" password="123456" />
 22                 </writeHost>
 24         </dataHost>
#以上配置達到的效果就是192.168.111.100爲主庫,192.168.111.200爲從庫。
#Mycat主從分離只是在讀的時候作了處理,寫入數據的時候,只會寫入到writehost,須要經過mycat的主從複製將數據複製到readhost



[root@localhost ~]# /usr/local/mycat/bin/mycat start
#啓動服務

[root@localhost ~]# netstat -lnpt | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      60034/java    

[root@localhost ~]# yum -y install mariadb
[root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
#安裝mysql工具,進行測試一下

[root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066


MySQL [(none)]>

暫時完結...vim

相關文章
相關標籤/搜索