mycat

RocketMQ 主从同步若干问题答疑

自作多情 提交于 2020-04-18 02:09:59
温馨提示:建议参考代码RocketMQ4.4版本,4.5版本引入了多副本机制,实现了主从自动切换,本文并不关心主从切换功能。 @ TOC 1、初识主从同步 主从同步基本实现过程如下图所示: RocketMQ 的主从同步机制如下: A. 首先启动Master并在指定端口监听; B. 客户端启动,主动连接Master,建立TCP连接; C. 客户端以每隔5s的间隔时间向服务端拉取消息,如果是第一次拉取的话,先获取本地commitlog文件中最大的偏移量,以该偏移量向服务端拉取消息; D. 服务端解析请求,并返回一批数据给客户端; E. 客户端收到一批消息后,将消息写入本地commitlog文件中,然后向Master汇报拉取进度,并更新下一次待拉取偏移量; F. 然后重复第3步; RocketMQ主从同步一个重要的特征:主从同步不具备主从切换功能,即当主节点宕机后,从不会接管消息发送,但可以提供消息读取。 温馨提示:本文并不会详细分析RocketMQ主从同步的实现细节,如大家对其感兴趣,可以查阅笔者所著的《RocketMQ技术内幕》或查看笔者博文: https://blog.csdn.net/prestigeding/article/details/79600792 2、提出问题 主,从服务器都在运行过程中,消息消费者是从主拉取消息还是从从拉取? RocketMQ主从同步架构中

mycat读写分离方案二 Spring boot JPA结合Mycat

社会主义新天地 提交于 2020-04-14 17:05:45
【推荐阅读】微服务还能火多久?>>> Mycat读写分离可以看 mycat读写分离方案一 1.application.properties配置连接 只要连接上mycat就可以和正常的mysql连接一样 spring.datasource.url = jdbc:mysql://127.0.0.1:8066/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC spring.datasource.primary.username = test_write spring.datasource.primary.password = abcd12345678@ spring.datasource.driverClassName = com.mysql.jdbc.Driver 2.去除查询的readOnle事务 @Aspect @Configuration public class TxAdviceInterceptor { private static final int TX_METHOD_TIMEOUT = 20 ; //所有的mysqlJPA接口,排除掉mongodb的 private static

Docker搭建MySQL读写分离主从模式 & 分布式数据库中间件Mycat分库分表应用

