Mycat高可用解決方案三(讀寫分離)

Mycat高可用解決方案三(讀寫分離)

1、系統部署規劃

名稱html

IPjava

主機名稱node

配置mysql

Mycat主機01linux

192.168.199.112git

mycat01github

2/2Gsql

Mysql主節點數據庫

192.168.199.110windows

mysql01

2/2G

Mysql從節點

192.168.199.111

mysql02

2/2G

2、軟件版本:

進入下載列表地址:http://dl.mycat.io

3、mycat 讀寫分離-架構圖

MyCat 介紹 ( MyCat 官網:http://www.mycat.io/

MyCat 的讀寫分離是基於後端 MySQL 集羣的主從同步來實現的,而 MyCat 只是 提供語句的分發功能。

MyCat1.4 開始支持 MySQL 主從複製狀態綁定的讀寫分離機制,讓讀更加安全可靠。

 4、MyCat 的安裝

mycat主機配置:192.168.199.112

一、配置網絡
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static #HWADDR=00:50:56:a1:12:53 IPADDR=192.168.199.112 GATEWAY=192.168.199.2 NETMASK=255.255.255.0 DNS1=8.8.8.8 DNS2=192.168.199.2

二、設置 MyCat 的主機名和 IP 與主機名的映射
# vi /etc/sysconfig/network

NETWORKING=yes HOSTNAME=mycat-01

# vi /etc/hosts

127.0.0.1 localhost
127.0
.0.1 mycat-01 192.168.199.112 mycat-01 192.168.199.110 mysql-01 192.168.199.111 mysql-02

三、由於 MyCat 是用 Java 開發的,所以 MyCat 運行須要安裝 JDK(準確來講是 JRE 就夠了),而且須要 JDK1.7 或以上版本

卸載自帶的openjdk版本:

[root@mycat-01 jdk1.7.0_79]# rpm -qa |grep java tzdata-java-2018g-1.el6.noarch java-1.7.0-openjdk-1.7.0.201-2.6.16.0.el6_10.x86_64 [root@mycat-01 jdk1.7.0_79]# rpm -e --nodeps tzdata-java-2018g-1.el6.noarch [root@mycat-01 jdk1.7.0_79]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.201-2.6.16.0.el6_10.x86_64 [root@mycat-01 jdk1.7.0_79]#

安裝jdk1.7

mkdir -p /java wget http://dl.mycat.io/jdk-7u79-linux-x64.tar.gz mkdir -p /usr/local/java/
tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/java/

配置JDK環境變量:

# vi /etc/profile

## java env export JAVA_HOME=/usr/local/java/jdk1.7.0_79 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# source /etc/profile
# java -version
四、建立 mycat 用戶並設置密碼(密碼:mycat)
# useradd mycat

# passwd mycat

# cd /usr/local/

# chown mycat:mycat -R mycat/

 

其餘相關命令:

1、建立用戶: 在建立用戶時,須要爲新建用戶指定一用戶組,若是不指定其用戶所屬的工做組,自動會生成一個與用戶名同名的工做組。 建立用戶 mycat 的時候指定其所屬工做組mycats,例:useradd –g mycats mycat 2、使用 passwd 命令爲新建用戶設置密碼(密碼:mycat) 例:passwd mycat 注意:沒有設置密碼的用戶不能使用。 3、命令 usermod 修改用戶帳戶 例:將用戶 mycat 的登陸名改成 my1, usermod –l my1 mycat 例:將用戶 mycat 加入到 users組中, usermod –g mycats mycat 例:將用戶 mycat 目錄改成/mycats/my1 usermod –d /mycats/my1 mycat 4、使用命令 userdel 刪除用戶帳戶 例:刪除用戶mycat userdel mycat 例:刪除用戶 mycat2,同時刪除他的工做目錄 userdel –r mycat2

本身總結的另一種方式:
 一、執行命令找到用戶目錄並刪除:
 find / -name mycat
 rm -rf /home/mycat 和可懷疑的文件目錄
 
 二、執行命令刪除用戶:
 cat /etc/passwd
 vi /etc/passwd
 連擊dd刪除mycat用戶
 
 三、執行命令刪除用戶組:
 cat /etc/group
 vi /etc/group
 連擊dd刪除mycat用戶


一、與用戶(user)和用戶組(group)相關的配置文件;

1)與用戶(user)相關的配置文件;
/etc/passwd 注:用戶(user)的配置文件;
/etc/shadow 注:用戶(user)影子口令文件;

