目录

一、MySQL 读写分离的概述

1、读写分离工作原理

1、读写分离工作原理

2、为什么要读写分离

3、实现读写分离的方式

4、常见的中间件程序

二、什么是MyCAT?

三、Mycat应用场景

四、Mycat 简单概括

五、Mycat实现mysql读写分离

1、环境准备

2、初始化环境

3、主从配置

3.1、主mysql服务器配置(192.168.58.33)

3.2、从mysql服务器配置(192.168.59.112)

4、安装mycat(192.168.58.20)

5、客户机上测试(192.168.58.35)

6、修改 mycat 配置文件

7、主服务器上建立一个用户

8、修改 mycat 配置文件/apps/mycat/conf/schema.xml

8、修改 mycat 配置文件/apps/mycat/conf/schema.xml

9、客户端测试读写分离

六、总结


一、MySQL 读写分离的概述

Mysql 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台MySQL    作为独立的数据库是完全不能满足实际需求的,无论是在安全性, 高可用性以及高并发等各个方面。

因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力,这样的方案来进行部署与实施的。

1、读写分离工作原理

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库    处理SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库

1、读写分离工作原理

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库    处理SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库

2、为什么要读写分离

  • ① 面对越来越大的访问压力,单台的服务器的性能成为瓶颈,需要分担负载
  • ② 主从只负责各自的写和读,极大程度的缓解 X 锁和S 锁争用
  • ③ 从库可配置myisam     引擎,提升查询性能以及节约系统开销
  • ④ 增加冗余,提高可用性

3、实现读写分离的方式

一般有两种方式实现

应用程序层实现,网站的程序实现
应用程序层实现指的是在应用程序内部及连接器中实现读写分离

优点:

① 应用程序内部实现读写分离,安装既可以使用;
② 减少一定部署难度;
③ 访问压力在一定级别以下,性能很好。

缺点:

① 架构一旦调整,代码要跟着变;
② 难以实现高级应用,如自动分库,分表;
③ 无法适用大型应用场景。

4、常见的中间件程序

Cobar       

阿里巴巴B2B 开发的关系型分布式系统,管理将近 3000 个MySQL 实例。 在阿里经受住了考验, 后面由于作者的走开的原因 cobar 没有人维护 了,阿里也开发了 tddl 替代cobar。

MyCAT

社区爱好者在阿里 cobar 基础上进行二次开发,解决了 cobar 当时存 在的一些问题,并且加入了许多新的功能在其中。目前 MyCAT社区活   跃度很高,目前已经有一些公司在使用 MyCAT。总体来说支持度比 较高,也会一直维护下去,

OneProxy

数据库界大牛,前支付宝数据库团队领导楼总开发,基于 mysql 官方 的proxy 思想利用c 进行开发的,OneProxy   是一款商业收费的中间件,舍去了一些功能点,专注在性能和稳定性上。有朋友测试过说在 高并发下很稳定。

Vitess

这个中间件是Youtube 生产在使用的,但是架构很复杂。   与以往中间件不同,使用 Vitess 应用改动比较大要 使用他提供语言的API 接口,我们可以借鉴他其中的一些设计思想。

Kingshard

Kingshard 是前 360Atlas 中间件开发团队的陈菲利用业务时间 用go 语言开发的,目前参与开发的人员有 3 个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。

Atlas

360 团队基于mysql proxy 把 lua 用C 改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并 发下会经常挂掉,如果大家要使用需要提前做好测试。

MaxScale 与MySQL Route

这两个中间件都算是官方的,MaxScale 是mariadb (MySQL   原作者维护的一个版本)研发的,目前版本不支持分库分表。MySQL Route 是现在MySQL 官方 Oracle 公司发布出来的一个中间件

二、什么是MyCAT?

  • 一个彻底开源的,面向企业应用开发的大数据库集群; 支持事务、ACID、可以替代MySQL 的加强版数据库;一个可以视为MySQL 集群的企业级数据库,用来替代昂贵的 Oracle 集群; 一个融合内存缓存技术、NoSQL 技术、HDFS (Hadoop Distributed File System:分步式文件系统)大数据的新型SQL   Server; 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品;
  • 一个新颖的数据库中间件产品。

