MySQL学习笔记(二)

一、MySQL日常运维巡检项目

1、性能监控与调优

  • 使用MySQL自身的SHOW STATUSSHOW VARIABLESEXPLAIN等命令,或结合第三方工具(如Percona Toolkit、MySQL Enterprise Monitor、Prometheus + MySQL exporter等)定期收集并分析性能指标,如查询响应时间、CPU利用率、内存使用情况、磁盘I/O、磁盘空间使用、会话数、连接数等,一般公司都有相关的监控平台,DBA有完善的权限管理机制可供其他开发人员查询。
  • 根据监控数据优化索引、查询语句、表结构设计、存储引擎选择等,确保数据库高效运行。
  • 业务方使用一些大的加工任务、要监控长事物执行时间、减少死锁。
  • 定期整理废弃表、大表的删除清理方式、数据库表要有明确的表名命名和使用场景,减少磁盘占用和提升数据库IO性能。

2、备份与恢复

  • 制定并执行备份策略,包括全量备份、增量备份、差异备份等,可使用mysqldump、xtrabackup等工具,可以使用shell脚本+mysqldump来做简单备份,使用云数据库一般会开启配置相关的备份任务,检查是否执行成功。
  • 测试备份的有效性,定期执行恢复演练以确保在真实故障情况下能快速恢复数据。
  • 存储备份文件的安全性,可能需要异地备份或云存储,确保备份文件的安全性。

3、高可用性与容灾

  • 配置主从复制(MySQL replication)以实现数据的实时同步,提升系统的可用性和扩展性。
  • 实施读写分离策略,减轻主库压力、以及主从同步的延迟性和主从同步的模式GTID。
  • 配置MySQL集群如InnoDB Cluster或MySQL Group Replication以增强容错能力、以及云上一主一备一级联的跨AZ容灾、金融级高可用的PXC集群。
  • 使用如Keepalived、Heartbeat等工具配合虚拟IP实现故障切换,确保高可用服务、以及业务连接的高可用方式。
  • 数据库的连接高可用,数据库连接池参数配置连接探活、主备切换的可用性等关键参数。

4、日志管理

  • 定期清理和归档binlog、error log、slow query log等日志文件,以便分析和排查问题。binlog的保存时间,binlog的类型,如以及磁盘空间ROW、STATEMENT和MIXED。
  1. ROW模式‌:

    • 特点:基于变更的数据行进行记录,每一行数据的修改都会被详细记录。
    • 优点:能够清晰地记录每一行数据修改的细节,不容易出现存储过程或触发器调用无法正确复制的问题。
    • 缺点:可能会产生大量的日志内容,尤其是执行大量数据更新时。
    • 应用场景:适用于对数据一致性要求较高的场景,能够确保数据同步的准确性‌。
  2. STATEMENT模式‌:

    • 特点:基于SQL语句级别的记录,记录的是执行的SQL语句而不是每行数据的具体变更。
    • 优点:日志量较小,占用磁盘空间少,主从复制的数据也较少,审计数据库更改更加方便。
    • 缺点:无法用于非确定性语句,可能会出现主从库执行结果不一致的情况。
    • 应用场景:适用于大量数据的更新操作,可以减少从库的延迟‌。
  3. MIXED模式‌:

    • 特点:混合了ROW模式和STATEMENT模式的优点,根据操作类型自动选择最适合的模式。
    • 优点:结合了ROW模式和STATEMENT模式的优点,既能保证数据一致性,又能减少日志量。
    • 应用场景:适用于需要兼顾数据一致性和性能的场景‌。
  • 分析slow query log识别并优化慢查询,一般公司系统会对接各种监控类似Druid的数据库监控、及时关注处理。

5、安全性管理

  • 设计和实施用户权限管理策略,最小化权限授予原则。
  • 定期更改数据库用户的密码,并使用强密码策略。
  • 开启审计功能,监控可疑行为。
  • 使用SSL/TLS加密数据传输通道。

6、容量规划与扩展

  • 根据业务发展预测和评估数据库的增长趋势,适时进行容量扩展、包括实例数目。
  • 监测表空间使用情况,合理规划磁盘空间分配。
  • 数据库的连接资源监控、如最大连接数max_connetions

7、系统维护

  • 定期检查操作系统状态、内核版本、glibc版本与MySQL版本之间的兼容性、检查业务使用版本
  • 优化MySQL配置文件(my.cnf),调整系统参数以适应业务变化。
  • 协同运维团队,更新系统补丁和MySQL补丁,确保安全更新及时到位。

8、应急响应

  • 建立和完善应急预案,应对可能出现的各种异常状况,如宕机、数据丢失、性能瓶颈、主从同步失败、延迟过大、CPU彪高、占用网络带宽高、以及扩容问题等问题。
  • 定期进行灾难恢复演练,确保在紧急情况下能够迅速恢复服务。
相关推荐
abandondyy1 小时前
MySQL---主从复制和读写分离
数据库·mysql
DEARM LINER2 小时前
mysql 巧妙的索引
数据库·spring boot·后端·mysql
不惑_3 小时前
Redis与MySQL双写一致性的缓存模式
redis·mysql·缓存
伏虎山真人5 小时前
开源数据库 - mysql - 组织结构(与oracle的区别)
数据库·mysql·开源
Y.O.U..6 小时前
STL学习-容器适配器
开发语言·c++·学习·stl·1024程序员节
TT哇6 小时前
【Java】数组的定义与使用
java·开发语言·笔记
黑叶白树8 小时前
包和模块(上) python复习笔记
开发语言·笔记·python
T_Y99438 小时前
selenium学习日记
学习·selenium·测试工具
L_Z_J_I8 小时前
超子物联网HAL库笔记:多指针定位+循环收发缓冲区方案设计
笔记
我是水怪的哥8 小时前
一些有用的科研数据网站
经验分享·笔记