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彪高、占用网络带宽高、以及扩容问题等问题。
  • 定期进行灾难恢复演练,确保在紧急情况下能够迅速恢复服务。
相关推荐
老王熬夜敲代码18 分钟前
解决IP不够用的问题
linux·网络·笔记
polarislove021431 分钟前
8.1 时钟树-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
QT 小鲜肉41 分钟前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
qualifying1 小时前
MySQL——表的操作
数据库·mysql
羽沢311 小时前
ECharts 学习
前端·学习·echarts
风行男孩1 小时前
stm32基础学习——OLED显示屏的基本使用
stm32·嵌入式硬件·学习
学Linux的语莫2 小时前
mysql主从同步(复制)搭建
数据库·mysql
MySQL实战2 小时前
MySQL 在哪些场景下不会写 binlog
mysql
苹果酱05672 小时前
解决linux mysql命令 bash: mysql: command not found 的方法
java·vue.js·spring boot·mysql·课程设计
hetao17338372 小时前
2025-12-21~22 hetao1733837的刷题笔记
c++·笔记·算法