mycat

Mycat 读写分离+分库分表

坚强是说给别人听的谎言 提交于 2019-11-27 19:15:24
上次进过GTID复制的学习记录,已经搭建好了主从复制的服务器,现在利用现有的主从复制环境,加上正在研究的Mycat,实现了主流分布式数据库的测试 Mycat就不用多介绍了,可以实现很多分布式数据库的功能,极大的减轻数据库服务器的压力,包括读写分离以及分库分表,本测试对这两种功能都进行了测试,进行相应记录 本文以Mycat官方给出的例子来进行解释总结 首先来看分库分表,分库分表一般来说都是一起说的,但是实际上分库跟分表是有区别的,简单来说有垂直和水平两种方式,垂直就是将表按字段进行拆分,水平就是将表按照数据分布来做行拆分。具体的肯定还是有区别,本文不再进行阐述,主要介绍按照字段的分布进行数据行的拆分 本身理解来说Mycat实现的应该是分库,也就是将一个表的行分开存储到不同的数据库中,这里不同的数据库可以有一下两种 1)不同的数据库服务器上的 两个数据库(此时db的名字可以相同,也可以不同) 2)相同的数据库服务器上的两个数据库(此时db的名字肯定是不同的) 当然对于实际使用分库来说肯定是使用不同的数据库服务器的,而且大多数都是在不同的服务器上使用相同的名字,这样能够比较正式的做法 分表的关键部分在mycat的配置文件schema.xml中,该文件中定义了数据库服务器,表的拆分规则等等重要信息 <table name="employee" primaryKey="ID"

针对innodb_flush_method参数的理解和对比测试(mycat+mysql)

我只是一个虾纸丫 提交于 2019-11-27 15:24:16
mysql的innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O_DIRECT 默认是fdatasync,调用fsync()去刷数据文件与redo log的buffer 为O_DSYNC时,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件 为O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log 首先文件的写操作包括三步:open,write,flush 上面最常提到的fsync(int fd)函数,该函数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘,并且flush完元数据信息(比如修改日期、创建日期等)才算flush成功。 使用O_DSYNC方式打开redo文件表示当write日志时,数据都write到磁盘,并且元数据也需要更新,才返回成功。 O_DIRECT则表示我们的write操作是从MySQL innodb buffer里直接向磁盘上写。 这三种模式写数据方式具体如下: fdatasync模式:写数据时,write这一步并不需要真正写到磁盘才算完成(可能写入到操作系统buffer中就会返回完成)

基于分布式关系型数据库,实现轻松应对百亿级数据分析场景解决方案

筅森魡賤 提交于 2019-11-27 12:26:25
MyCat是什么? 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库读写分离,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。也可以指定多个写库多个读库。 MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。 MyCat可以干什么? 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换 分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片 多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化 报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计 替代 Hbase

mysql主从服务搭建

自作多情 提交于 2019-11-26 16:09:30
一、安装mysql 检测当前centos是否安装了mysql:yum list installed | grep mysql     yum list installed | grep mariadb yum remove mariadb-libs.x86_64 并且移除/etc/my.cnf文件 rm -r /etc/my.cnf     由于mariadb是mysql的一个分支在centos7中会默认安装该数据库,需要将其写卸载    2.mysql5.7.19版本需要安装libnuma相关的依赖包     yum list installed |grep numactl 查询是否安装     yum install numactl 安装    3.解压mysql5.7.17到/usr/local/mysql下(路径可自行指定)     groupadd mysql useradd -g mysql mysql passwd mysql     检查指定mysql组是否存在:more /etc/group | grep mysql     检查指定用户所属组:groups mysql     检查当前活跃(在线)的用户列表:w    4.检查是否安装了 libaio     rpm -qa | grep libaio yum -y install libaio 5.配置my

centos安装mycat(支持mysql8连接)

牧云@^-^@ 提交于 2019-11-26 15:59:41
1.参考前文安装jdk 2.官网 http://www.mycat.io/ 或 http://dl.mycat.io/ 下载 mycat1.6.7 release 版本 3.解压安装   cd /usr/local   cp /home/tar/Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz /usr/local   tar -zxvf Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz 4.授权   随便一点的授权     chmod -R 777 mycat   严肃一点的授权     groupadd [groupname]     groupadd mycat     useradd -g [groupname] [username] -s /sbin/nologin     useradd -g mycat mycat -s /sbin/nologin     chown -R mycat.mycat /usr/local/mycat/ 4.如果mycat没有logs目录,创建目录(1.6.7没有logs目录启动报错,1.6有目录正常启动)   mkdir /usr/local/mycat/logs 5.替换 mysql 驱动包   下载

MySQL优化(超完整版)(二)

懵懂的女人 提交于 2019-11-26 00:47:21
7. MySQL分库分表 (1) 分库分表概念介绍   MySQL的分库分表有两种方式: 垂直拆分 和 水平拆分 。    垂直拆分 :垂直拆分就是要 把表按模块划分到不同数据库表中 (当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表。(垂直拆分用于分布式场景)    水平拆分 :解决单表大数据量的问题,水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如:在大型电商系统中,每天的会员人数不断的增加。达到一定瓶颈后如何优化查询。通过将表数据水平分割成不同的表来实现优化。(实现规则:hash、时间、不同的维度)    通俗理解:水平拆分行,行数据拆分到不同表中, 垂直拆分列,表数据拆分到不同表中。 (2) 水平分表的案例    分表原理: 取模拆分(一致性hash),可以将数据分配的比较均匀。 这里我们以3张表为例: 案例: 首先我创建三张表 user0 / user1 /user2