一、MySQL日常运维巡检项目
1、性能监控与调优
- 使用MySQL自身的
SHOW STATUS
、SHOW VARIABLES
、EXPLAIN
等命令,或结合第三方工具(如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。
ROW模式:
- 特点:基于变更的数据行进行记录,每一行数据的修改都会被详细记录。
- 优点:能够清晰地记录每一行数据修改的细节,不容易出现存储过程或触发器调用无法正确复制的问题。
- 缺点:可能会产生大量的日志内容,尤其是执行大量数据更新时。
- 应用场景:适用于对数据一致性要求较高的场景,能够确保数据同步的准确性。
STATEMENT模式:
- 特点:基于SQL语句级别的记录,记录的是执行的SQL语句而不是每行数据的具体变更。
- 优点:日志量较小,占用磁盘空间少,主从复制的数据也较少,审计数据库更改更加方便。
- 缺点:无法用于非确定性语句,可能会出现主从库执行结果不一致的情况。
- 应用场景:适用于大量数据的更新操作,可以减少从库的延迟。
MIXED模式:
- 特点:混合了ROW模式和STATEMENT模式的优点,根据操作类型自动选择最适合的模式。
- 优点:结合了ROW模式和STATEMENT模式的优点,既能保证数据一致性,又能减少日志量。
- 应用场景:适用于需要兼顾数据一致性和性能的场景。
- 分析slow query log识别并优化慢查询,一般公司系统会对接各种监控类似Druid的数据库监控、及时关注处理。
5、安全性管理
- 设计和实施用户权限管理策略,最小化权限授予原则。
- 定期更改数据库用户的密码,并使用强密码策略。
- 开启审计功能,监控可疑行为。
- 使用SSL/TLS加密数据传输通道。
6、容量规划与扩展
- 根据业务发展预测和评估数据库的增长趋势,适时进行容量扩展、包括实例数目。
- 监测表空间使用情况,合理规划磁盘空间分配。
- 数据库的连接资源监控、如最大连接数max_connetions
7、系统维护
- 定期检查操作系统状态、内核版本、glibc版本与MySQL版本之间的兼容性、检查业务使用版本
- 优化MySQL配置文件(my.cnf),调整系统参数以适应业务变化。
- 协同运维团队,更新系统补丁和MySQL补丁,确保安全更新及时到位。
8、应急响应
- 建立和完善应急预案,应对可能出现的各种异常状况,如宕机、数据丢失、性能瓶颈、主从同步失败、延迟过大、CPU彪高、占用网络带宽高、以及扩容问题等问题。
- 定期进行灾难恢复演练,确保在紧急情况下能够迅速恢复服务。