mycat数据库集群系列之mycat读写分离安装配置
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考。本次系列终结大概包括以下内容:多数据库安装、mycat部署安装、数据库之读写分离主从复制、数据库之双主多重、数据库分库分表。每一个点,有可能会对应一篇或者多篇文章,由于还要继续上班工作,所以本系列分享预计持续时间需要10天左右,有兴趣的您可以持续关注。我是一个菜鸟,如果写的不好的地方,望多多指点和包涵。
好了,不逼逼了,直接进入本次的主题:mycat读写分离模式配置安装。
一、简介
mycat是干嘛的呢?首先我们来简单的了解一下mycat到底是干嘛的:MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议 的服务器,前端用户可以把它看作是一个数据库代理,MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。
简单的说,Mycat是一个数据库集群操作中间件,实现了数据库的:读写分离、主从切换、分库分表等业务,但是对我们程序员在使用上来说,是封装的,和平时使用单库单表操作无差别。其它的就不在此忽悠了,网上介绍多如牛毛。
二、环境准备
1、JDK安装
前面已经介绍了mycat是用java写的,所以第一个环境要求就是要jdk环境,并且jdk是1.8+。
Jdk安装包下载,我最开始在官网下载,下载的速度超慢,今天就不推荐官网下载地址了,今天给大家推荐的是国内华为大佬提供的下载地址,当然上面包的更新速度没有官网及时,但是够用了,目前是13+。
直接上地址:https://repo.huaweicloud.com/java/jdk/13+33/?C=M&O=D
下载速度但是杠杠的,分分钟下载完毕:
根据自己的电脑环境,选择对应的包下载即可,由于本次是在win10上实操,所我现在的是win-64。
下载完毕后,直接点击exe安装包,傻瓜式的下一步下一步即可完成安装操作。
安装完毕后,接下来就是配置一下环境变量:
电脑-》属性-》高级系统配置-》高级-》环境变量-》
在系统变量中的新建变量:
先新建变量名:JAVA_HOME,变量值为:
C:\Program Files\Java\jdk- (jdk安装位置)
接着在PATH变量名中分别添加以下两个值:
%JAVA_HOME%\bin
查看jdk是否安装成功
进入cmd:
输入:java -version
2、mycat下载
Mycat下载途径有很多种,可以直接在mycat官网下载、github、其它地址下载,具体下载地址,可以根据自己的网络来选择适合自己的下载方式
mycat官网下载: http://dl.mycat.io
github下载:https://github.com/MyCATApache/Mycat-download
其它下载地址:http://dl.mycat.org.cn/
我最终的下载地址是在http://dl.mycat.org.cn/上下载的。
根据机器环境和版本要求,选择对应的版本的环境下载完成即可。
下载好mycat后,将文件解压到存放的文件目录,我只放在E盘下,只根据实际磁盘来自由选择:E:\Program Files\mycat
三、mycat配置主从复制
Mycat的使用配置,我们先从最简单的模式(主从复制)开始配置起走。Mycat主从复制主要配置文件有如下两个文件,两个文件都在mycat目录\conf下。
server.xml: 配置文件包含了mycat的系统配置信息
schema.xml:涵盖了mycat的逻辑库,表,分片规则,分片节点及数据源。
server.xml配置文件
server.xml主要涉及到两个标签的配置,
system标签:主要配置系统相关的配置,在此不在做详细的描述,根据实际需要在去配置;
user标签:主要用于定义登录mycat的用户和权限,这也是本次需要介绍的配置节点。user标签可以同时配置多个节点。
<!--配置mycat连接用户信息-->
<!--name:用户名-->
<user name="root" defaultAccount="true">
<!--password:用户登录密码-->
<property name="password">xuyuanhong</property>
<!--password:mysql对应的逻辑库名称,如果有多个库,那么不同的库之间通过,连接-->
<property name="schemas">test</property>
</user>
schema.xml配置文件
schema配置文件是我们这一次介绍的关键配置文件,该配置文件会配置具体是mycat逻辑库和实际数据库的映射关系,以及分库分表规则,读写规则等等。本次还是只介绍其读写分离的配置方式。由于配置信息很多,直接看详细的配置说明。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"> <!--schema:mycat整个数据库的映射框架配置,每一个mycat逻辑库需要一个对于的配置节点-->
<!--name:mycat的逻辑库名称,和sercer.xml中的逻辑库名称保持一致-->
<!--checkSQLschema:是否检测SQL,如果设置为 true,那么mycat会对传递的SQL做优化,主要去掉指定库名称,反之则不做任何处理,一般情况下设置false-->
<!--sqlMaxLimit:最大连接数-->
<!--dataNode:主要配置逻辑库和实际库的映射关系,会有一个专门的节点来配置,此处指需要绑定对于的映射关系名称即可-->
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dntest">
</schema> <!--dataNode:配置mycat逻辑库和实际库的映射关系-->
<!--name:映射关系名称,要和上面的schema对应的dataNode节点名称保持一致-->
<!--database:实体库映射的真实数据库名称-->
<!--dataHost:具体的数据库连接属性节点名称-->
<dataNode name="dntest" database="test" dataHost="hosttest" /> <!--dataHost:配置数据库的连接信息和路由规则信息-->
<!--name:数据连接地址信息名称,与上面的dataNode节点中的dataHost名称对应-->
<!--maxCon:指定每个读写实例连接池的最大连接-->
<!--minCon:指定每个读写实例连接池的最小连接,初始化连接池的大小-->
<!--balance:查询操作负载均衡类型,目前的取值有以下4种
balance=0: 不开启读写分离,所有读操作都发送到当前可用的writeHost上。
balance=1: 全部的readHost与Stand by writeHost都参与select语句的负载均衡,
简而言之,当双主双从模式(M1->S1, M2->S2,并且M1与M2互为主备)时,在正常情况下,M2,S1和S2都参与select的负载均
balance=2: 所有的读操作都随机在writeHost,readHost上分发。
balance=3: 所有的读请求都随机分配到writeHost对应的readHost上执行,writeHost不负担读压力,注意balance=3只在mycat1.4之后版本中有效。
在实际使用中,针对读写分离模式,我们一般都配置为3
-->
<!--writeType:写操作负载均衡类型,目前的取值有3种:
writeType=“0”, 所有写操作都发送到可用的writeHost上。
writeType=“1”,所有写操作都随机的发送到readHost。
writeType=“2”,所有写操作都随机的在writeHost、readhost分发。
毫无疑问,在实际使用过中,都会配置为0
-->
<!--dbType:指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。如mongodb,spark等-->
<!--dbDriver:指定连接后端数据库使用的Driver,目前可选的值有native和JDBC。
使用native的话,因为这个值执行的是二进制的mysql协议,所以可以使用mysql和maridb。
其他类型的数据库则需要使用JDBC驱动来支持
-->
<!--switchType:切换方式:
-1:表示不自动切换。
1:默认值,表示自动切换
2:表示基于MySQL主从同步状态决定是否切换,心跳语句: show slave status.
3:表示基于mysql galary cluster的切换机制,适合mycat1.4之上的版本,心跳语句show status like "%esrep%";
-->
<dataHost name="hosttest" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!--心跳检测语句,mycat也是要实时的去检测每一个映射数据库的状态,通过执行该语句的返回来判断数据库是否在线-->
<heartbeat>select user()</heartbeat>
<!-- writeHost:写服务器映射关系配置 -->
<!-- url:数据库地址(ip+端口号) -->
<!-- user:数据库连接用户名(注意改账号一定要授权可以远程访问改数据库) -->
<!-- password:数据库连接密码 -->
<writeHost host="hostM1" url="192.168.3.205:3306" user="root"
password="xuyuanhong">
<!--readHost:读服务器映射关系配置,可以配置多个节点,多个节点就代表多个从数据库-->
<readHost host="hostS1" url="192.168.3.205:3307" user="root"
password="xuyuanhong">
</readHost>
</writeHost>
</dataHost>
</mycat:schema>
四、mycat启动及其常用操作命令
- 首先需要进入到mycat安装目录的bin目录下
cd E:\Program Files\mycat\bin
- 开启mycat
mycat.bat start
- 停止mycat
mycat.bat stop
- 重启mycat
mycat.bat restart
- 查看mycat状态
mycat.bat status
五、mycat中遇到的问题解决
其实在实际mycat配置时,我也不是一次配置成功的,也遇到了两个小问题,现在罗列出来,如果刚刚你也遇到了正好可以解决掉。
1、Unrecognized VM option 'AggressiveOpts'
解决方式:打开wrapper.conf配置文件,找到AggressiveOpts并将整行注释掉即可,如下图所示:
2、Could not create the Java Virtual Machine.
该问题有可能是设置才内存超出本地环境实际内存,处理方式也简单,直接将wrapper.conf对应的内存改小即可。如下图位置:
有关mycat的部署安装、读写分离就分享到这儿了,下一篇将和大家一起分享mycat的多主多重配置,有兴趣的小伙伴,可以持续关注,谢谢!
mycat数据库集群系列之mycat读写分离安装配置的更多相关文章
- mycat数据库集群系列之数据库多实例安装
mycat数据库集群系列之数据库多实例安装 最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据 ...
- mycat数据库集群系列之mysql主从同步设置
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...
- 聊一聊mycat数据库集群系列之双主双重实现
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...
- Mysql数据库搭建集群---实现主从复制,读写分离
参考博客:https://blog.csdn.net/xlgen157387/article/details/51331244 A. 准备:多台服务器,且都可以互相随意访问root用户,都可以随意进 ...
- Centos下Redis集群的搭建实现读写分离
Centos下Redis一主多从架构搭建 搭建目标:因为自己笔记本电脑配置较低的原因,模拟两台机器之间搭建一主一从的架构,主节点Redis主要用来写数据,数据写入到主节点的Redis,然后从节点就可以 ...
- 数据库集群 MySQL主从复制
MySQL主从复制 本节内容我们联系使用MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能. 因为要使用多个MySQL数据库,所以不建议在电脑上安装多个MySQ ...
- kubeadm安装集群系列(kubeadm 1.15.1)
kubeadm已经进入GA阶段,所以尝试使用kubeadm从零开始安装高可用的Kubernetes集群,并记录下过程和所有坑 本文基于kubeadm 1.15.1 目录 kubeadm安装集群系列-1 ...
- docker应用-6(mysql+mycat 搭建数据库集群)
上一节,通过使用overlay网络,搭建了跨主机的docker容器集群.下面,在这个跨主机的docker容器集群环境下,搭建mysql 数据库集群. mysql主从自动备份和自动切换 从数据安全性考虑 ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
随机推荐
- 《java常用设计模式之----单例模式》
一.简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...
- python爬虫入门(4)----- selenium
selenium 简介 selenium使用JavaScript模拟真实用户对浏览器进行操作.测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户 ...
- Dart语言之 异步支持
Dart类库有非常多的返回Future或者Stream对象的函数. 这些函数被称为异步函数:它们只会在设置好一些耗时操作之后返回,比如像 IO操作.而不是等到这个操作完成. async和await关键 ...
- Squeeze-and-Excitation Networks(SENet)详解
一.SENet简介 Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建 ...
- JAVA OOP 编程-常用设计模式
smart-design-pattern 吼吼!10分钟内快速回顾所有设计模式及应用场景 其实,工作三年以上,精通coding,深知并发编程,熟悉OOP思想,但却因为种种原因! 没有在学习生涯初期就看 ...
- Python数据分析之股票数据
最近股市比较火,我7月初上车了,现在已经下了.中间虽然吃了点肉,但下车的时候都亏进去了,最后连点汤都没喝着. 这篇文章我们就用python对股票数据做个简单的分析.数据集是从1999年到2016年上海 ...
- cookie 和session的简单比较
1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session ...
- matplotlib基础汇总_02
设置plot的风格和样式 点和线的样式 颜色 参数color或c 五种定义颜色值的方式 别名 color='r' 合法的HTML颜色名 color = 'red' HTML十六进制字符串 color ...
- PDO::__construct
PDO::__construct — 创建一个表示数据库连接的 PDO 实例(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 PDO::__constru ...
- Docker技术入门与实战第2版-高清文字版
Docker技术入门与实战第2版-高清文字版 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取 ...