Mysql 可用性

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: <div class="markdown_views"><p>高可用性就是保证尽量少的宕机时间。 <br>尽量少的数据损坏。 <br>一般会受到如下因素影响:</p><ul><li>环境因素, 比如磁盘耗尽</li><li>性能问题, 可能是运行了超级慢的sql</li><li>糟糕的schema和索引设计</li><li>复制导致数据不一致。</li>

高可用性就是保证尽量少的宕机时间。
尽量少的数据损坏。
一般会受到如下因素影响:

  • 环境因素, 比如磁盘耗尽
  • 性能问题, 可能是运行了超级慢的sql
  • 糟糕的schema和索引设计
  • 复制导致数据不一致。

提升平均失效时间 (MTBF)

就是连续运行的时间。 我们可以通过如下的注意点尽量避免:

  • 测试回复工具和流程
  • 最小权限
  • 用好的命名和组织约定避免混乱,比如测试开发库分离
  • 升级服务器前使用Percona Tookit检查系统
  • 确认服务器配置项
  • 通过skip_name_resolve禁止DNS
  • 除非证明有效,否则不使用查询缓存。
  • 避免使用复杂的特性,如触发器等
  • 监控重要组件
  • 尽量记录服务器状态和性能做成曲线查看走向
  • 定期检查复制完整性
  • 备库设置为只读,不要让复制自动启动
  • 对查询语句做检查
  • 归档并清理不需要的数据
  • 为文件系统保留空余空间,在linux中可以使用-m选项为系统本身保留空间。或者创建很大的空文件,在快满是删除
  • 养成习惯,评估和管理系统的改变,状态以及性能信息。

降低平均恢复时间(MTTR)

通过建立冗余来避免系统完全失效,比如避免单点。
能够提供冗余和故障转移能力的系统架构
熟悉业务的员工和详细的文档和流程
宕机事后反思

避免单点失效

单个磁盘,单台服务器,单台交换机路由器,单电力网。 任何不冗余的部分都可能是一个失败的单点。

用池加负载均衡,可以动态的切换及避免冗余
共享存储或者复制,做到数据的冗余。

共享存储就是在华为的时候的存储产品,比如NAS。

同步复制

mysql 普通的复制,主服务器挂掉之后会丢数据,使用同步复制保证至少在一条备机持久化之后才能持久化本地,所以减少了丢失。

通常可用的工具:
Mysql Cluster . 可以在任何节点上写入。这些节点拥有等同的读写能力,美羊羊都是冗余数据。
Percona XtraDB Cluster,可以基于已有的存储引擎增加同步复制和集群的特性。其有很多有死的特性:

  • 跨界点复制比没有集群快,因为网络写RAM比本地写磁盘块,可以通过降低单节点持久性获得更好的性能。
  • 行级并发。可以更好的利用多核CPU

故障转移和恢复

冗余只是一个基础,真正影响可用性的是如何利用这些冗余做转移和恢复。

转移是A出问题了切到B上,等A好了再切回去,这要比仅仅恢复A要好。
通常有如下的手段来做:

  • 提升备库。
  • 使用虚拟IP,如果服务器出问题,则让虚拟ip指向备库。但是这样可能会因为网络缓存,ip接管等引起错误
  • 中间件 可以使用代理,端口转发,LVS等等方法来作为中间件,屏蔽应用和数据库。比如最简单的http代理

总结:

  • 两方面考虑增加可用性。 增加两次故障之间的运行时间MTBF,减少从故障恢复的时间。MTTR
  • MTBF要减少出错,尽量减少宕机
  • MTTR要尽早发现,可以使用监控。
  • MTTR还可以使用冗余,并提供故障注意能力。但是遮阳系统更复杂,变成了分布式的。 意味着协调、同步、CAP(一致可用容错只能满足两个)、拜占庭将军问题等
  • 如果需要很强的可用性保证不宕机,那么需要Mysql Cluster这样的集群产品。 如果可以容忍故障转移慢一点,标准mYSQL复制也可以
  • 如果不是很在意故障转移时间,可以使用NAS等存储层的技术。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
监控 安全 关系型数据库
在规划阿里云RDS跨区迁移资源和服务可用性
在规划阿里云RDS跨区迁移资源和服务可用性
314 4
|
SQL 关系型数据库 MySQL
环境篇之 mysql 的可用性测试|学习笔记
快速学习环境篇之 mysql 的可用性测试
126 0
环境篇之 mysql 的可用性测试|学习笔记
|
弹性计算 监控 关系型数据库
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
标签 PostgreSQL , 同步 , 半同步 , 流复制 背景 两节点HA架构,如何做到跨机房RPO=0(可靠性维度)?同时RTO可控(可用性维度)? 半同步是一个不错的选择。 1、当只挂掉一个节点时,可以保证RPO=0。如下: 主 -> 从(挂) 主(挂) -> 从 2、当一个节点挂掉后,在另一个节点恢复并开启同步模式前,如果在此期间(
2215 0
|
监控 关系型数据库 测试技术
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
1337 0
|
SQL 关系型数据库 MySQL
MySQL:slave_skip_errors参数对MGR可用性的影响
整个问题提出和测试由 @gc @甘露寺的姑子@乙酉 完成,文档记录由@gc @乙酉完成。 我只是进行了问题分析和文档整理 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、案例描述 MGR在遇到表不存在的情况下,节点没有退出节点而是爆出一个警告,并且节点状态也正常,警告如下: 2019-10-17T21:16:11.
1247 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
22天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
66 3
Mysql(4)—数据库索引
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
160 1