前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何保证数据库的可靠性?

如何保证数据库的可靠性?

作者头像
MySQLSE
发布2023-11-13 19:11:57
2640
发布2023-11-13 19:11:57
举报
文章被收录于专栏:MySQL解决方案工程师

什么是可靠性?系统的可靠性表现为在一定期间内,用户可以预测其发生的行为,也就是说,在一定的期间内,系统不会发生计划外的行为。例如,服务器运行时不会出现意外的停机、应用程序的性能符合预期、计划的停机很少发生等等。

在经常发生变化的环境中,维持系统的可靠性非常困难。例如,受业务影响,应用程序经常发生更改、伴随着用户量的增加,使用模式发生改变、操作系统升级、硬件升级所带来的环境发生变化都会导致系统的稳定性降低。

维护系统的可靠性需要做到以下几点:

  • 衡量管理的系统
    • 测量系统正常运行时的变量值,可以为发布系统的基线做准备。
    • 当系统发生变化时(软硬件升级、配置发生更改、基础架构发生更改等等),需要对照基线再次对变量的值进行测量。
    • 定期测量系统变量,对基线进行升级。其原因在于应用模式发生更改,并且数据量会随着时间的增加而增长。
    • 当遇到问题时,与基线进行对比。如果用户能够精确定位一个问题,解决方案往往变得显而易见。
  • 发布基线

基线的目的是定义什么是正常的,当遇到问题时可以和基线进行对比。随着时间的发展,用户不断调整的基线可以为容量规划提供有效的帮助。

通常情况下,用户需要测量操作系统的指标包括文件系统、内存和CPU的使用率。在Linux上,可以使用top、iosata、vmsata、syssata、sar进行测量。Windows上,用户可以使用资源管理器和性能监视对这些指标进行测量。

当用户使用MySQL时,需要查看MySQL的状态和配置。可以通过“SHOW PROCESSLIST”和“sys.session”查看运行中的语句,也可以通过“mysqladmin extended-status”查看状态变量值。

此外,基线中包括应用程序概要文件,用以记录应用程序在不同使用场景的应答时间,包括登录、检索、创建、读取、更新及删除等。

  • 应用程序概要文件

应用程序概要文件记录发生指定事件的时间、测量每部分操作发生的时间、应用程序是与多个开发环境集成还是作为插件?以及显示对数据库性能故障排除是否有用(假设调用数据库占用了函数执行的5%的时间,用户则可以对该函数的其他部分进行故障排除来获得性能提升)

当用户将应用程序概要文件做为基线的一部分时,可以看到每个功能或用例的关键部分的持续时间。这使得用户可以查看应用程序的大部分延迟是在调用数据库、建立连接时出现的,还是由于其他一些应用程序操作造成的。

数据库为什么会“坏掉”?

数据库发生故障的原因非常多,通常会包括如下:

  • 服务器
    • 存储
    • 网络接口
    • 电源、CPU、内存
  • 连接
    • 网络基础架构
    • 防火墙
    • 负载均衡
  • 应用程序软件
    • 面向用户的组件
    • 框架的稳定性
  • 不可抗力

此外,还需要考虑服务器硬件、虚拟环境、操作系统、共存的应用程序、网络故障及应用程序故障等因素。

  • 服务器硬件
    • 机房是数据库环境中最重要的一部分,确保机房的安全性和可靠性。
    • 使用冗余的硬件,减轻服务器故障的风险。包括电源、RAID、网络适配器。
    • CPU、内存等潜在的损坏风险。
  • 虚拟环境
    • 与其他客户机共享硬盘、内存、网络接口,及CPU。容易受到资源争用影响。
    • 受其他客户机资源分配影响,导致应用程序持续超时。
  • 操作系统
    • 操作系统对于运行MySQL的服务器来说至关重要,操作系统故障会直接导致MySQL故障。
    • 操作系统及时更新、打补丁。
    • 考虑文件系统的性能和安全机制对MySQL的影响。
    • 监视操作系统的日志及变量。
  • 共存的应用程序
    • 安全性
      • 应用程序的漏洞可能允许攻击者访问其他文件,包括MySQL的文件。
      • 应用程序的错误可能会导致性能降级,引发不正常的磁盘访问。
    • 性能
      • 应用程序与MySQL共享CPU内存等会影响MySQL的性能。
  • 网络故障
    • MySQL在以下方面使用网络通信:
      • 客户端和应用程序的连接
      • 复制
      • 管理连接
      • 监视软件
    • 其他网络活动干扰MySQL
      • 操作系统通过网络备份
      • 应用程序通信
      • 文件传输及其他服务
    • 确保网络硬件不会形成单点故障
  • 应用程序故障
    • 应用程序的代码导致许多性能问题。例如,读取大文件、调用远程网络服务,对大数据集使用低效的算法排序等等。
    • 使用应用程序概述文件识别性能问题。
    • 应用程序的错误会导致产生错误的数据,带来安全风险。

基于上述原因,用户在使用MySQL数据库时,需要避免发生类似事件。这是实现系统稳定性的一个最佳实践。

感谢关注“MySQL解决方案工程师”!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档