三、Mycat应用场景

mycat适用的场景很丰富,以下是几个典型的应用场景

  • 纯的读写分离,此时配置最为简单,支持读写分离,主从切换
  • 分库分表,对于超过1000万的表进行分片,最大支持1000亿的单表分片
  • 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计
  • 替代Hbase,分析大数据,作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择

Mycat长期路线图

强化分布式数据库中间件的方面的功能,使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP方向的能力,并集成一些热门常用的实时分析算法,让工程师以及DBA们更容易用Mycat实现一些高级数据分析处理功能不断强化Mycat开源社区的技术水平,吸引更多的IT技术专家,使得Mycat社区成为中国的Apache,并将Mycat推到Apache基金会,成为国内顶尖开源项目,最终能够让一部分志愿者成为专职的Mycat开发者,荣耀跟实力一起提升

四、Mycat 简单概括

1、一个彻底开源的,面向企业应用开发的大数据库集群

2、支持事务、ACID、可以替代MySQL的加强版数据库

3、一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

4、一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

5、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

6、一个新颖的数据库中间件产品

 

五、Mycat实现mysql读写分离

1、环境准备

master服务器 192.168.58.33
slave1服务器 192.168.58.19
mycat服务器 192.168.58.20
客户机 192.168.58.35

2、初始化环境

#每台服务器上都初始化,关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3、主从配置

3.1、主mysql服务器配置(192.168.58.33)

#修改配置文件
vim /etc/my.cnf
server-id = 1
log-bin=master-bin
binlog_format=MIXED
log-slave-updates=true#重启服务
systemctl restart mysqld(3)#进入数据库授权,查看二进制文件及节点号
mysql -uroot -p123123
grant replication slave on *.* to 'myslave'@'192.168.58.%' identified by '123456';
flush privileges;
show master status;

 

3.2、从mysql服务器配置(192.168.59.112)

(1)#修改配置文件
vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index(2)#重启服务
systemctl restart mysqld(3)#进入数据库授权,查看二进制文件及节点号
mysql -uroot -p123123
change master to master_host='192.168.59.113',master_user='myslave',master_password='123456',master_log_file='master-bin.0000012',master_log_pos=603;start slave;
show slave status\G;##一定要出现
#Slave_IO_Running: Yes
#Slave_SQL_Running: Yes

#一般 Slave_IO_Running: No 的可能性:
1、网络不通
2、my.cnf配置有问题
3、密码、file文件名、pos偏移量不对
4、防火墙没有关闭

验证主从复制效果

4、安装mycat(192.168.58.20)

MyCAT 目录说明

bin : mycat命令,启动、重启、停止等运行目录
catlet: catlet为Mycat的一个扩展功能
conf : mycat配置信息,重点关注
lib: mycat引用的jar包,,Mycat是java开发的
logs :日志文件,包括Mycat启动的日志和运行的日志version.txt : mycat版本说明
wrapper.log:mycat启动日志
mycat.log:mycat详细工作日志
切换至opt目录,下载mycat安装包
wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz创建/usr/local/mycat文件夹,并解压mycat包至/mycat下tar zxvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz -C /usr/local/mycat设置变量环境
echo 'PATH=/usr/local/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh④ 启动mycat,查看日志文件,最后可以看到启动成功
mycat start
注:内存小于2G启动不了
Starting Mycat-server...#tail -f /usr/local/mycat/logs/wrapper.log
#启动成功日志末尾会出现successfully

 

5、客户机上测试(192.168.58.35)

客户端连接数据库
#这里密码初始为123456   需要加端口
mysql -uroot -p123456 -h 192.168.10.13 -P8066

6、修改 mycat 配置文件

