麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
683
2023-04-07
分布式关系型数据库解决方案
前言
伴随着 IT 互联网技术的发展,传统的集中式数据库愈发的暴露其弊端:集中式处理必然导致访问瓶颈,系统的数据安全隐患比较大,机器的容灾能力差,单点故障会造成整个业务系统瘫痪。所以分布式数据库势在必行,当下 HBASE 或者 HDFS 普遍被用来作为存储介质。对于关系型数据库,如何进行分布式管理与部署,本文对现有的开源解决方案进行了相关的调查。(以 mysql 为主) 分布式关系型数据库的关键主要有以下几点:
分库分表M-S集群负载均衡编程接口MyCat概述一个可以用于 MySQL 读写分离和高可用的中间件一个模拟为 My*** 的超级数据库一个能平滑扩展支持 1000 亿大表的分布式数据库系统一个可管控多种关系数据库的数据库路由器一个平滑从关系数据升级到大数据的应用中间件
虽然云计算时代,传统数据库存在着先天性的弊端,但是 NoSQL 数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat 的目标就是:低成本地将现有的单机数据库和应用平滑迁移到 “云” 端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。2014 年 MyCat 首次在上海的《中华架构师》大会上对外宣讲引发围观,更多的人参与进来,随后越来越多的项目采用了 MyCat。 总结一下,mycat 是新一代的基于淘宝开源数据库中间件 Cobar 的 Mysql 分布式集群,大数据处理中间件。当然,发展至今 mycat 不仅仅只支持 mysql,它同样的也支持 Sql Server,***,***,*** 等主流数据,同时也支持 mongoDB 这种新型的 NoSQL 方式的存储。对于上层用户,mycat 始终是一个传统数据,不需要去 care 具体的分布式细节,上层只需要执行普通的数据库语句即可。
特点
支持读写分离,支持 Mysql 双主多从,以及一主多从的模式支持全局表,数据自动分片到多个节点,用于高效表关联查询支持独有的基于 E-R 关系的分片策略,实现了高效的表关联查询自动故障切换,高可用性提供高可用性数据分片集群支持 JDBC 连接 ORACLE、***、***,将其模拟为 My*** 使用支持 Mysql 集群,可以作为 Proxy 使用基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能
相关链接
Atlas
概述
Atlas 是由 Qihoo360,Web 平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它在 MySQL 官方推出的 MySQL-Proxy0.8.2 版本的基础上,修改了大量 bug,添加了很多功能特性。目前该项目在 360 公司内部得到了广泛应用,很多 MySQL 业务已经接入了 Atlas 平台,每天承载的读写请求数达几十亿条。
特点
读写分离从库负载均衡IP 过滤SQL 语句黑白名单自动分表
(与 mysql proxy 对比)
用 c 替换了所有的 lua,仅仅在管理接口中保留了 lua。重写了网络模型和线程模型实现了连接池优化了锁机制,并且显著提高了性能
相关链接
Cobar
概述
Cobar 是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。
产品在阿里巴巴稳定运行 3 年以上。接管了 3000+ 个 MySQL 数据库的 schema。集群日处理在线 SQL 请求 50 亿次以上。集群日处理在线数据流量 TB 级别以上。
相关链接
Amoeba
概述
特点
Amoeba 主要解决以下问题:
数据切分后复杂数据源整合提供数据切分规则并降低数据切分规则给数据库带来的影响降低数据库与客户端连接读写分离路由
缺点
目前还不支持事务暂时不支持存储过程(近期会支持)不适合从 amoeba 导数据的场景或者对大数据量查询的 query 并不合适(比如一次请求返回 10w 以上甚至更多数据的场合)暂时不支持分库分表,amoeba 目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致。
相关链接
Mysql proxy
概述
MySQL Proxy 是一个处于你的 client 端和 MySQLserver 端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。MySQLProxy 就是这么一个中间层代理,简单的说,MySQLProxy 就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用 lua 脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQLProxy 是完全透明的,应用则只需要连接到 MySQLProxy 的监听端口即可。当然,这样 proxy 机器可能成为单点失效,但完全可以使用多个 proxy 机器做为冗余,在应用服务器的连接池配置中配置到多个 proxy 的连接参数即可。MySQLProxy 更强大的一项功能是实现 “读写分离”,基本原理是让主数据库处理事务性查询,让从库处理 SELECT 查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。
特点
负载均衡读写分离不支持表的拆分代理层监控
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。