读写分离时mycat不能链接mysql_Mycat读写分离配置实践
Mycat读写分离配置实践
发布时间:2020-08-16 01:08:20
来源:ITPUB博客
阅读:81
作者:jeanron100
工作这些年来,也去了一些地方,有了一些见闻,隐隐感觉很多文化和猫有着千丝万缕的联系。就拿IT行业来说吧,猫有着很高的曝光率,比如大名鼎鼎的
tomcat,是由SUN的软件构架师詹姆斯·邓肯·戴维森开发,并由Sun贡献给Apache软件基金会,他希望这种动物能够自己照顾自己,将其命名为
Tomcat,于是乎这个名字就留下来了。
在Oracle中我最喜欢查看的一个数据字典试图就是cat,这是典型的猫文化,没有其他的技术意味。
最早听到mycat的时候,我意味是一个国外的开源项目,但是紧接着发现这竟然是一个国产项目,让我有些激动,而且源代码是基于Java的,我觉得太对我的胃口了。
下面的猫儿是在泰国皮皮岛的一个早晨碰见的,它睡在门口,眼皮都懒得抬一下。
mycat这么一个项目,在国内确实很火,在github上也有链接,星标有2000多个。是基于阿里开源的Cobar产品而研发。
github链接如下:
https://github.com/MyCATApache/Mycat-Server/wiki
官方的链接如下:
http://dl.mycat.io/目前的版本比较新的是1.6,摸爬滚打这么多年,也算是见证了国内数据库的一个发展,它本身不仅仅支持MySQL,还支持Oracle,PG等,目前MySQL方向用的最为流行。
安装部署
Mycat的安装部署其实很简单,从官方下载对应的安装包即可,大概是15M左右。
下载最新的安装包:
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
解压后的安装包内容有60M左右。
安装Mycat很简单,只需要保证Java已经正确安装,如果系统自带,版本不低也可以。
# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.0.1.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)相应的Java的基础配置也需要在profile文件里对应调整一下。
比如修改.bash_profile文件。
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
创建系统级的组和用户
useradd mycat对于安装来说,几乎不需要可以调整,直接把解压后的mycat目录拷贝到/usr/local下即可,然后修改权限。
mv mycat/ /usr/local/
chown mycat:mycat /usr/local/mycat
配置数据库环境
我们需要配置的数据库环境假设是一主三从,可以在一台服务器上搭建模拟,一主三从如果快速搭建部署,可以参考github上我写的一个小脚本,https://github.com/jeanron100/mysql_slaves,分分钟搞定。
假设环境的情况如下:
master: 端口33091
slave1: 端口33092
slave2: 端口33093
slave3: 端口33093
mycat可以实现很多功能,在此先实现一个需求,比如现在有一套环境读多写少,需要提供大量的数据量连接访问。我们就可以创建两个用户mycat_user,负责DML,mycat_read负责查询。create user mycat_user identified by 'mycat';
create user mycat_read identified by 'mycat';
比如有多个数据库,我们就模拟创建3个数据库来。
create database db1;
create database db2;
create database db3;
分配权限的部分如下:
grant select on db1.* to mycat_read;
grant select,insert,delete,update on db1.* to mycat_user;
grant select on db2.* to mycat_read;
grant select,insert,delete,update on db2.* to mycat_user;
grant select on db3.* to mycat_read;
grant select,insert,delete,update on db3.* to mycat_user;赋予从库状态查询的权限,在后面需要用。
mysql> grant replication client on *.* to 'mycat_read'@'%' ;
mysql> grant replication client on *.* to 'mycat_user'@'%' ;
初始化数据
初始化数据库,我还是选用一个经典的标travelrecord,然后插入两行记录。在3个数据库db1,db2,db3中创建。
mysql> create table travelrecord
(id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);
mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(1,@@hostname,20160101,100,10);
mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,@@hostname,20160102,100,10);
mycat配置
上面的工作做好之后,系统层面,数据库层面的工作就做好了。启动Mycat的命令很简单,比如mycat start,停止Mycat的命 令 mycat stop等等。
命令很简单,关键在于Mycat的配置,这个才是重点。在mycat/conf目录下有两个文件需要重点关注,一个是server.xml,一个是schema.xml
server.xml的配置关键内容如下,我们配置了两个用户,所以在这个配置文件里就先按照如下的配置,这里我们配置schema是pxc_schema,先卖个关子。
mycat
pxc_schema
mycat
pxc_schema
true
schema.xml的内容如下,也做了相应的标注。
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
show slave status
检测Mycat的连接情况
Mycat的配置做好了以后,整个工作的80%的任务就完成了,其实关键还是在于Mycat文件的配置,配置不当还是需要反复调试的。
如果验证Mycat的生效呢,我们可以使用8066这个默认端口来连接,如果里面出现mycat的字样,就证明是Mycat设置生效了。
[root@oel64 logs]# mysql -umycat_read -pmycat -P8066 -h292.168.163.128
。。。
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
。。。
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
我们看看这个用户mycat_read能够访问的数据库,在数据库里应该就是db1,db2,db3,为什么这里出现了pxc_shema呢,其实也可以理解是Mycat在中间过滤的效果,其实这是db1,而db2,db3还没有在Mycat配置文件中体现,所以还没有生效。
mysql> show databases;
+------------+
| DATABASE |
+------------+
| pxc_schema |
+------------+
1 row in set (0.00 sec)我们就连接到这个pxc_schema数据库。
mysql> use pxc_schema
Database changed
可以看到这个数据库下的表。
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| travelrecord |
+---------------+
1 row in set (0.01 sec)
如果验证我们连接到的数据库是启用了Mycat的读写分离呢。我们可以看端口。
mysql> select @@port;
+--------+
| @@port |
+--------+
| 33092 |
+--------+
1 row in set (0.05 sec)
由此我们可以看到,连接到的是33092的端口,即是slave1
可以反复切换,看看这个load balance的方式是否满意。
继续扩展Mycat读写分离的配置
上面的步骤只是简单实现了读写分离的配置,比如我要访问多个数据库,而不仅仅是pxc_schema,该如何配置呢。
我们在server.xml中就需要对schema扩展一下,schema的值是以逗号分隔,配置的细节是在schema.xml里面映射的。
mycat
pxc_schema,db2,db3
如果在schema.xml里面配置多个 逻辑库,就可以配置多个schema键值即可。
相应的dataNode也需要扩展映射。
整个过程完成后,重启一下Mycat即可。
读写分离时mycat不能链接mysql_Mycat读写分离配置实践相关推荐
- 图解 | 当我们在读写 Socket 时,我们究竟在读写什么?
套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖 ...
- 【动画】当我们在读写Socket时,我们究竟在读写什么?
套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖 ...
- apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离
第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...
- Mycat原理详解,Mycat 实现 MySQL 的读写分离(Mysql主从复制)
文章目录 1 Mycat 介绍 2 Mycat 安装 2.1下载安装JDK 2.2下载安装mycat 2.3启动和连接 3 Mycat 主要配置文件说明 4 利用 Mycat 实现 MySQL 的读写 ...
- 基于mycat的mysql_基于Mycat中间件的MySQL读写分离
基于Mycat中间件的MySQL读写分离 简述 mycat是国内开源的数据库中间件,可以实现mysql读写分离和主备热切换,容灾,数据分片等功能. 详情:http://www.mycat.io/ 架构 ...
- Mycat - 实现数据库的读写分离与高可用
前言 开心一刻 上语文课,不小心睡着了,坐在边上的同桌突然叫醒了我,并小声说道:"读课文第三段".我立马起身大声读了起来.正在黑板写字的老师吓了一跳,老师郁闷的看着我,问道:&qu ...
- mycat mysql 性能测试_mycat读写分离性能测试
1. MySQL主从配置 我们的方案设计基于Mysql的主从数据复制功能,以下是基于mysql5.5以上版本最新的主从配置. 开启mysql主从数据复制,主要在mysql的my.ini文件中设置 ...
- mysql读写分离错_MySQL主从同步、读写分离配置步骤、问题解决
根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记: 现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要 ...
- 解决:测试HDFS读写性能时出现错误
解决:测试HDFS读写性能时出现错误 今天测试HDFS的读写性能出现以下错误 java.lang.IllegalArgumentException:Unsupported ByteMultiple M ...
最新文章
- 学习机器学习,究竟是理论重要,还是公式推导重要?
- 怎样格式化电脑_160G移动硬盘做PE启动盘 要怎样做
- 万代南梦宫公布了一款游乐园模拟游戏,该产品有什么好玩的?
- linux时间配置文件,linux系统下的时间配置综述
- mysql jdbc linux,linux mysql jdbc 权限问题_MySQL
- 它决定支付30万美元的勒索金
- 使用Json.net进行序列化时,如何更改属性名称?
- 【渝粤教育】国家开放大学2018年春季 0688-22T老年精神障碍护理 参考试题
- 拓端tecdat|r语言多均线股票价格量化策略回测
- 多组输入,scanf的与按位取反操作符的运用。
- 完整的ACSII编码表
- 特征预处理:归一化/标准化/缺失值
- 超好看的二次元透明网站登录页模板
- ArcGIS中的坐标系
- 10个Excel实用操作技巧分享,使用率超高,让你一学就会
- 生物信息学必备网站大全
- r语言list 转换成 vector
- 软件测试一支笔的用途,面试解答:写出一支笔的20种用途
- “优必选“杯2021中国机器人技能大赛--赛后总结
- 中国石墨烯防腐涂料行业市场供需与战略研究报告
热门文章
- 华为面试题算什么,这个背会了外企随便进(2)
- 如何利用binlog还原sql或者恢复数据
- java一个包有两个类_java一个包包含多个类 java 类包含类
- java计算机毕业设计江西婺源旅游文化推广系统源码+mysql数据库+系统+lw文档+部署
- Django框架--路由分配系统
- MySQL——查看数据表结构
- 跑后恢复方法(七种简单易行)
- java设计模式---责任链模式详解
- keil c语言 打开文件,第5节:用keil软件新建,关闭,打开一个完整工程的操作流程...
- Vue进阶(贰零壹):JS合并两个数组方法详解