2)與用戶組(group)相關的配置文件;
/etc/group 注:用戶組(group)配置文件;
/etc/gshadow 注:用戶組(group)的影子文件;

二、管理用戶(user)和用戶組(group)的相關工具或命令;

1)管理用戶(user)的工具或命令;
 
useradd 注:添加用戶
adduser 注:添加用戶
passwd 注:爲用戶設置密碼
usermod 注:修改用戶命令,能夠經過usermod 來修改登陸名、用戶的家目錄等等;
pwcov 注:同步用戶從/etc/passwd 到/etc/shadow
pwck 注:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操做,是從/etc/shadow和 /etc/passwd 建立/etc/passwd ,而後會刪除 /etc/shadow 文件;
finger 注:查看用戶信息工具 id 注:查看用戶的UID、GID及所歸屬的用戶組 chfn 注:更改用戶信息工具
su 注:用戶切換工具 sudo 注:sudo 是經過另外一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,而後經過切換到的用戶來完成相應的任務,
但sudo 能後面直接執行命令,好比sudo 不須要root 密碼就能夠執行root 賦與的執行只有root才能執行相應的命令;但得經過visudo 來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也能夠不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是同樣的;
sudoedit 注:和sudo 功能差很少;

二、管理用戶組(group)的工具或命令;
groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息
groups 注:顯示用戶所屬的用戶組
grpck grpconv 注:經過/etc/group和/etc/gshadow 的文件內容來同步或建立/etc/gshadow ,若是/etc/gshadow 不存在則建立;
grpunconv 注:經過/etc/group 和/etc/gshadow 文件內容來同步或建立/etc/group,而後刪除gshadow文件;

五、上傳安裝包 Mycat-server-1.6.5-release-20180122220033-linux.tar.gz MyCat 服務器中的/home/mycat 目錄,

並解壓並移動到 /usr/local/mycat 目錄

或者

直接下載安裝包:

wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
cd /usr/local/mycat/

設置 MyCat 的環境變量
# vi /etc/profile

## mycat env export MYCAT_HOME=/usr/local/mycat export PATH=$PATH:$MYCAT_HOME/bin
# source /etc/profile

 

 5、配置MyCat

簡單的讀寫分離(schema.xml和server.xml),只有在特殊規則須要配置rule.xml

1、在配置 MyCat 前,請確認 MySQL 的主從複製安裝配置已完成並正常運行。MySQL 主從數據的同步在MySQL 中配置,MyCat 不負責數據同步的問題。

補充:

(1) MySQL 主從複製配置中,若是涉及到函數或存儲過程的同步複製,須要在/etc/my.cnf 中的[mysqld]段中增長配置 log_bin_trust_function_creators=true ,

或在客戶端中設置 set global log_bin_trust_function_creators = 1;

(2) 若是要作讀寫分離下的主從切換,那麼從節點也有可能會變爲寫節點,所以從節點就不能設置爲只讀 read_only=1 

(3) Linux 版本的 MySQL,須要設置爲 MySQL 大小寫不敏感,不然可能會發生找不到表的問題。可在/etc/my.cnf [mysqld]段中增長 lower_case_table_names=1 

2、配置 MyCat schema.xml

schema.xml MyCat 最重要的配置文件之一,用於設置 MyCat 的邏輯庫、表、數據節點、dataHost 等內容。

[mycat@mycat-01 ~]# cd /usr/local/mycat/conf/

[root@mycat-01 conf]#vi schema.xml

參數說明:編寫習慣:從下往上,dataHost > dataNode > schema(table)

本次配置:(dtd新老版本不同,這裏要注意)

老版本: 新版本:
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/">
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

 

 
 
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
  <!-- 三、定義MyCat的邏輯庫,邏輯庫的概念與MySQL中的 database 概念相同 --> <!-- 方式一:非讀寫分離 schema --> <!-- <schema name="wr-off-schema01" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-off-dn01"></schema> --> <!-- <schema name="wr-off-schema02" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-off-dn02"></schema> --> 