筅森魡賤 提交于 2020-04-12 20:08:09
系统环境: Ubuntu 18.04.4 Docker 19.03.6 一、MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本: mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL) 2. 启动主节点并修改配置文件 docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql bash 修改/etc/mysql/my.cnf配置文件(还得先apt update更新软件包列表才能安装vim等编辑工具,比较繁琐,所以可以选择先配置好my.cnf文件再docker run -v 挂载进容器) 配置文件 my.cnf 修改如下: [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql # 以上是原有默认配置,add variables如下: # 在同一个Master-Slave集群里不能有重复id server-id = 3306 # 不配置默认3306 # port = 3306 # 二进制日志文件存储路径及名称

怎么用数据库中间件Mycat+SpringBoot完成分库分表?

前提是你 提交于 2020-04-11 11:27:44
一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。 二、什么是分库分表 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。 垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰。 水平切分于垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中

基于 Mycat 实现读写分离

牧云@^-^@ 提交于 2020-04-06 12:25:17
之前配置了MySql的 主从同步 ,但是如果我们程序还没实现读写分离。现在可以基于Mycat实现读写分离,Mycat是一个数据库中间件,提供了Mysql分表分库和读写分离等解决方案,下面仅记录Mycat读写分离 首先Linux下载MyCat 用wget命令下载 wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 下载后解压 tar -zxvf Mycat-server-1.6.7.3-release-20190927161129-linux.tar.gz 下面是解压后的目录 进入conf文件夹可以看到下面的文件,配置读写分离我们主要使用到了schema.xml与server.xml 文件 server.xml: 主要 配置Mycat服务的参数,例如端口号,Myact用户名和密码使用的逻辑数据库等 schema.xml: 主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。 server.xml 配置 找到user节点配置,配置用户信息,说明如下: --name 登录Mycat的用户名 --password 登录Mycat的密码 --schemas 逻辑数据库名

数据库集群 MySQL主从复制

纵饮孤独 提交于 2020-03-25 11:42:58
MySQL主从复制 本节内容我们联系使用 MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能。 因为要使用多个 MySQL数据库,所以不建议在电脑上安装多个MySQL数据库,最好的办法是使用多个绿色版的MySQL数据库。 MariaDB数据库是MySQL创始人Michael 创建的 MySQL重要分支。由于Oracle 持有了 MySQL的版权,MySQL存在闭源的隐患,加之Oracle对MySQL的更新不太重视,所以业界许多公司纷纷采用了完全开源的MariaDB数据库。MariaDB建立在MySQL5.5版本上,所以MariaDB与MySQL的兼容性非常好,并且性能上也做出了很大的优化,社区活跃,软件版本更新迅速,包括谷歌、Facebook等企业纷纷改用MariaDB数据库。 Master数据库 首先把安装到C:\Program Files 里面的 MariaDB目录复制一份,放置的路径没有要求,但是尽量把数据库放在C盘或者D盘上面,改名DB1。因为这两个盘符的空间处在硬盘磁碟的外圈,所以线速度很快,数据读写速度也很理想。 DB1将要当做主库使用,创建my.ini文件,然后编辑文件内容。 [mysqld] # 数据库字符集 character_set_server = utf8 #MySQL 主机名 ( 只可以是数字 ) server_id

Windows下 mycat 的启动

旧巷老猫 提交于 2020-03-24 23:54:09
1:首先去官网上 http://www.mycat.io/ 下载Mycat 压缩包,只需解压即可 2:安装Mycat 服务 , 以管理员身份打开cmd 进入到bin目录下,输入以下命令, mycat.bat install 如果没有执行过该命令,则会出现:“指定服务未安装” 的错误 3:配置Mycat的JAVA环境,在conf目录下的wrapper.conf 中,需要注意的是是配置到java.exe ,如果只配置到E:\Program Files\Java\jdk1.8.0_171\bin 文件夹下的话还会报错 wrapper.java.command=E:\Program Files\Java\jdk1.8.0_171\bin\java.exe 4:接下来就可以启动Mycat 了 mycat start # 启动命令 mycat stop # 停止命令 mycat restart #重启命令 来源: 51CTO 作者: 龙爱海 链接: https://blog.51cto.com/longithome/2481393

Mycat 数据库分库分表中间件

我的未来我决定 提交于 2020-03-21 07:18:23
Mycat关键特性 关键特性 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。 什么是MYCAT 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID

MyCat基本知识

谁都会走 提交于 2020-03-20 13:38:39
MyCat基本知识 一.Mycat基本元素 1.逻辑库,mycat中存在,对应用来说相当于mysql数据库,后端可能对应了多个物理数据库,逻辑库中不保存数据 2.逻辑表,逻辑库中的表,对应用来说相当于mysql的数据表,后端可能对应多个物理数据库中的表,也不保存数据 逻辑表分类 1.分片表,进行了水平切分的表,具有相同表结构但存储在不同数据库中的表,所有分片表的集合才是一张完整的表 2.非分片表,垂直切分的表,一个数据库中就保存了一张完整的表 3.全局表,所有分片数据库中都存在的表,如字典表,数量少,由mycat来进行维护更新 4.ER关系表,mycat独有,子表依赖父表,保证在同一个数据库中 二.安装mycat 1.配置环境变量 export JAVA_HOME=/usr/lib/jdk1.8.0_20 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JER_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JER_HOME/bin:$PATH:/usr/local/mycat/bin export MYCAT_HOME=/usr/local/mycat export ZOOKEEPER_HOME=/usr/ local/zookeeper-3.4

集群应用系统

坚强是说给别人听的谎言 提交于 2020-03-19 18:05:17
集群应用系统 使用 Mycat读写分离数据库作为应用系统的数据库后端,使用 ZooKeeper集群, Kafka集群提供应用系统调度服务,使用 Reids提供应用系统消息队列服务 节点分配 192.168.37.14 mycat,zookeeper1 192.168.37.12 db1,zookeeper2 192.168.37.13 db2,zookeeper3 192.168.37.15 redis,nginx 192.168.37.16 jar1 192.168.37.17 jar2 修改各个节点名称 # hostnamectl set-hostname jar1 # hostnamectl set-hostname jar2 # hostnamectl set-hostname redis 构建集群应用系统环境 修改数据库配置 新建gpmall数据库(db1 ) 将提供的 gpmall.sql数据库文件上传到 db1的 /root目录下 # mysql -uroot -p123456 创建库 gpmall,将提供的 gpmall.sql文件导入到 gpmall库中 > create database gpmall; > use gpmall > source /root/gpmall.sql > quit 退出数据库 修改mycat配置(mycat) 修改配置文件 # vi