MyCat安装与测试教程 超详细!

MyCat基础知识

一、什么是MYCAT?

    1. 一个彻底开源的,面向企业应用开发的大数据库集群
2. 支持事务、ACID、可以替代MySQL的加强版数据库
3. 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
4. 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
5. 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
6. 一个新颖的数据库中间件产品 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。 Mycat发展到目前版本,已经不在是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NOSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在Mycat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅度降低开发难度,提升开发速度,在测试阶段,可以将一表定义为任何一种Mycat支持的存储方式,比如MySQL的MyASM表、内存表、或者MongoDB、LeveIDB以及号称是世界上最快的内存数据库MemSQL上。 试想一下,用户表存放在MemSQL上,大量读频率远超过写频率的数据如订单的快照数据存放于InnoDB中,一些日志数据存放于MongoDB中,而且还能把Oracle的表跟MySQL的表做关联查询,你是否有一种不能呼吸的感觉?而未来,还能通过Mycat自动将一些计算分析后的数据灌入到Hadoop中,并能用Mycat+Storm/Spark Stream引擎做大规模数据分析。 二、关键特性 支持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,命令行监控。 支持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) 还有一些其他特性 这里就不全部举例。 三、MyCat优势 MyCat基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。 业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技s术团队保证了MYCAT的产品质量。 MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。 看到这里 想必你已经有对Mycat产生了浓厚的兴趣 上面讲了了一堆概念的东西 是不是已经手痒痒了? 但是在学习MyCat之前 你一定要精通mysql 如果你对自己没信心 博主为大家准备了 MySql高级视频教程 链接:https://pan.baidu.com/s/1pNkhKld 密码:jo79 干货准备!! MyCat安装与测试!! 点击查看源网页 一、环境准备 本机环境是三台centos6.5 IP 主机名 数据库名 安装软件 192.168.17.4 master db1 mycat,mysql 192.168.17.5 slave1 db2 mysql 192.168.17.6 slave2 db3 mysql 二、安装mysql 1、安装mysql软件 linux下安装mysql有两种方式:一种是通过下载源码编译安装,一种是通过rpm包安装,如果配置了yum直接用yum安装会更快 编译安装步骤: ./congfigrue –prefix=安装路径 make make install 因为编译安装,后面为了使用方便要将服务注册到init服务中比较麻烦,这里介绍最简单的yum安装 2、安装mysql客户端 yum -y install mysql 3、安装mysql服务器端 yum -y install mysql-server
yum -y install mysql-devel 4、添加mysql用户及权限并配置数据库 三台服务器都安装mysql以后 ,三台机器同样配置数据库 具体步骤如下: 4.1 配置编码格式 vi /etc/my.cnf 添加 default-character-set=utf8 4.2 添加开机启动项 chkconfig --add mysqld
chkconfig mysqld on 4.3 启动mysql service mysqld start 4.4 配置root用户并设置密码 mysqladmin -u root password 123456 4.5 创建新用户 首先用root用户登录 mysql -uroot –p 然后输入密码 执行use mysql,进入用户管理库,执行 select user,host from user; 查询当前用户发现有一些user是空的用户,直接删掉, delete from user where user='' 否则后面会出问题 这里能看到只能本机访问root,可以通过执行语句 update user set host = '%' where user = 'root' andhost='localhost'; 来释放root的访问权限,让所有ip都能通过root登录 执行语句 insert into mysql.user(Host,User,Password) values
("%","mycat",password("123456")); 添加新用户 然后是赋权限,我这里是赋了所有权限,可以只赋某个库,或者部分权限,命令自己网上查,执行赋权限语句 grant all privileges on *.* to 'mycat'@'%' identified by '123456'; 后一定记得执行 flush privileges; 来刷新权限 登录新建的用户并创建响应的数据库, mysql –umycat–p create database db1/db2/db3 根据不同机器数据库名不同 4.6 上述操作在三台机器上一样操作 三、安装mycat 1、安装mycat软件并创建用户 下载解压 tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz 配置环境变量 export MYCAT_HOME=/opt/sxt/soft/mycat
PATH=$PATH:$MYCAT_HOME/bin 通过配置 sh /opt/sxt/soft/mycat/bin/mycat start 执行开机启动也可以自己写脚本加入init服务 创建一个新的group groupadd mycat 创建一个新的用户,并加入group useradd -g mycat mycat 给新用户设置密码, passwd mycat 2、配置mycat配置文件 在三台mysql的配置文件 vi /etc/my.cnf 中加入 lower_case_table_names = 1 来忽略大小写 编辑schema文件 先备份一下cp $MYCAT_HOME/conf/schema.xml
$MYCAT_HOME/conf/schema.xml.tmp
vim $MYCAT_HOME/conf/schema.xml 将里面mycat:schema节点的东西全部干掉,如下配置 <table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3"
rule="sharding-by-intfile" />
</schema>
<!--数据节点dn1,对应的主机c1,对应是数据库db1 -->
<dataNode name="dn1" dataHost="master" database="db1" />
<dataNode name="dn2" dataHost="slave1" database="db2" />
<dataNode name="dn3" dataHost="slave2" database="db3" />
<!-- 主机C1-->
<dataHost name="master" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!--mysql数据库的连接串 -->
<writeHost host="hostM1" url="master:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主机C2-->
<dataHost name="slave1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="slave1:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主机C3-->
<dataHost name="slave2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!--mysql数据库的连接串 -->
<writeHost host="hostM3" url="slave2:3306" user="mycat"
password="123456">
</writeHost>
</dataHost> 在conf目录下配置server.xml ,将目录下没有的用户全部删掉
或者注释掉,添加可用的用户,这里添加了 <user name="mycat">
<property name="password">123456</property>
<property name="schemas">JamesMycatSchema</property>
</user> 修改conf下的partition-hash-int.txt文件
在下面添加10020=2,原本默认的是分两个就是10000和10010,
现在我们三个就要三个分类id了,添加一个即可 四、测试mycat 1、启动mycat 执行 mycat start tail -100 $MYCAT_HOME/logs/wrapper.log 查看结果如下就表明启动成功了 2、测试mysql表横向分割 在虚拟机外的windows安装Navicatfor MySQL,分别连接到三个mysql数据库,执行建表语句 create table employee (
id int not null primarykey,
name varchar(100),
sharding_id int not null
); 用Navicatfor MySQL连接mycat,mycat默认端口是8066,配置如图: 因为刚才执行了建表语句,这时候连接上了mycat里面也有一个空的employee表 执行如下语句 insert into employee(id,name,sharding_id) values(1, 'I am db1',10000);
insert into employee(id,name,sharding_id) values(2, 'I am db2',10010);
insert into employee(id,name,sharding_id) values(3, 'I am db3',10020);
insert into employee(id,name,sharding_id) values(4, 'I am db1',10000);
insert into employee(id,name,sharding_id) values(5, 'I am db2',10010);
insert into employee(id,name,sharding_id) values(6, 'I am db3',10020); 刷新一下navicat查看mycat连接的库 db1 db2 db3

