目录
3.1、主mysql服务器配置(192.168.58.33)
3.2、从mysql服务器配置(192.168.59.112)
8、修改 mycat 配置文件/apps/mycat/conf/schema.xml
8、修改 mycat 配置文件/apps/mycat/conf/schema.xml
一、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;