修改 mycat 配置文件 /usr/local/mycat/conf/server.xml
#去掉44行行注释,对应的在51行行末注释,删除50行行末注释,5 * 60 * 1000L; //连接空> 闲检查#修改45行端口号为3306
45 <property name="serverPort">3306</property>
#配置Mycat的连接信息(账号密码),在110 和111行, 可以修改,这边不修改了####参数解释说明####
110         <user name="root" defaultAccount="true">
111                 <property name="password">123456</property>
112                 <property name="schemas">TESTDB</property>
113                 <property name="defaultSchema">TESTDB</property>116                 <!-- 表级 DML 权限设置 -->
117                 <!--
118                 <privileges check="false">
119                         <schema name="TESTDB" dml="0110" >
120                                 <table name="tb01" dml="0000"></table>
121                                 <table name="tb02" dml="1111"></table>
122                         </schema>
123                 </privileges>
124                  -->127         <user name="user">
128                 <property name="password">user</property>
129                 <property name="schemas">TESTDB</property>
130                 <property name="readOnly">true</property>
131                 <property name="defaultSchema">TESTDB</property>user             用户配置节点
name             逻辑用户名,客户端登录MyCAT的用户名,也就是客户端用来连接Mycat的用户名。
password         客户端登录MyCAT的密码
schemas          数据库名,这里会和schema.xml中的配置关联,可配置多个,多个用逗号分开,例如:db1,db2
privileges       配置用户针对表的增删改查的权限
readOnly mycat   逻辑库所具有的权限。true为只读,false为读写都有,默认为false##注意
1.#server.xml文件里登录mycat的用户名和密码可以任意定义,这个账号和密码是为客户机登录mycat时使用的账号信息
2.#逻辑库名(如上面的TESTDB,也就是登录mycat后显示的库名,切换这个库之后,显示的就是代理的真实mysql数据库的表)要在schema.xml里面也定义,否则会导致mycat服务启动失败!这里只定义了一个标签,所以把多余的都注释了。如果定义多个标签,即设置多个连接mycat的用户名和密码,那么就需要在schema.xml文件中定义多个对应的库

改动前 

#去掉44行注释,50行末注释,51行末注释

修改后

#第45行,修改端口号

#密码用户 在110 和111 可以修改,这边不修改了

7、主服务器上建立一个用户

mysql -uroot -p123123
GRANT ALL ON *.* TO 'root'@'192.168.59.%' IDENTIFIED BY '123456';#查看创建成功
use mysql;
select user,host from user;

8、修改 mycat 配置文件/apps/mycat/conf/schema.xml

