六、mysql集群-mycat

时间:2018-06-19 13:31:58   收藏:0   阅读:249
Mycat关键特性

关键特性


安装mycat进行负载 读写分离

hosts配置
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 mycat
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.55     yum
172.16.1.200    master
172.16.1.105    slave
172.16.1.130    mycat



安装jdk1.7

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
mkdir /java
cd /java
tar xf jdk-7u80-linux-x64.tar.gz
chown -R root:root /java/jdk1.7.0_80
cat << EOF >>/etc/profile
export PATH=/java/jdk1.7.0_80/bin:$PATH
export CLASSPATH=.:/java/jdk1.7.0_80/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile
cd /application/tools/
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
mv mycat/ /application/


设置mycat的环境变量

echo "export MYCAT_HOME=/application/mycat" >> /etc/profile
echo "export PATH=$PATH:/application/mycat/bin" >> /etc/profile
source /etc/profile



配置文件如下所示:

cd /application/mycat/conf/
vi schema.xml  
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!--定义MyCAT实例的逻辑库和逻辑表-->
        <schema name="appdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="master,master2,slave">  </schema>
        <!--定义MyCAT逻辑表中提到的所有dataNode所在的真实Host,以及dataNode所属的真实数据库-->
        <dataNode name="dn_test" dataHost="dn85" database="appdb" />
        <!--定义dataNode提到的dataHost的连接限制数、负载均衡取向,以及真实的读写地址(writeHost和readHost)-->
        <!--balance属性 负载均衡类型,目前的取值有3种-->
        <!--balance="0", 所有读操作都发送到当前可用的writeHost上-->
        <!--balance="1",所有读操作都随机的发送到readHost-->
        <!--balance="2",所有读操作都随机的在writeHost、readhost上分发-->
        
        <!--writeType属性 负载均衡类型,目前的取值有3种-->
        <!--writeType="0", 所有写操作都发送到可用的writeHost上-->
        <!--writeType="1",所有写操作都随机的发送到readHost-->
        <!--writeType="2",所有写操作都随机的在writeHost、readhost分上发-->
        
        <!--switchType="-1,1,2,3" 是否启用主从切换-->
        <!--switchType='-1' 表示不自动切换-->
        <!--switchType='1' 默认值,表示自动切换-->
        <!--switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status-->
        <!--switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'-->
        <dataHost name="dn85" maxCon="1000" minCon="3" balance="-1"
         writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
<!--真实的读写地址-->
                <heartbeat>select user()</heartbeat>
                <writeHost host="100_M"  url="172.16.1.200:3306" user="appuser" password="mtls0352">
                        <readHost host="87_S1" url="172.16.1.87:3306" user="appuser" password="mtls0352"/>
                </writeHost>
        </dataHost>
</mycat:schema>
vi server.xml
<user name="appuser">
                <property name="password">123456</property>
                <property name="schemas">appdb</property>
        </user>


在数据库中创建用户、mycat会有这个用户连接数据库

create user appuser@'%' identified by 'mtls0352';
create database appdb char set utf8;
grant all on appdb.* to appuser@'%';


开启mycat

mycat start


查看端口

netstat -tnlp
TCP *:9066 (LISTEN) #虚拟schema管理端口 
TCP *:8066 (LISTEN) #虚拟schema登陆端口


登录mycat管理端:

mysql -uappuser -p123455 -h172.16.1.130 -P9066
mysql> show @@heartbeat;
mysql> show @@heartbeat;
+--------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
| NAME   | TYPE  | HOST         | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME    | STOP  |
+--------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
| 200_M  | mysql | 172.16.1.200 | 3306 |       1 |     0 | idle   |       0 | 23,23,23     | 2018-05-29 22:42:18 | false |
| 105_S1 | mysql | 172.16.1.105 | 3306 |       1 |     0 | idle   |       0 | 75,75,75     | 2018-05-29 22:42:18 | false |
+--------+-------+--------------+------+---------+-------+--------+---------+--------------+---------------------+-------+
2 rows in set (0.00 sec)



mycat读写分离验证


更改日志的输出模式
vi /application/mycat/conf/log4j.xml 
修改<asyncRoot level="info" includeLocation="true">
为 <asyncRoot level="debug" includeLocation="true">


创建表

mysql -uappuser -p123456 -h172.16.1.130 -P8066
create table test (id bigint not null primary key,user_id varchar(100),date DATE, fee decimal);
insert into test(id,user_id,date,fee)  values(1,@@hostname,20161201,100);
insert into test(id,user_id,date,fee)  values(5000001,@@hostname,20161202,100);
select * from test;


查询观察日志的变化

select * from test
tail -f /application/mycat/logs/wrapper.log 
[root@mycat logs]# cat  wrapper.log  | grep "select read source 105_S1"
INFO   | jvm 1    | 2018/05/29 22:46:13 | 2018-05-29 22:46:13,624 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:34 | 2018-05-29 22:46:34,026 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:34 | 2018-05-29 22:46:34,550 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:34 | 2018-05-29 22:46:34,914 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:35 | 2018-05-29 22:46:35,225 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:35 | 2018-05-29 22:46:35,546 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:35 | 2018-05-29 22:46:35,877 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:36 | 2018-05-29 22:46:36,237 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:36 | 2018-05-29 22:46:36,559 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:36 | 2018-05-29 22:46:36,892 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:37 | 2018-05-29 22:46:37,199 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:37 | 2018-05-29 22:46:37,523 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:37 | 2018-05-29 22:46:37,840 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:38 | 2018-05-29 22:46:38,153 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:38 | 2018-05-29 22:46:38,477 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:38 | 2018-05-29 22:46:38,831 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
INFO   | jvm 1    | 2018/05/29 22:46:39 | 2018-05-29 22:46:39,193 [DEBUG][$_NIOREACTOR-0-RW] select read source 105_S1 for dataHost:dn85  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:456) 
[root@mycat logs]# cat  wrapper.log  | grep "select read source 105_S1" | wc -l
17
进行了17查询结果证明读写分离配置成功


原文:http://blog.51cto.com/13712476/2130523

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!