<!-- 方式二:讀寫分離 schema --> <schema name="wr-on-schema01" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-on-dn01"></schema> <schema name="wr-on-schema02" checkSQLschema="false" sqlMaxLimit="100" dataNode="wr-on-dn02"></schema> <!-- 二、定義MyCat的數據節點 --> <!-- 方式一:非讀寫分離 dataNode --> <!-- <dataNode name="wr-off-dn01" dataHost="dtHost01" database="test01" /> --> <!-- <dataNode name="wr-off-dn02" dataHost="dtHost01" database="test02" /> -->
<!-- 方式二:讀寫分離 dataNode -->
<dataNode name="wr-on-dn01" dataHost="dtHost02" database="test01" /> <dataNode name="wr-on-dn02" dataHost="dtHost02" database="test02" /> <!-- 注意:schema中的每個dataHost中的host屬性值必須惟一,不然會出現主從在全部dataHost中所有切換的現象。-->
<!-- 一、定義數據的物理主機 --> <!-- 方式一:非讀寫分離 dataHost --> <!-- 定義數據主機dtHost01,只鏈接到MySQL讀寫分離集羣中的Master節點,不使用MyCat託管MySQL主從切換 --> <!-- <dataHost name="dtHost01" maxCon="500" minCon="20" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.199.110:3306" user="root" password="123456" /> </dataHost> -->
<!-- 方式二:使用MyCat託管MySQL主從切換 --> <!-- 定義數據主機dtHost02,鏈接到MySQL讀寫分離集羣,並配置了讀寫分離和主從切換 --> <dataHost name="dtHost02" maxCon="500" minCon="20" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <!-- 經過show slave status檢測主從狀態, 當主宕機之後,發生切換,從變爲主,原來的主變爲從,這時候show slave status就會發生錯誤,由於原來的主沒有開啓slave, 不建議直接使用switch操做,而是在DB中作主從對調。 --> <heartbeat>show slave status</heartbeat> <writeHost host="hostM2" url="192.168.199.110:3306" user="root" password="123456" />
<readHost host="hostS2" url="192.168.199.111:3306" user="root" password="123456" />
</writeHost> <writeHost host="hostS2" url="192.168.199.111:3306" user="root" password="123456" /> </dataHost> <!-- 參數balance決定了哪些MySQL服務器參與到讀SQL的負載均衡中 --> <!-- balance="0",爲不開啓讀寫分離,全部讀操做都發送到當前可用的writeHost上--> <!-- balance="1",所有的readHost與stand by writeHost參與select語句的負載均衡--> <!-- balance="2",全部讀操做都隨機的在writeHost、readHost上分發--> <!-- MyCat1.4版本中,若想支持MySQL一主一從的標準配置,而且在主節點宕機的狀況下,從節點還能讀取數據, 則須要在MyCat裏配置爲兩個writeHost並設置balance="1" --> <!-- writeType="0",全部寫操做發送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost--> <!-- writeType="1",僅僅對於galera for mysql集羣這種多主多節點都能寫入的集羣起效,此時Mycat會隨機選擇一個writeHost並寫入數據, 對於非galera for mysql集羣,請不要配置writeType=1,會致使數據庫不一致的嚴重問題 --> </mycat:schema>

MyCat1.4 開始支持 MySQL 主從複製狀態綁定的讀寫分離機制,讓讀更加安全可靠,配置以下:

MyCat 心跳檢查語句配置爲 show slave status,dataHost上定義兩個新屬性:switchType="2" 與 slaveThreshold="100",此時意味着開啓MySQL主從複製狀態綁定的讀寫分離與切換機制,MyCat心跳機制經過檢測 show slave status 中的"Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三個字段來肯定當前主從同步的狀態以及Seconds_Behind_Master主從複製時延,當 Seconds_Behind_Master大於slaveThreshold 時,讀寫分離篩選器會過濾掉此 Slave 機器,防止讀到好久以前的舊數據,而當主節點宕機後,切換邏輯會檢查Slave 上的Seconds_Behind_Master 是否爲 0,爲 0 則表示主從同步,能夠安全切換,不然不會切換。

 三、配置 server.xml

server.xml 主要用於設置系統變量、管理用戶、設置用戶權限等。
[root@mycat-01 conf]# vi server.xml

 

老版本: 新版本:
 
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">

 

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="defaultSqlParser">druidparser</property> <property name="charset">utf8mb4</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>  <!-- 用戶1,對應的MyCat邏輯庫鏈接到的數據節點對應的主機爲MySQL主從複製配置中的Master節點, 沒實現讀寫分離,讀寫都在該Master節點中進行 --> <!-- <user name="mycat01"> <property name="password">123456</property> <property name="schemas">wr-off-schema01,wr-off-schema02</property> </user> -->  <!-- 用戶2,對應的MyCat邏輯庫鏈接到的數據節點對應的主機爲主從複製集羣,並經過MyCat實現了讀寫分離 --> <user name="mycat02"> <property name="password">123456</property> <property name="schemas">wr-on-schema01,wr-on-schema02</property> </user> <!-- 用戶3,只讀權限--> <user name="mycat03"> <property name="password">123456</property> <property name="schemas">wr-on-schema01,wr-on-schema02</property> <property name="readOnly">true</property> </user> </mycat:server>

 mycat用戶密碼加密:

爲root用戶生成加密後的密碼:cd /usr/local/mycat/lib/
java -cp
Mycat-server-1.6.5-release.jar io.mycat.util.DecryptUtil 0:root:12345

<property name = "usingDecrypt">1</property> <property name = "password">hpYb3oDTK+R9M1d6jHkQZoymhRwEM8zq47km/5/26A5k8B9LpraNFbaeZFBregpgoy24TslumO8aWzieL+u84g==</property>

四、防火牆中打開 8066 和 9066 端口

MyCat 的默認數據端口爲 8066,mycat 經過這個端口接收數據庫客戶端的訪問請求。
管理端口爲 9066,用來接收 mycat 監控命令、查詢 mycat 運行情況、從新加載配置文件等。
[root@mycat-01 mycat]# vi /etc/sysconfig/iptables
增長:

## MyCat -A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT

重啓防火牆:
[root@mycat-01 mycat]# service iptables restart

五、修改 log 日誌級別爲 debug

以便經過日誌確認基於 MyCat 的 MySQL 數據庫集羣讀寫分離的數據操做狀態(能夠在正式上生產前改爲 info 級別)
[mycat@mycat-01 conf]$ vi /usr/local/mycat/conf/log4j.xml

 

六、啓動 MyCat

[mycat@mycat-01 bin]$ cd /usr/local/mycat/bin/
(1) 控制檯啓動,這種啓動方式在控制檯關閉後,MyCat 服務也將關閉,適合調試使用:
[mycat@mycat-01 bin]$ ./mycat console
(2) 能夠採用如下後臺啓動的方式:
[mycat@mycat-01 bin]$ ./mycat start
Starting Mycat-server...
(對應的,重啓: mycat restart , 關閉: mycat stop )

 檢查啓動日誌:tail -f /usr/local/mycat/logs/wrapper.log

或者 經過jps -m命令查看:

[mycat@mycat-01 bin]$ jps 2052 Jps 1980 WrapperSimpleApp [mycat@mycat-01 bin]$ jps -m 1980 WrapperSimpleApp io.mycat.MycatStartup start 2062 Jps -m [mycat@mycat-01 bin]$

七、MyCat 鏈接測試

(1)若是本地 Windows 安裝有 MySQL,可使用已有的 mysql 客戶端遠程操做 MyCat

mysql -umycat02 -p123456 -h 192.168.199.112 -P8066

 

1:如何查看MySQL相關的編碼格式默認值

在cmd中,輸入指令"mysql –u root –p」以root身份鏈接mysql數據庫

image

而後有兩種方式查看編碼格式:

1)show variables like ‘character%’;

image

2)show variables like ‘collation%’;

image

2:既然能夠用命令查看,固然也能夠用命令修改了

稍微解釋一下:

character_set_client:客戶端編碼方式;

character_set_connection:創建鏈接時使用的編碼;

character_set_database:數據庫的編碼;

character_set_result:結果集的編碼;

character_set_server:數據庫服務器的編碼;

I:執行命令:set NAMES ‘utf8’;

    該命令等同於執行以下三條命令:

        SET character_set_client = utf8; 
        SET character_set_results = utf8; 
        SET character_set_connection = utf8;

    可是,該設置的編碼格式,只對當前鏈接(窗口)有效,即用另一個Dos窗口再鏈接mysql數據庫進行查看,編碼格式是沒有改變的。

II:數據庫、表、字段,都可以在建立時設置其默認編碼格式,或者在其後進行修改

    1)create database dbname character set utf8;

        alter database dbname character set utf8;

    2)create table tname(…) default charset=utf8;

        alter table type character set utf8;

    3)create table tname(flag_deleted enum('Y','N') character set utf8 not null default 'N')

        alter table type modify type_name varchar(50) character set utf8;

3:比較好的,也是建議的,倒是最後壓軸的磨磨唧唧登場的方法,以下... ...

修改MySQL的配置文件my.ini。

在Window系統下,MySQL的配置文件是在MySQL安裝目錄下的my.ini文件,可是可能安裝完成後,在目錄下木有my.ini文件,而是以下這些文件:

image

這時候能夠去網上下載一個my.ini文件而後放到目錄下便可,或者在C:\ProgramData\MySQL\MySQL Installer目錄下有:

image

選擇其中一個版本的my-template-x.x.ini更名成my.ini,放到安裝目錄下也能夠。至於細節再在my.ini中具體配置便可。

my.ini配置文件修改細節:

I:在[mysqld]標籤下加

default-character-set=utf8

character_set_server=utf8

lower_case_table_names=1      //表名不區分大小寫(此與編碼無關)

II:在[mysql]標籤下加

default-character-set=utf8

III:在[mysql.server]標籤下加

default-character-set=utf8

IV:在[mysql_safe]標籤下加

default-character-set=utf8

V:在[client]標籤下加

default-character-set=utf8

 

4:在Dos窗口中執行

net stop mysqlservice    //關閉mysql服務

net stop mysqlservice    //啓動mysql服務

而後在查看一下mysql默認的編碼格式,是否改變成功!(最後絕招你能夠重裝mysql,而後在安裝的那個步驟進行設置)

 

附註:

1:鏈接mysql數據庫時的字符串,設計編碼類型的時候以下所示

jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf-8

2:mysql支持哪些編碼格式,查看%MySQL%\share\charsets\Index.xml便可

3:mysql的配置文件加載順序

c:/windows/my.cnf-->c:/windows/my.ini-->c:/my.cnf-->c:/my.ini-->$installdir/my.ini(%MySQL_HOME%/my.ini)-->defaults-extra-file=path

 

(2)若是爲了方便,須要在 MyCat 主機上對 MyCat 進行操做(把 MyCat 當是本地 MySQL 來操做),能夠在 MyCat 節點主機上安裝 MySQL 客戶端:
[mycat@mycat-01 bin]$ su root
[root@mycat-01 bin]# yum install mysql -y
使用安裝好的 mysql 客戶端登陸 MyCat
[mycat@mycat-01 bin]$ mysql -umycat02 -p123456 -h192.168.199.112 -P8066

(3)解決客戶端查詢亂碼:

若是使用mycat主機上安裝了mysql客戶端進行查詢出現亂碼,則須要設置客戶端的編碼,

在/etc/my.cnf(windows系統 爲$MYSQL_HOME/my.ini)中的[client],設置客戶端的默認編碼爲utf8。

 

[root@mycat-01 mycat]# vi /etc/my.cnf
增長:

[client] default-character-set=utf8

保存後再查詢,亂碼問題解決,如

 

 

(4) 使用第三方 MySQL 管理客戶端鏈接 MyCat 測試(navicat 支持,MySQL-Front 兼容性不太好),以 navicat 爲例:

 

八、讀寫分離測試

(1) 監聽 MyCat 日誌
[mycat@mycat-01 ~]$ cd /usr/local/mycat/logs/
[mycat@mycat-01 logs]$ tail -f mycat.log

滾動監聽主從節點,從節點監聽兩次(是由於從節點配置了主從切換和讀寫分離,自己是寫節點,主機宕機又能做爲主節點)

 (2) 讀測試
[mycat@mycat-01 logs] mysql -umycat02 -p123456 -h192.168.199.112 -P8066
mysql> show databases;

mysql> use wr-on-schema01;

mysql> show tables;

mysql> select * from login_user;

 

日誌變化:

屢次執行select * from login_user 語句,MyCat 打印出來的日誌信息顯示讀操做請求都是路由到 Slave 節點(192.168.199.111)。

 (2) 寫測試

mysql> insert into login_user (userName, pwd) values('曹操', '123456');

 

執行上面的新增插入語句後,此時對應的 MyCat 日誌信息以下:

 屢次執行以上插入語句,發現新增數據都是從 Master 節點(192.168.199.110)插進入的,而且 Slave 節點(192.168.199.111)經過 Binlog 同步了 Master 節點中的數據。

 

 綜上,基於 MyCat 的讀寫分離集羣配置成功。

 

 ==================================================================

 常見問題:10038錯誤碼

10038錯誤碼,通常是服務端開啓了防火牆
若是重啓服務器,可能把臨時的防火牆重置爲開啓狀態
解決辦法:
一、配置防火牆不攔截:修改/etc/sysconfig/iptables 文件,添加如下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
二、永久關閉防火牆:chkconfig iptables off

相關文章
相關標籤/搜索