schema.xml是最主要的配置项,此文件关联mysql读写分离策略,
读写分离、分库分表策略、分片节点都是在此文件中配置的.MyCat作为中间件,
它只是一个代理,本身并不进行数据存储,需要连接后端的MySQL物理服务器,此文件就是用来连接MySQL服务器的。#vim  /usr/local/mycat/conf/schema.xml
#删除所有内容,重新写入以下<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><dataNode name="dn1" dataHost="localhost1" database="hellodb" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="host1" url="192.168.58.33:3306" user="root" password="123456"><readHost host="host2" url="192.168.58.19:3306" user="root" password="123456"/></writeHost></dataHost>
</mycat:schema>解释
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">#schema标签:数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应。#name:逻辑数据库名,与server.xml中的schema对应;#checkSQLschema: 数据库前缀相关设置,这里为false;#sqlMaxLimit:  select时默认的limit,避免查询全表,否则可能会遇到查询量特别大的情况造成卡 死;#dataNode:表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name
</schema><dataNode name="dn1" dataHost="localhost1" database="hellodb" />#dataNode标签: 定义mycat中的数据节点,也是通常说的数据分片,也就是分库相关配置#name: 定义数据节点的名字,与table中dataNode对应#datahost: 物理数据库名,与datahost中name对应,该属性用于定义该分片属于哪个数据库实例#database: 物理数据库中数据库名,该属性用于定义该分片属性哪个具体数据库实例上的具体库<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"#dataHost标签: 物理数据库,真正存储数据的数据库#name: 物理数据库名,与dataNode中dataHost对应#maxCon属性指定每个读写实例连接池的最大连接。也就是说,标签内嵌套的writeHost、readHost标  签都会使用这个属性的值来实例化出连接池的最大连接数#minCon属性指定每个读写实例连接池的最小连接,初始化连接池的大小#balance: 均衡负载的方式writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">#writeType: 写入方式#dbType: 数据库类型#dbDriver指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC。用 native 的话,因为这个值执行的是二进制的 mysql 协议,所以可以使用 mysql 和maridb。其他类型的数据库则需要使用 JDBC 驱动来支持。#switchType:  “-1” 表示不自动切换; “1” 默认值,自动切换; “2” 基于 MySQL主从同步的状态决定是否切换心跳语句为 show slave status; “3” 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)心跳语句为 show status like ‘wsrep%’.<heartbeat>select user()</heartbeat>#heartbeat: 心跳检测语句,注意语句结尾的分号要加<writeHost host="host1" url="192.168.59.113:3306" user="root" password="123456">#host:用于标识不同实例,一般 writeHost 我们使用*M1,readHost 我们用*S1。#url:后端实例连接地址。Native:地址:端口 JDBC:jdbc的url#user:后端存储实例需要的用户名字#password:后端存储实例需要的密码<readHost host="host2" url="192.168.59.112:3306" user="root" password="123456"/></writeHost></dataHost>
</mycat:schema>#schema.xml文件中有三点需要注意:balance="1",writeType="0" ,switchType="1"
#schema.xml中的balance的取值决定了负载均衡对非事务内的读操作的处理。balance 属性负载均衡类型,目前的取值有 4 种:
##balance="0":不开启读写分离机制,所有读操作都发送到当前可用的writeHost上,即读请求仅            发送到writeHost上
##balance="1":一般用此模式,读请求随机分发到当前writeHost对应的readHost和standby的writeHost上。即全部的readHost与stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1, S2 都参与 select 语句的负载均衡
##balance="2":读请求随机分发到当前dataHost内所有的writeHost和readHost上。即所有读操作都随机的在writeHost、 readhost 上分发
##balance="3":读请求随机分发到当前writeHost对应的readHost上。即所有读请求随机的分发wiriterHost 对应的 readhost 执行, writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有###writeHost和readHost标签,这两个标签都指定后端数据库的相关配置给mycat,用于实例化后端连接池。唯一不同的是:writeHost指定写实例、readHost指定读实例,组着这些读写实例来满足系统的要求。在一个dataHost内可以定义多个writeHost和eadHost。但是,如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。另一方面,由于这个writeHost宕机系统会自动的检测到,并切换到备用的writeHost上去   #PS:Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost

8、修改 mycat 配置文件/apps/mycat/conf/schema.xml

