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

Posted 互扯程序

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyCat安装与测试教程 超详细!相关的知识,希望对你有一定的参考价值。

优秀文章,第一时间送达!


KS

Knowledge Sharing

知识分享

    现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。




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产生了浓厚的兴趣 上面讲了了一堆概念的东西 是不是已经手痒痒了? 但是在学习MyCat之前 你一定要精通mysql 如果你对自己没信心 博主为大家准备了 MySql高级视频教程 


链接:https://pan.baidu.com/s/1pNkhKld 密码:jo79


想要获取更多学习视频  传送门:


干货准备!! MyCat安装与测试!!


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安装会更快


编译安装步骤:


  1.  ./congfigrue –prefix=安装路径

  2.  make

  3. make install


因为编译安装,后面为了使用方便要将服务注册到init服务中比较麻烦,这里介绍最简单的yum安装


2、安装mysql客户端

yum -y install mysql


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


3、安装mysql服务器端


yum -y install mysql-server
yum -y install mysql-devel


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


4、添加mysql用户及权限并配置数据库

 

三台服务器都安装mysql以后 ,三台机器同样配置数据库

具体步骤如下:


4.1 配置编码格式


vi  /etc/my.cnf


添加


default-character-set=utf8



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


4.2 添加开机启动项


chkconfig --add mysqld
chkconfig mysqld on



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


4.3 启动mysql


service mysqld start


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


4.4 配置root用户并设置密码


mysqladmin -u root password 123456


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


4.5 创建新用户


首先用root用户登录


mysql -uroot –p


然后输入密码


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


执行use mysql,进入用户管理库,执行


select user,host from user;


查询当前用户发现有一些user是空的用户,直接删掉,


delete from  user  where  user=''


否则后面会出问题


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


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


这里能看到只能本机访问root,可以通过执行语句


update user set host = '%' where user = 'root' andhost='localhost';


来释放root的访问权限,让所有ip都能通过root登录


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


执行语句


insert into mysql.user(Host,User,Password) values
("%","mycat",password("123456"));


添加新用户


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


然后是赋权限,我这里是赋了所有权限,可以只赋某个库,或者部分权限,命令自己网上查,执行赋权限语句


grant all privileges on *.* to 'mycat'@'%' identified by '123456';


后一定记得执行


flush privileges;


来刷新权限


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


登录新建的用户并创建响应的数据库,


mysql –umycat–p


create database db1/db2/db3


根据不同机器数据库名不同


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


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


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


通过配置


sh /opt/sxt/soft/mycat/bin/mycat start


执行开机启动也可以自己写脚本加入init服务


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


创建一个新的group


groupadd mycat


创建一个新的用户,并加入group


useradd -g mycat mycat


给新用户设置密码,


passwd mycat


2、配置mycat配置文件


在三台mysql的配置文件

vi /etc/my.cnf


中加入

lower_case_table_names = 1


来忽略大小写

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


编辑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>

 

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


在conf目录下配置server.xml ,将目录下没有的用户全部删掉
或者注释掉,添加可用的用户,这里添加了


<user name="mycat">
<property name="password">123456</property>
<property name="schemas">JamesMycatSchema</property>
</user>


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


修改conf下的partition-hash-int.txt文件
在下面添加10020=2,原本默认的是分两个就是10000和10010,
现在我们三个就要三个分类id了,添加一个即可


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


四、测试mycat


1、启动mycat


执行


mycat start


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


tail -100  $MYCAT_HOME/logs/wrapper.log


查看结果如下就表明启动成功了


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


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安装与测试教程 超详细!


因为刚才执行了建表语句,这时候连接上了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);


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


刷新一下navicat查看mycat连接的库


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


db1


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


db2


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


db3


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


到这里呢教程就已经结束了 有问题可以在下方留言 博主会尽全力为大家解答

扫描下方二维码 关注互扯程序 来到我们的大家庭  2018程序猿 你不在孤单


推荐阅读:


技术:

技术:

技术:

技术:

技术:

技术:


工具:

工具:

工具:


干货分享:


分享:

分享:


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

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


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

一码不扫,
何以扫天下?

以上是关于MyCat安装与测试教程 超详细!的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm与Anaconda超详细安装配置教程

mycat系列一基于 Docker 搭建 MySQL 主从复制的详细教程

IntelliJ IDEA安装教程(超详细)

Linux环境下zookeeper的安装教程(超详细!!)

Oracle19c安装,基本配置教程(超详细)

Docker最新超详细教程——安装与部署