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彪高、占用网络带宽高、以及扩容问题等问题。
  • 定期进行灾难恢复演练,确保在紧急情况下能够迅速恢复服务。
相关推荐
Frank学习路上4 分钟前
【IOS】XCode创建firstapp并运行(成为IOS开发者)
开发语言·学习·ios·cocoa·xcode
Chef_Chen1 小时前
从0开始学习计算机视觉--Day07--神经网络
神经网络·学习·计算机视觉
X_StarX3 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
MingYue_SSS3 小时前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
巴伦是只猫4 小时前
【机器学习笔记 Ⅱ】1 神经网络
笔记·神经网络·机器学习
weixin_437398214 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
慕y2744 小时前
Java学习第十六部分——JUnit框架
java·开发语言·学习
peace..5 小时前
温湿度变送器与电脑进行485通讯连接并显示在触摸屏中(mcgs)
经验分享·学习·其他
teeeeeeemo5 小时前
回调函数 vs Promise vs async/await区别
开发语言·前端·javascript·笔记
软件黑马王子6 小时前
C#系统学习第八章——字符串
开发语言·学习·c#