mysql中间件

MySQL 分库分表方案,总结的非常好!

家住魔仙堡 提交于 2019-12-02 08:09:33
前言 公司最近在搞服务分离,数据切分方面的东西,因为单张包裹表的数据量实在是太大,并且还在以每天60W的量增长。 之前了解过数据库的分库分表,读过几篇博文,但就只知道个模糊概念, 而且现在回想起来什么都是模模糊糊的。 今天看了一下午的数据库分库分表,看了很多文章,现在做个总结,“摘抄”下来。(但更期待后期的实操) 会从以下几个方面说起: 第一部分:实际网站发展过程中面临的问题。 第二部分:有哪几种切分方式,垂直和水平的区别和适用面。 第三部分:目前市面有的一些开源产品,技术,它们的优缺点是什么。 第四部分:可能是最重要的,为什么不建议水平分库分表!?这能让你能在规划前期谨慎的对待,规避掉切分造成的问题。 名词解释 库: database ;表: table ;分库分表: sharding 数据库架构演变 刚开始我们只用单机数据库就够了,随后面对越来越多的请求,我们将数据库的 写操作 和 读操作 进行分离, 使用多个从库副本( Slaver Replication )负责读,使用主库( Master )负责写, 从库从主库同步更新数据,保持数据一致。架构上就是数据库主从同步。 从库可以水平扩展,所以更多的读请求不成问题。 但是当用户量级上来后,写请求越来越多,该怎么办?加一个Master是不能解决问题的, 因为数据要保存一致性,写操作需要2个master之间同步,相当于是重复了

MyCat教程一:MyCat的简单介绍

徘徊边缘 提交于 2019-12-02 03:20:40
MyCat教程二:mysql主从复制实现 MyCat教程三:安装及配置介绍 MyCat教程四:实现读写分离 MyCat教程五:实现分库分表 MyCat教程六:全局序列号-全局主键的自增长 一、MyCat简介 1. 什么是MyCat   MyCat 是目前最流行的 基于 java 语言编写的 数据库中间件 ,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是 分库分表 。配合数据库的主从模式还可实现 读写分离 。   MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。   MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说

mysql 分库分表 ~ 总揽分析

人盡茶涼 提交于 2019-12-01 22:05:25
一 简介:分库分表的理解 二 具体: 1 当由于单台DB业务增长导致的服务器压力时,就必须横向进行扩展 2 本文仅从中间层观点进行分析 三 现有方案 方案1 sharding家族 Sharding-JDBC是一款轻量级的Java框架,在JDBC层提供上述核心功能,使用方式与正常的JDBC方式如出一辙,面向Java开发的用户。 Sharding-Proxy是一款实现了MySQL二进制协议的服务器端版本,大家可以把它当成升级版的MySQL数据库使用。独立部署后,即可按照正常MySQL操作方式来使用上述所有的核心功能。 设计 在程序端利用设计控制,根据计算出的路由指定数据库节点. 特点 sharding优势 1 程序端进行控制,非常方便.利用代码计算分片字段,控制分片规则.不会产生性能损耗 2 程序能够封装面对不同种类数据库 sharding问题 1 不支持分布式事务,需要利用路由进行事务操作 2 不支持分布式事务,全局DDL需要到每个分片进行执行 3 不支持动态扩容 4 不具有通用性,因为是根据业务进行设计的 过程 通过对片键的换算绝对分片节点,再通过片键的换算定位分表,达到分片分表目的 方案 2 中间件家族 设计 采用开源界的开源中间件进行设计控制,路由规则和分片都配置在中间件,然后指定后端机器 特点 1 开源中间件分为两种 一种是支持分布式事务,比如cetus mycat

Using ClickHouse like MySQL by ProxySQL

心已入冬 提交于 2019-12-01 18:46:21
用户访问ClickHouse,需要默认的客户端clickhouse-client,但是这个工具不够友好: 需要额外安装,并且使用上,不是那么nice clickhouse-client其实是clickhouse的软连接,即要么全装,要么不用 啥最普及啊? 答:MySQL 基本所有的服务器都装了mysql,注意,这里指的是mysql-client,就是那个让你用命令行连接到MySQL服务的那个命令 ProxySQL是众多MySQL中间件中的佼佼者,一直被Percona推崇,最近他们也放出了支持ClickHouse的版本 因此,今天的话题就是: ClickHouse+ProxySQL = Using ClickHouse like MySQL Install https://github.com/sysown/proxysql/releases/tag/v1.4.3 注意下载ClickHouse打头的包 安装依赖 1 yum -y install perl-DBD-MySQL 注意 支持ClickHouse的ProxySQL版本,只支持Ubuntu 16, Debian 9, CentOS 7, and Fedora 24,其他版本的不要往下看了 启动ProxySQL 12345678910 # 默认配置文件是这个:/etc/proxysql.cnf # 默认是没有这个数据目录的

