Mysql 可用性

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

  • 环境因素, 比如磁盘耗尽
  • 性能问题, 可能是运行了超级慢的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等存储层的技术。
时间: 2024-10-30 10:21:53

Mysql 可用性的相关文章

使用MySQL内建复制功能来最佳化可用性

mysql 使用MySQL内建复制功能来最佳化可用性2001-10-05 21:31 发布者:fei 阅读次数:142在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试.通过测试我们发现,可以使用这个特性来与备份数据库服务器保持数据同步,这样当主服务器因为某种原因处理失效时,能够使用备份机处理所有的查询.对于这样的要求,配置两台服务器并不困难.我将详细讨论整个处理过程,同时讨论一下当主服务器失效时,如何使用PHP来重

使用MySQL内建复制功能来最佳化可用性(一)

mysql 使用MySQL内建复制功能来最佳化可用性(一) 在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试.通过测试我们发现,可以使用这个特性来与备份数据库服务器保持数据同步,这样当主服务器因为某种原因处理失效时,能够使用备份机处理所有的查询.对于这样的要求,配置两台服务器并不困难.我将详细讨论整个处理过程,同时讨论一下当主服务器失效时,如何使用PHP来重定向查询. MySQL内部复制功能是建立在两个或两个以上服

使用MySQL内建复制功能来最佳化可用性(二)

mysql 使用MySQL内建复制功能来最佳化可用性(二) 第三步:创建相互的主从关系 首先在B机上的my.cnf文件中,在[mysqld]部分中加入'log-bin',接着重新启动mysqld,然后创建可在它的上面执行复制功能的用户帐号,使用: GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY 'password'; 在B机上运行'FLUSH PRIVILEGES'命令,以便装入在加入复制用户后的新的授权表,接着回到A机上,在它的'my

用MySQL内建复制功能来优化可用性

在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试.通过测试我们发现,可以使用这个特性来与备份数据库服务器保持数据同步,这样当主服务器因为某种原因处理失效时,能够使用备份机处理所有的查询.对于这样的要求,配置两台服务器并不困难.我将详细讨论整个处理过程,同时讨论一下当主服务器失效时,如何使用PHP来重定向查询. MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的主-从关系来实现的.其中一个作为

MySQL服务器设置max_user_connections防止连接耗尽,以提高可用性

问题简述/现象及原因 一台MySQL服务器上,有多个数据库,由不同用户使用,相互之间没有或很少关联性.典型的实例是虚拟主机,或者有N多个小网站的某些低频企业应用. 这种环境下,难免有部分应用的质量不高: 出现效率极低的慢查询 -> 后续请求大量被locked排队 -> MySQL服务实时连接数达到最大连接数限制  ->  无法建立新连接 so, 所有相关应用全部挂掉 应对方案 为防止上述情况发生,要为MySQL配置max_user_connections参数.该参数作用是设置单个用户最大

微博平台核心服务接口的可用性

随着2014年元旦微博平台抗峰的顺利通过,2013年微博平台核心服务接口的可用性指标被定格在99.991%. 微博服务可用性提升是2013年微博平台技术团队的一个重要目标,为此,平台内部还特别建立的微博平台的SLA指标体系,其中微博平台核心服务接口(主要以feed服务相关接口为主)的可用性指标为:全年平均接口请求性能<100ms的比例>99.99%,即4个9的可用性指标. 我们的挑战在哪里? 说到feed服务大家都知道,feed服务是微博最核心,最有价值的服务,于是它也是产品经理们花心思最多的

第1期实时在线培训:@淘宝丁奇,如何解决影响MySQL使用的9大问题?

大江南北,一路飞雪. 云栖大会: 1月20日的云栖大会上海峰会成功落幕.但在无数的重磅发布中,我们对DT世界的思考才刚刚开始. 1. 王坚:数据创业要学习小岗村 2. 详解阿里云一站式大数据平台"数加"的首批20款产品 3. 视频回放:与九州云.英伟达.润和软件.优客工场的战略合作 4. 视频回放:60+场高浓度技术实战与行业实践演讲 5.<2015-2016中国云栖创新报告>下载 6.<2015首届云栖奖评选>揭晓 详见云栖大会上海峰会回顾专题. 头条系列:

mysql 高可用方案漫谈(二)

引言: 上一期介绍了对于单个实例主备切换的涉及的业务细节,这次我们更深一步,讨论下真实场景中主库故障,或者网络出现故障时涉及到的问题.如果有不妥的地方,欢迎大家指正. 主库故障: 故障分类 一般的,我们会发现mysql 不可用的原因有几下几类: 1,主机硬件损坏,导致主机hang死,或者操作系统crash.此时客户端连接主机上的mysql进程时的表现是连接超时.因为不会回复ack包.此种情况与网络中断不能回包的表现是一样的,所以对于外部是无法判定是主机down还是网络故障的.我们遇到过raid

数据库安全应用 使用MySQL的23个注意事项

使用MySQL,安全问题不能不注意.以下是MySQL提示的23个注意事项: 1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信. 2.用set password语句来修改用户的密码,三个步骤,先"mysql -u root"登陆数据库系统,然后"mysql> update mysql.user set password=password('newpwd')",最后执行"flush privilege