如何搭建一款高性能、高可用的 MYSQL 架构?

这是一篇视频课程笔记。视频课程

MySQL、Redis、Hbase

关系型数据库,以 MySQL 为例,其特点有:

  1. 管理方便
  2. 易于实现复杂查询
  3. 储存容量相对较少

非关系型数据库,其特点有:

  1. 大多基于 key-value 的存储结构
  2. 性能较高
  3. 易于水平拓展
  • Redis 适于做一些高性能的缓存
  • Hbase 常用于大数据的一些应用存储系统

如何存储海量数据

基于 MySQL 主从同步

数据冗余、集群搭建、数据备份

MySQL 内置有 bin log 和 relay log 两个日志文件

主数据库会将所有的 DML 操作记录在 bin log 里

bin log 中的数据内容会通过网络发送给从数据库的 relay log 里

从数据库会解析 relay log 的记录,对主数据库进行一个备份操作

注意:主从同步并不能作为数据备份的唯一操作。它需要依赖于良好的网络环境。如果出现网络异常,就会加大备份的延迟、甚至造成备份的失败。因此为了数据安全定期的物理备份必不可少。

高性能 MySQL 应该如何搭建

海量请求会使数据库的读写操作处于长期的高并发环境中,为了保证高并发下环境下的数据安全。需设计数据库的事务隔离级别,或采用一些加锁机制

读写分离

减少加锁、提高读写效率

对于大部分的应用来说 读操作 远远大于 写操作,如果只有读操作是不会产生并发问题的。

区分读写请求,读访问从数据库。写访问主数据库

对于大部分的读操作,可以使用冗余提示效率。提升单节点的性能

分库分表

数据表扩容、数据库扩容、专库专用(垂直拆分)

可以使用 MyCat 等中间件实现

分库分表指的是水平拆分,如果项目是基于微服务的,且每个项目的数据量不大则可以考虑垂直拆分。使每个微服务独立存储到一个数据库中。

数据库优化
  1. 字段类型选取
  2. 数据库缓存
  3. 关闭无用服务
  4. 数据库参数调优
  5. 选取合适的存储引擎
  6. SQL 语句的编写
  7. 索引处理

使用 慢查询日志,或慢查询工具 找到执行较慢的 SQL 语句。针对性的进行优化。

如何搭建高性能、高可用的 MySQL 架构

可用性是根本,没有了可用性一切都是空谈

中间件单点灾难 会导致上述所有优化的努力都付诸东流

去中心化

去中心化集群

部署多个 MyCat 服务,使其共同维护一个虚拟 IP。使 虚拟 IP 可以指向多个 MyCat 服务器中的任意一个。通过 IP 选举策略选中一台服务器作为 Master。使 Master 通过心跳机制和其余各个 MyCat 服务间通信。如果当前 Master 挂掉,心跳机制会将虚拟 IP 的值改为另一个 MyCat 的地址。并将其设为新的 Master。从而保证至少有一个 MyCat 服务存活,有效防止单点故障问题的出现。

实际开发中使用 Zookeeper、HAProxy和Keepalived等组件。实现心跳机制、选举策略、虚拟 IP 等功能

海量请求处理方案

  • 限流,将海量请求拦截在数据库之前
  • 销峰填谷,使用队列对海量请求进行
  • 对数据进行缓存

处理 PB 级海量数据、日处理上亿的数据时。由于关系型数据库是基于二维表结构的,可能会存储大量无效数据。造成很大程度的空间浪费。推荐使用非关系型数据库以及相关技术。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值