schema.xml是最主要的配置项,此文件关联mysql读写分离策略,
读写分离、分库分表策略、分片节点都是在此文件中配置的.MyCat作为中间件,
它只是一个代理,本身并不进行数据存储,需要连接后端的MySQL物理服务器,此文件就是用来连接MySQL服务器的。#vim  /usr/local/mycat/conf/schema.xml
#删除所有内容,重新写入以下<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><dataNode name="dn1" dataHost="localhost1" database="hellodb" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="host1" url="192.168.58.33:3306" user="root" password="123456"><readHost host="host2" url="192.168.58.19:3306" user="root" password="123456"/></writeHost></dataHost>
</mycat:schema>解释
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">#schema标签:数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应。#name:逻辑数据库名,与server.xml中的schema对应;#checkSQLschema: 数据库前缀相关设置,这里为false;#sqlMaxLimit:  select时默认的limit,避免查询全表,否则可能会遇到查询量特别大的情况造成卡 死;#dataNode:表存储到哪些节点,多个节点用逗号分隔。节点为下文dataNode设置的name
</schema><dataNode name="dn1" dataHost="localhost1" database="hellodb" />#dataNode标签: 定义mycat中的数据节点,也是通常说的数据分片,也就是分库相关配置#name: 定义数据节点的名字,与table中dataNode对应#datahost: 物理数据库名,与datahost中name对应,该属性用于定义该分片属于哪个数据库实例#database: 物理数据库中数据库名,该属性用于定义该分片属性哪个具体数据库实例上的具体库<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"#dataHost标签: 物理数据库,真正存储数据的数据库#name: 物理数据库名,与dataNode中dataHost对应#maxCon属性指定每个读写实例连接池的最大连接。也就是说,标签内嵌套的writeHost、readHost标  签都会使用这个属性的值来实例化出连接池的最大连接数#minCon属性指定每个读写实例连接池的最小连接,初始化连接池的大小#balance: 均衡负载的方式writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">#writeType: 写入方式#dbType: 数据库类型#dbDriver指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC。用 native 的话,因为这个值执行的是二进制的 mysql 协议,所以可以使用 mysql 和maridb。其他类型的数据库则需要使用 JDBC 驱动来支持。#switchType:  “-1” 表示不自动切换; “1” 默认值,自动切换; “2” 基于 MySQL主从同步的状态决定是否切换心跳语句为 show slave status; “3” 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)心跳语句为 show status like ‘wsrep%’.<heartbeat>select user()</heartbeat>#heartbeat: 心跳检测语句,注意语句结尾的分号要加<writeHost host="host1" url="192.168.59.113:3306" user="root" password="123456">#host:用于标识不同实例,一般 writeHost 我们使用*M1,readHost 我们用*S1。#url:后端实例连接地址。Native:地址:端口 JDBC:jdbc的url#user:后端存储实例需要的用户名字#password:后端存储实例需要的密码<readHost host="host2" url="192.168.59.112:3306" user="root" password="123456"/></writeHost></dataHost>
</mycat:schema>#schema.xml文件中有三点需要注意:balance="1",writeType="0" ,switchType="1"
#schema.xml中的balance的取值决定了负载均衡对非事务内的读操作的处理。balance 属性负载均衡类型,目前的取值有 4 种:
##balance="0":不开启读写分离机制,所有读操作都发送到当前可用的writeHost上,即读请求仅            发送到writeHost上
##balance="1":一般用此模式,读请求随机分发到当前writeHost对应的readHost和standby的writeHost上。即全部的readHost与stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1, S2 都参与 select 语句的负载均衡
##balance="2":读请求随机分发到当前dataHost内所有的writeHost和readHost上。即所有读操作都随机的在writeHost、 readhost 上分发
##balance="3":读请求随机分发到当前writeHost对应的readHost上。即所有读请求随机的分发wiriterHost 对应的 readhost 执行, writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有###writeHost和readHost标签,这两个标签都指定后端数据库的相关配置给mycat,用于实例化后端连接池。唯一不同的是:writeHost指定写实例、readHost指定读实例,组着这些读写实例来满足系统的要求。在一个dataHost内可以定义多个writeHost和eadHost。但是,如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。另一方面,由于这个writeHost宕机系统会自动的检测到,并切换到备用的writeHost上去   #PS:Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost

如果本地mycat服务器上安装了mysql需要关掉,否则端口会冲突

#重启mycat,并查看3306端口

#如果本地mycat服务器上安装了mysql需要关掉,否则端口会冲突
systemctl stop mysqld.service(3)#重启mycat,并查看3306端口mycat restart    netstat -antp|grep 3306

9、客户端测试读写分离

#在主、从服务器打开日志
set global general_log=1; #在客户机查看是否开启成功
show variables like 'general%';#在主从服务器实时查看日志
tail -f /usr/local/mysql/data/localhost.log#在客户机上汪表里插入数据,并查看主从服务器实时日志
insert into teachers values(5,'Xiao Ming',46,'F');#在客户机查看表信息,并查看主从服务器实时日志
select * from teachers;

#打开通用日志 

#在主从服务器实时查看日志

#在客户机上,表里插入数据

在客户机上写数据信息,在master上

六、总结

MyCAT一个彻底开源的,面向企业应用开发的大数据库集群; 支持事务、ACID、可以替代MySQL 的加强版数据库;一个可以视为MySQL 集群的企业级数据库,用来替代昂贵的 Oracle 集群; 一个融合内存缓存技术、NoSQL 技术、HDFS (Hadoop Distributed File System:分步式文件系统)大数据的新型SQL   Server; 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品;一个新颖的数据库中间件产品。