mycat分库分表

て烟熏妆下的殇ゞ 提交于 2019-12-01 18:42:51
系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。 安装 Mycat官网: http://www.mycat.io/ 可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。 Mycat下载地址: http://dl.mycat.io/ 官网有个文档,属于详细的介绍,初次入门,看起来比较花时间。 下载: 建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。 安装: 根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常周全的,当然,也有源码版的。(ps:源码版的下载后,只要配置正确,就可以正常运行调试,这个赞一下。) Mycat的安装其实只要解压下载的目录就可以了,非常简单。 安装完成后,目录如下: 目录 说明 bin mycat命令,启动、重启、停止等 catlet catlet为Mycat的一个扩展功能 conf Mycat 配置信息,重点关注 lib Mycat引用的jar包,Mycat是java开发的 logs 日志文件,包括Mycat启动的日志和运行的日志。 配置

mysql中间件研究(Atlas,cobar,TDDL)

孤街醉人 提交于 2019-12-01 16:17:27
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Altas架构: Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。 Altas的一些新特性: 1.主库宕机不影响读 主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响。从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响。在mysql官方的proxy中主库宕机,从库亦不可用。 2.通过管理接口,简化管理工作,DB的上下线对应用完全透明

mysql中间件研究(Atlas,cobar,TDDL)【转】

﹥>﹥吖頭↗ 提交于 2019-12-01 16:17:08
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Altas架构: Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。 Altas的一些新特性: 1.主库宕机不影响读 主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响。从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响。在mysql官方的proxy中主库宕机,从库亦不可用。 2.通过管理接口,简化管理工作,DB的上下线对应用完全透明

云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析

心不动则不痛 提交于 2019-12-01 15:32:21
POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB。 POLARDB融合了商业数据库稳定、可靠、高性能的特征,同时具有开源数据库简单、可扩展、高速迭代的优势,适合各个行业公司的创新业务使用。本专场中,来自阿里云、江娱互动以及猿辅导的各位技术大咖一起共同探讨了下一代云原生数据库POLARDB。 1、云原生数据库的演进方向和客户价值 阿里云智能数据库总经理曹伟为大家介绍了云原生数据库的演进方向以及阿里云POLARDB数据库的产品能力。 阿里云RDS和POLARDB都属于OLTP的关系性数据库,那就让我们先看下全球关系型数据库的市场情况。 如今,关系型数据库依旧是“老大哥”,但是过去的十年中关系型数据库领域也发生了一些微妙的变化。伴随着开源运动的兴起和MySQL、PostgreSQL等数据库的出现,很多用户开始在生产系统中大量使用开源数据库,因此商业数据库的市场受到了一定的挤压。 开源数据库的出现影响了整个数据库市场的格局和版图,也为阿里巴巴在数据库市场提供了一个重大的机会。经过十年的时间,阿里云数据库做到了“全国第一,全球领先”。当然,影响数据库格局的重要因素除了开源之外,还有云计算的兴起。 在云时代

基于 altas 实现读写分离

天涯浪子 提交于 2019-12-01 13:34:30
Atlas介绍 : Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。 源码Github:https://github.com/Qihoo360/Atlas 主要功能: 读写分离 从库负载均衡 自动分表 IP过滤 SQL语句黑白名单 DBA可平滑上下线DB 自动摘除宕机的DB 使用场景: Atlas是一个位于前端应用与后端MySQL数据库之间的中间件,它使得应用程序员无需再关心读写分离、分表等与MySQL相关的细节,可以专注于编写业务逻辑,同时使得DBA的运维工作对前端应用透明,上下线DB前端应用无感知。 读写分离方案 安装Atlas之前注意的事项: Atlas只能安装运行在64位的系统上 Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm。 后端mysql版本应大于5.1,建议使用Mysql 5.6 实现Mysql读写分离 Atlas的安装: 下载地址: https://github.com

基于Atlas实现读写分离

时间秒杀一切 提交于 2019-12-01 12:43:48
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品:Atlas,tddl,Mycat。 环境准备: 关闭所有防火墙 192.168.200.111 master 192.168.200.112 slave1 192.168.200.113 slave2 192.168.200.114 Atlas 192.168.200.115 客户端 先实现MySQL数据库的主从复制 mysql主机允许Atlas远程连接 mysql> grant all on *.* to 'admin'@'192.168.200.%' identifieed by '123123'; mysql> flush privileges; Atlas主机: rpm -vih https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm #注意操作系统的版本,安装相应版本的Atlas。 cd /usr/local/mysql-proxy/bin/ ./encrypt 123123 ++gAN07C/Q0= cd /usr/local/mysql-proxy/ # Atlas的安装目录 vim