mycat : 192.168.126.128 root root mysql1: 192.168.126.129:3306 root lizhenghua mysql2: 192.168.126.131:3306 root lizhenghua database: zwrdb table1 : role table2 : subject_t table3 : suggest table4 : cas_user
mycat-server-1.6.6.1 mysql-5.7.22
mycat下載連接java
1.包的部署node
tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local vim /etc/profile #mycat export MYCAT_HOME=/usr/local/mycat export PATH=$PATH:$MYCAT_HOME/bin source /etc/profile
2.JDK的部署mysql
#************************************************************************* # > File Name: jdk.sh # > Author: chenglee # > Main : chengkenlee@sina.com # > Blog : http://www.cnblogs.com/chenglee/ # > Created Time : 2019年03月07日 星期四 18時08分59秒 #************************************************************************* #!/bin/bash jdk_path="/usr/local" jdk_targ=`basename *jdk-*` function Cheng_flash(){ i=0; str="" arr=("|" "/" "-" "\\") while [ $i -le 100 ] do let index=i%4 let indexcolor=i%8 let color=30+indexcolor printf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}" sleep ${sleeptime2} let i++ str+='=' done printf "\n" } function Time_test(){ echo "please wait a moment ... " starttime=`date +'%Y-%m-%d %H:%M:%S'` tar tvvf ${jdk_targ} > /dev/null endtime=`date +'%Y-%m-%d %H:%M:%S'` start_seconds=$(date --date="$starttime" +%s); end_seconds=$(date --date="$endtime" +%s); sleeptime=$((end_seconds-start_seconds)) sleeptime2=`awk 'BEGIN{printf "%0.2f",'${sleeptime}'/100}'` } function tar_gz(){ Time_test tar xvvf ${jdk_targ} -C ${jdk_path} > /dev/null | Cheng_flash } function profile(){ jdk_Path=`find ${jdk_path} -maxdepth 1 | grep jdk` ( cat <<EOF #java jdk export JAVA_HOME=${jdk_Path} export JRE_HOME=\${JAVA_HOME}/jre export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib export PATH=\${JAVA_HOME}/bin:\$PATH EOF ) >> /etc/profile } function Source(){ source /etc/profile } function main(){ tar_gz profile Source } main
注: 把此腳本扔在與JDK二進制包同一目錄, 運行此腳本便可,這是我經常使用的shelllinux
注:忽略mysql的部署步驟, 直接跳到啓動mysql.sql
[root@localhost mysql]# ifconfig | grep inet | grep -v inet6 | head -n 1 | awk -F ' ' '{print$2}' ; ps aux | grep mysql 192.168.126.129 root 7139 0.0 0.1 113520 1752 pts/0 S 09:50 0:00 /bin/sh ./bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql mysql 7307 0.1 14.6 1141352 194172 pts/0 Sl 09:50 0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/logs/mysql.logs --pid-file=/usr/local/mysql/mysql.pid --socket=/data/mysql/mysql.sock [root@localhostmysql]# ifconfig | grep inet | grep -v inet6 | head -n 1 | awk -F ' ' '{print$2}' ; ps aux | grep mysql 192.168.126.131 root 7367 0.0 0.1 113312 1628 pts/0 S 09:50 0:00 /bin/sh ./bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql mysql 7531 0.0 13.5 1141332 192852 pts/0 Sl 09:50 0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/logs/mysql.logs --pid-file=/usr/local/mysql/mysql.pid --socket=/data/mysql/mysql.sock
schema.xmlshell
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 本配置文件應對雙機單庫多表**水平分片**--> <!-- 數據庫配置 --> <schema name="zwrdb" checkSQLschema="false" sqlMaxLimit="100"> <table name="role" dataNode="dn1" /> <table name="subject_t" dataNode="dn1" /> <table name="suggest" dataNode="dn1" /> <table name="cas_user" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2" rule="mod-long" /> </schema> <!-- 分片配置 --> <dataNode name="dn1" dataHost="test1" database="zwrdb" /> <dataNode name="dn2" dataHost="test2" database="zwrdb" /> <!-- 分表分庫 start--> <!-- 物理數據庫配置 test1模塊--> <dataHost name="test1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user();</heartbeat> <writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="lizhenghua"> </writeHost> </dataHost> <!-- 物理數據庫配置 test2模塊--> <dataHost name="test2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user();</heartbeat> <writeHost host="hostS1" url="192.168.126.131:3306" user="root" password="lizhenghua"> </writeHost> </dataHost> <!-- 分表分庫 end--> </mycat:schema>
注:數據庫
數據庫模塊配置說明: 庫設置爲zwrdb, 在這個庫裏面的表就是前面三個表都寫入了dn1這塊片節點, 而cas_user分到了dn1和dn2兩個片節點, 分片規則是mod-longswift
分片配置說明:就是dn1和dn2, 它們分別指定的各自的dataHost與共同的databasevim
物理數據庫配置說明:根據兩個不通的dataHost指定兩臺mysql的登陸方式後端
rule.xml
注:修改有關mod-long分片規則屬性, 它默認是3塊分片, 而我這裏只設置了2個dataNode
<function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- how many data nodes --> <property name="count">2</property> </function>
server.xml
注:修改最後的參數,就是配置mycat的鏈接帳號密碼與庫
<user name="root" defaultAccount="true"> <property name="password">root</property> <property name="schemas">zwrdb</property> <property name="readOnly">false</property> <!-- 表級 DML 權限設置 --> <!-- <privileges check="false"> <schema name="TESTDB" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema> </privileges> --> </user>
注:這裏我把mycat的鏈接帳號和密碼都是root
mycat start
wrapper.log
STATUS | wrapper | 2019/04/04 09:56:49 | --> Wrapper Started as Daemon STATUS | wrapper | 2019/04/04 09:56:49 | Launching a JVM... INFO | jvm 1 | 2019/04/04 09:56:50 | Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0 INFO | jvm 1 | 2019/04/04 09:56:52 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org INFO | jvm 1 | 2019/04/04 09:56:52 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. INFO | jvm 1 | 2019/04/04 09:56:52 | INFO | jvm 1 | 2019/04/04 09:56:55 | MyCAT Server startup successfully. see logs in logs/mycat.log
啓動成功,分片分表日誌寫進mycat.log
[root@localhost logs]# netstat -tlnp | grep java tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 7466/java tcp6 0 0 :::9066 :::* LISTEN 7466/java tcp6 0 0 :::37972 :::* LISTEN 7466/java tcp6 0 0 :::1984 :::* LISTEN 7466/java tcp6 0 0 :::8066 :::* LISTEN 7466/java tcp6 0 0 :::46694 :::* LISTEN 7466/java
注:8066爲mycat數據鏈接端口, 9066爲mycat管理端口
mysql -u root -proot -h 192.168.126.128 -P 8066
展現
mysql> show databases; +----------+ | DATABASE | +----------+ | zwrdb | +----------+ 1 row in set (0.00 sec) mysql> use zwrdb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-----------------+ | Tables in zwrdb | +-----------------+ | role | | subject_t | | suggest | | cas_user | +-----------------+ 4 rows in set (0.01 sec) mysql>
mysql -u root -proot -h 192.168.126.128 -P 9066
1.節點查詢
mysql> show @@dataNode where schema=zwrdb; +------+-------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+ | NAME | DATHOST | INDEX | TYPE | ACTIVE | IDLE | SIZE | EXECUTE | TOTAL_TIME | MAX_TIME | MAX_SQL | RECOVERY_TIME | +------+-------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+ | dn1 | test1/zwrdb| 0 | mysql | 0 | 10 | 1000 | 380 | 0 | 0 | 0 | -1 | | dn2 | test2/zwrdb| 0 | mysql | 0 | 10 | 1000 | 380 | 0 | 0 | 0 | -1 | +------+-------------+-------+-------+--------+------+------+---------+------------+----------+---------+---------------+ 2 rows in set (0.10 sec)
注:DATAHOST:表示對應的datahost屬性的值,即數據主機,ACTIVE:表示活躍的鏈接數量,IDLE:表示空閒的鏈接數量。SIZE:表示對應的總鏈接數量
2.心跳
mysql> show @@heartbeat; +--------+-------+-----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+ | NAME | TYPE | HOST | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME | STOP | +--------+-------+-----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+ | hostM1 | mysql | 192.168.126.129 | 3306 | 1 | 0 | idle | 30000 | 33,5,5 | 2019-04-04 11:00:35 | false | | hostS1 | mysql | 192.168.126.131 | 3306 | 1 | 0 | idle | 30000 | 31,4,4 | 2019-04-04 11:00:35 | false | +--------+-------+-----------------+------+---------+-------+--------+---------+--------------+---------------------+-------+ 2 rows in set (0.01 sec)
注:RS_CODE狀態以下:
OK_STATUS=1表明正常狀態。
ERROR_STATUS =-1 表明鏈接錯誤
TIMEOUT_STATUS=-2表明鏈接超時
INIT_STATUS=0表明初始化狀態
若節點發生故障,則會連續進行默認的5個週期檢測,心跳鏈接失敗後就會變成-1,節點故障確認,而後可能發生切換。
3.版本
mysql> show @@version; +---------------------------------------------+ | VERSION | +---------------------------------------------+ | 5.6.29-mycat-1.6.6.1-release-20181031195535 | +---------------------------------------------+ 1 row in set (0.01 sec)
4.當前鏈接狀態
mysql> show @@connection; +------------+------+-----------+------+------------+------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+ | PROCESSOR | ID | HOST | PORT | LOCAL_PORT | USER | SCHEMA | CHARSET | NET_IN | NET_OUT | ALIVE_TIME(S) | RECV_BUFFER | SEND_QUEUE | txlevel | autocommit | +------------+------+-----------+------+------------+------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+ | Processor0 | 1 | 127.0.0.1 | 9066 | 46274 | root | NULL | utf8:33 | 321 | 2635 | 422 | 4096 | 0 | | | +------------+------+-----------+------+------------+------+--------+---------+--------+---------+---------------+-------------+------------+---------+------------+ 1 row in set (0.00 sec)
5.後端鏈接狀態
mysql> show @@backend; +------------+------+---------+-----------------+------+--------+--------+---------+------+--------+----------+------------+--------+----------+---------+------------+ | processor | id | mysqlId | host | port | l_port | net_in | net_out | life | closed | borrowed | SEND_QUEUE | schema | charset | txlevel | autocommit | +------------+------+---------+-----------------+------+--------+--------+---------+------+--------+----------+------------+--------+----------+---------+------------+ | Processor0 | 1 | 2 | 192.168.126.129 | 3306 | 58962 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 2 | 4 | 192.168.126.129 | 3306 | 58968 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 3 | 8 | 192.168.126.129 | 3306 | 58970 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 4 | 5 | 192.168.126.129 | 3306 | 58964 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 5 | 3 | 192.168.126.129 | 3306 | 58966 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 6 | 9 | 192.168.126.129 | 3306 | 58972 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 7 | 6 | 192.168.126.129 | 3306 | 58976 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 8 | 10 | 192.168.126.129 | 3306 | 58980 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 9 | 7 | 192.168.126.129 | 3306 | 58978 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 10 | 11 | 192.168.126.129 | 3306 | 58974 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 11 | 2 | 192.168.126.131 | 3306 | 52040 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 12 | 5 | 192.168.126.131 | 3306 | 52046 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 13 | 9 | 192.168.126.131 | 3306 | 52054 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 14 | 8 | 192.168.126.131 | 3306 | 52052 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 15 | 4 | 192.168.126.131 | 3306 | 52044 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 16 | 10 | 192.168.126.131 | 3306 | 52056 | 3369 | 847 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 17 | 11 | 192.168.126.131 | 3306 | 52048 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 18 | 3 | 192.168.126.131 | 3306 | 52042 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 19 | 6 | 192.168.126.131 | 3306 | 52038 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | | Processor0 | 20 | 7 | 192.168.126.131 | 3306 | 52050 | 3449 | 866 | 4158 | false | false | 0 | zwrdb | latin1:5 | 3 | true | +------------+------+---------+-----------------+------+--------+--------+---------+------+--------+----------+------------+--------+----------+---------+------------+ 20 rows in set (0.00 sec)
6.緩存信息
mysql> show @@cache; +-------------------------------------+-------+------+--------+------+------+-------------+----------+ | CACHE | MAX | CUR | ACCESS | HIT | PUT | LAST_ACCESS | LAST_PUT | +-------------------------------------+-------+------+--------+------+------+-------------+----------+ | ER_SQL2PARENTID | 1000 | 0 | 0 | 0 | 0 | 0 | 0 | | SQLRouteCache | 10000 | 0 | 0 | 0 | 0 | 0 | 0 | | TableID2DataNodeCache.TESTDB_ORDERS | 50000 | 0 | 0 | 0 | 0 | 0 | 0 | +-------------------------------------+-------+------+--------+------+------+-------------+----------+ 3 rows in set (0.02 sec)
注:SQLRouteCache: SQL語句路由緩存,TableID2DateNodeCache:緩存表主鍵與分片對應關係,ER_SQL2PARENTID:緩存ER分片中子表與父表對應關係。
7.數據源狀態
mysql> show @@datasource; +----------+--------+-------+-----------------+------+------+--------+------+------+---------+-----------+------------+ | DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD | +----------+--------+-------+-----------------+------+------+--------+------+------+---------+-----------+------------+ | dn1 | hostM1 | mysql | 192.168.126.129 | 3306 | W | 0 | 10 | 1000 | 443 | 0 | 0 | | dn2 | hostS1 | mysql | 192.168.126.131 | 3306 | W | 0 | 10 | 1000 | 443 | 0 | 0 | +----------+--------+-------+-----------------+------+------+--------+------+------+---------+-----------+------------+ 2 rows in set (0.00 sec)