MySQL之中间件Mycat实现读写分离相关推荐

  1. MySQL用中间件ProxySQL实现读写分离和主节点故障应用无感应

    昨天做的用proxysql实现的读写分离,但是在实际的应用中这样的结构还很不完整,如果主节点出现故障那么整个拓扑的数据库也无法通过proxysql来调用了,所以还需要增加主节点故障后proxysql能 ...

  2. MySQL 集群(三):MySQL + Mycat 实现读写分离,主备切换集群

    MySQL 集群(三):MySQL + Mycat 实现读写分离,主从切换集群 下载 Mycat Mycat 主要文件 端口 Mycat 命令 配置文件 server.xml schema.xml 配 ...

  3. MySQL 案例实战--MySQL 基于Mycat实现读写分离

    MySQL 基于Mycat实现读写分离 前言 一.什么是读写分离? 二.MySQL 读写分离解决方案 三.MySQL 基于Mycat实现读写分离 四.Mycat-web 管理部署 前言 本环境是基于 ...

  4. 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)

    高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制) 视频地址:https://www.bilibili.com/video/BV1ry4y1v7Tr?p=8& ...

  5. mycat 实现读写分离

    1. mycat简介 mycat是一个开源数据库中间件:它可以管理你的所有数据库,并对他们进行读写分离,分库分表等. 使用起来的话Mycat就是一个近似于MySQL的数据库服务器,你可以用连接MySQ ...

  6. SpringBoot 整合 MyCat 实现读写分离

    作者:颜不喜 cnblogs.com/muycode/p/12603037.html MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量 ...

  7. MyCat配置读写分离

    分布式核心问题系列目录 分布式核心问题 - SSO单点登录 分布式核心问题 - 分布式锁 分布式核心问题 - 分布式接口幂等性设计 分布式核心问题 - MyCat实现读写分离 ------------ ...

  8. java spring mysql配置_java相关:mysql+spring+mybatis实现数据库读写分离的代码配置

    java相关:mysql+spring+mybatis实现数据库读写分离的代码配置 发布于 2020-4-4| 复制链接 分享一篇关于关于mysql+spring+mybatis实现数据库读写分离的代 ...

  9. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

最新文章

  1. 读8篇论文,梳理BERT相关模型进展与反思
  2. 如何构建基于移动相机的AR系统
  3. feign session 调用_springboot使用feign调用session传递失效解决方案
  4. chrome中F12工具说明
  5. python保存创建文件报错 with open(fileName,‘w‘) as fp: IOError: [Errno 22] invalid mode (‘w‘) or filename
  6. matlab解带参数的积分方程组,方程组求解问题:方程组中有带参数的积分函数,求参数...
  7. 【需求工程】剖析BPMN
  8. js网页文件资源加载器
  9. maven学习(6)-Maven依赖范围
  10. Java添加事件监听的四种方法代码实例
  11. 拖动滑块验证 php,基于JS组件实现拖动滑块验证功能
  12. 台大林轩田机器学习课程笔记2----机器学习的分类
  13. 初识机器学习前导内容_你需要知道的基本概念罗列_以PY为工具 【Python机器学习系列(一)】
  14. 全极化SAR影像地物分类方法研究
  15. ACL流量控制工具-- 王贝的学习笔记
  16. 使用reduce实现数组扁平化
  17. 胆的功能--中医谈胆的作用
  18. 虚拟机(VMware Workstation Pro15)及系统(Windows10)安装
  19. HTML5系列代码:个人页面
  20. WPS—JS宏笔记记录

热门文章

  1. 网工知识角|例行维护检查华为设备,这10个常用命令你必须掌握
  2. 数据库原理之数据库安全性(详细知识点)
  3. 微信的QQ邮箱助手不提醒,怎么解决?
  4. Arcmap没有Spatial Analyst模块
  5. ZZULIOJ-1525-小P找座位
  6. java登录密码错误锁定账号
  7. 还在担心图片的版权吗?分享11个无版权、高清、免费图片素材网站给你!
  8. 使用TabLayout+ViewPager+Fragment实现切页展示
  9. 【Allen方差】计算allen方差
  10. linux中php是什么指令,什么是linux命令