标签:AC ike 切换 normal source values microsoft oct sys
Mycat关键特性支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio实现,有效管理线程,解决高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)。
支持XA分布式事务(1.6.5)。
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密码加密
支持服务降级
支持IP白名单
支持SQL黑名单、sql注入***拦截
支持prepare预编译指令(1.6)
支持非堆内存(Direct Memory)聚合计算(1.6)
支持PostgreSQL的native协议(1.6)
支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
支持库内分表(1.6)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
安装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查询结果证明读写分离配置成功
标签:AC ike 切换 normal source values microsoft oct sys
原文地址:http://blog.51cto.com/13712476/2130523