MyCat安装与测试教程 超详细!的更多相关文章

  1. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

  2. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的 ...

  3. exe电子书制作教程(超详细)【申明:来源于网络】

    exe电子书制作教程(超详细)[申明:来源于网络] 地址:http://wenku.baidu.com/view/0b046907eff9aef8941e0631.html

  4. Mac环境下RabbitMq安装与测试教程

    RabbitMq安装与测试教程 Installing on Mac I. 安装 123456789 brew install rabbitmq ## 进入安装目录cd /usr/local/Cella ...

  5. mycat安装和测试

    mycat安装和测试 一.  环境准备 本机环境是三台centos6.5 IP 主机名 数据库名 安装软件 192.168.17.4 master db1 mycat,mysql 192.168.17 ...

  6. RabbitMQ安装说明文档(超详细版本)

    RabbitMQ安装说明文档(超详细版本) 1. 安装依赖环境 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC ...

  7. python安装图文教程---超详细。。。不过是转的,但有改动

    如果你已安装好python,想安装第三方模块,方法详见如下地址: python安装第三方模块教程----marsggbo 1.想要安装Python,首先当然是去Python的官方网站(www.pyth ...

  8. Tomcat服务器下载、安装、配置环境变量教程(超详细)

    请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下上 ...

  9. Mycat安装及测试分片总结

    1.安装jdk1.72.连接实际mysql数据库 用命令行工具或图形化客户端,连接mysql,创建DEMO所用三个分片数据库:(默认schema.xml中的配置需要三个库) CREATE databa ...

随机推荐

  1. MySql+Memcached架构的问题

    Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. Memcached服务器使用基于Slab的内存管 ...

  2. JavaScript中烧脑的&&和||

    在js中经常能看到以下的写法: var obj1 = a || b || c; var obj2 = a && b && c; 刚看到时,很容易认为返回的两个变量都是 ...

  3. HBase学习之路 (二)HBase集群安装

    前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是java编 ...

  4. kong安装

    1 哪些企业在用KONG: Mashapoe Marketplace Buzzlogix Gengo IBM Intel OpenDNS 饿了么 Kong可与两种不同的组件协同工作: Nginx:Ko ...

  5. Plugin with id 'com.novoda.bintray-release' not found的解决方法

    我们一般在在github上下载下来的代码,有时候会提示Plugin with id ‘com.novoda.bintray-release’ not found的错误,这个怎么解决呢,其实很简单,只要 ...

  6. Kafka设计解析(十一)Kafka无消息丢失配置

    转载自 huxihx,原文链接 Kafka无消息丢失配置 目录 一.Producer端二.Consumer端 Kafka到底会不会丢数据(data loss)? 通常不会,但有些情况下的确有可能会发生 ...

  7. 数据库 —— mySQL相关

    目录 使用笔记 问题解决 资源链接 1.使用笔记 1.命令行客户端显示无法调整表格显示宽度,可以考虑在查询语句尾后添加 \G; 2.插入语句字符串转时间:link 2.问题解决 1.不能显示插入中文字 ...

  8. GoodUserInterface 模仿页面功能

    模仿一些好的应用中的好的界面或功能.平时使用的APP有很多,其中一些都是常见的功能的拼凑,在业务层面比较复杂,而具体的页面实现都很类似.在这种情况下,我们还会发现有一些APP的页面效果的实现方式比较独 ...

  9. iOS字体相关

    1.使用自定义字体 (1)将字体文件导入项目 (2)在info.plist文件中添加 Fonts provided by application (3)获取字体在项目中的名称 for fontFami ...

  10. 第一次作业:基于Linux 4.5的进程模型与调度器分析

    1.操作系统是怎么组织进程的? 1.1什么是线程,什么是进程: 刚接触时可能经常会将这两个东西搞混.简单一点的说,进程是一个大工程,线程则是这个大工程中每个小地方需要做的东西(在linux下看作&qu ...