名稱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
MySQL 版本:mysql-5.7.9
下載地址: https://downloads.mysql.com/archives/get/file/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
JDK版本:jdk1.7
下載地址:http://dl.mycat.io/jdk-7u79-linux-x64.tar.gz
備用jdk1.8
下載地址:http://dl.mycat.io/jdk-8u20-linux-x64.tar.gz
mycat版本:1.6.5
下載地址:http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
https://github.com/MyCATApache/Mycat-Server/archive/1.6.5-RELEASE.zip
HAProxy版本:haproxy-1.8.15.tar.gz
下載地址:https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.8.15.tar.gz
其餘版本列表頁:https://src.fedoraproject.org/repo/pkgs/haproxy/
或者
yum install haproxy -y
keepalived版本:
下載地址:http://www.keepalived.org/software/keepalived-2.0.11.tar.gz
其餘版本下載列表頁:http://www.keepalived.org/download.html
或者
yum install keepalived -y
MyCat 介紹 ( MyCat 官網:http://www.mycat.io/)
MyCat 的讀寫分離是基於後端 MySQL 集羣的主從同步來實現的,而 MyCat 只是 提供語句的分發功能。
MyCat1.4 開始支持 MySQL 主從複製狀態綁定的讀寫分離機制,讓讀更加安全可靠。
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
簡單的讀寫分離(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"?> |
<?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 主要用於設置系統變量、管理用戶、設置用戶權限等。
[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"?> |
<?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>
爲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>
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
以便經過日誌確認基於 MyCat 的 MySQL 數據庫集羣讀寫分離的數據操做狀態(能夠在正式上生產前改爲 info 級別)
[mycat@mycat-01 conf]$ vi /usr/local/mycat/conf/log4j.xml
[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]$
(1)若是本地 Windows 安裝有 MySQL,可使用已有的 mysql 客戶端遠程操做 MyCat
mysql -umycat02 -p123456 -h 192.168.199.112 -P8066
1:如何查看MySQL相關的編碼格式默認值
在cmd中,輸入指令"mysql –u root –p」以root身份鏈接mysql數據庫
而後有兩種方式查看編碼格式:
1)show variables like ‘character%’;
2)show variables like ‘collation%’;
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文件,而是以下這些文件:
這時候能夠去網上下載一個my.ini文件而後放到目錄下便可,或者在C:\ProgramData\MySQL\MySQL Installer目錄下有:
選擇其中一個版本的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)。
mysql> insert into login_user (userName, pwd) values('曹操', '123456');
執行上面的新增插入語句後,此時對應的 MyCat 日誌信息以下:
屢次執行以上插入語句,發現新增數據都是從 Master 節點(192.168.199.110)插進入的,而且 Slave 節點(192.168.199.111)經過 Binlog 同步了 Master 節點中的數據。
綜上,基於 MyCat 的讀寫分離集羣配置成功。
==================================================================
10038錯誤碼,通常是服務端開啓了防火牆
若是重啓服務器,可能把臨時的防火牆重置爲開啓狀態
解決辦法:
一、配置防火牆不攔截:修改/etc/sysconfig/iptables 文件,添加如下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
二、永久關閉防火牆:chkconfig iptables off