Mysql 可用性

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: <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等存储层的技术。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
监控 安全 关系型数据库
在规划阿里云RDS跨区迁移资源和服务可用性
在规划阿里云RDS跨区迁移资源和服务可用性
377 4
|
SQL 关系型数据库 MySQL
环境篇之 mysql 的可用性测试|学习笔记
快速学习环境篇之 mysql 的可用性测试
164 0
环境篇之 mysql 的可用性测试|学习笔记
|
弹性计算 监控 关系型数据库
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
标签 PostgreSQL , 同步 , 半同步 , 流复制 背景 两节点HA架构,如何做到跨机房RPO=0(可靠性维度)?同时RTO可控(可用性维度)? 半同步是一个不错的选择。 1、当只挂掉一个节点时,可以保证RPO=0。如下: 主 -> 从(挂) 主(挂) -> 从 2、当一个节点挂掉后,在另一个节点恢复并开启同步模式前,如果在此期间(
2338 0
|
监控 关系型数据库 测试技术
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
1502 0
|
SQL 关系型数据库 MySQL
MySQL:slave_skip_errors参数对MGR可用性的影响
整个问题提出和测试由 @gc @甘露寺的姑子@乙酉 完成,文档记录由@gc @乙酉完成。 我只是进行了问题分析和文档整理 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、案例描述 MGR在遇到表不存在的情况下,节点没有退出节点而是爆出一个警告,并且节点状态也正常,警告如下: 2019-10-17T21:16:11.
1293 0
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
556 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
201 62
|
2月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!

推荐镜像

更多