1. 线程 1.1. MySQL服务端是多线程软件。它的每个组件都使用线程 1.2. 每个线程至少有两个唯一标识符 1.2.1. 操作系统线程ID 1.2.2. MySQL内部线程ID 2. 对象类型 2.1. OBJECT_TYPE列 2.2. EVENT 2.3. FUNCTION 2.4. PROCEDURE 2.5. TABLE 2.6. TRIGGER 3. Performance Schema 3.1. 一个经常受到批评的特性 3.1.1. 早期版本的MySQL对其的实现不够理想,导致资源消耗较高 3.2. 提供了有关MySQL服务器内部运行的操作上的底层指标 3.3. 应该启用Performance Schema,按需动态地启用插桩和消费者表,通过它们提供的数据可以解决可能存在的任何问题——查询性能、锁定、磁盘I/O、错误等 3.4. 充分利用sys schema是解决常见问题的捷径。这样做将为你提供一种可以直接从MySQL中测量性能的方法 3.5. 程序插桩(instrument) 3.6. 消费者表(consumer) 3.7. 测量结果存储在Performance Schema数据库的多个表中 3.7.1. MySQL 8.0.25社区版的performance_schema中包含110个表 3.8. 摘要是一种通过删除查询中的变量来聚合查询的方法 3.9. 实例表(Instance) 3.9.1. 实例是指对象实例,用于MySQL安装程序 3.10. 设置表(Setup) 3.10.1. 用于performance_schema的运行时设置 3.11. metadata_locks表保存关于元数据锁的数据 3.12. Performance Schema收集的数据保存在内存中 3.13. 标准MySQL发行版包括一个和performance_schema数据配套使用的sys schema,它全部基于performance_schema上的视图和存储例程组成 3.14. 要启用或禁用Performance Schema,可以将变量performance_schema设置为ON或OFF 3.15. 启用或禁用performance_schema插桩 3.15.1. 使用setup_instruments表 3.15.1.1. 使用UPDATE语句更改instruments表的对应列值 3.15.2. 调用sys schema中的ps_setup_enable_instrument存储过程 3.15.2.1. ps_setup_enable_instrument 3.15.2.2. ps_setup_disable_instrument 3.15.3. 使用performance-schema-instrument启动参数 3.15.3.1. 变量支持performance-schema-instrument='instrument_name=value'这样的语法 3.16. 启用或禁用消费者表 3.16.1. 使用Performance Schema中的setup_consumers表 3.16.2. 调用sys schema中的ps_setup_enable_consumer或ps_setup_disable_consuper存储过程 3.16.3. 使用performance-schema-consumer启动参数 3.17. 事务执行期间会一直持有元数据锁 3.17.1. 要启用元数据锁监测,需要启用wait/lock/meta-data/sql/mdl插桩 4. 升级MySQL 4.1. 新版本和稳定性之间的权衡 4.1.1. MySQL社区的长期成员Stewart Smith创造了著名的dot-20规则 4.1.2. 一款软件在dot-20版本发布之前永远不会真正成熟。 4.2. 进行版本升级是一个有风险的过程 4.2.1. 包括备份所有数据、测试更改,然后运行升级过程 4.3. 大版本的升级可能会让人望而却步 4.4. 升级的原因 4.4.1. 安全漏洞 4.4.1.1. 随着时间的推移,这种可能性会越来越小,但人们仍然有可能在MySQL中发现安全漏洞 4.4.2. 已知的bug 4.4.2.1. 在生产环境中遇到未知或无法解释的行为时,我们建议你确定当前运行的MySQL版本,然后阅读后续版本到最新版本的发布说明 4.4.3. 新功能 4.4.3.1. MySQL并不总是遵循严格的主要(major)/次要(minor)/点(point)的版本发布策略来添加功能 4.4.4. MySQL支持周期的终止 4.4.4.1. 建议保持在受支持的版本内,以便至少仍支持安全修复 4.5. 升级步骤 4.5.1. 制订一个计划 4.5.2. 阅读该版本的发行说明,包括任何微小的更改 4.5.3. 阅读官方文档中的升级说明 4.5.4. 对新版本进行测试 4.5.5. 最后执行升级 4.6. 降级 4.6.1. 对于所有主要和次要的版本变更(例如,从8.0降级到5.7或从5.7降级到5.6),降级的唯一方法是恢复升级前的备份 4.6.2. 自从MySQL 8.0以来,不能再降级点发布版本 4.6.3. 如果你运行的是8.0.25版本,除非导出所有数据并重新导入,否则不能再降级到8.0.24 4.7. 工具 4.7.1. Percona Toolkit提供的工具pt-upgrade 4.8. 最好的使用方法是首先使用慢速查询日志或二进制日志收集最关注的查询 4.9. 与直接登录到每台服务器相比,自动化可以使升级过程易于重复,并且效率更高,而且因出现拼写错误或者到错误的服务器上执行升级而导致意外停机的概率也更低 5. Kubernetes 5.1. 在Kubernetes技术流行之前,许多公司要么完全定制技术栈来供应和管理虚拟机和物理服务器,要么只完成了将资源生命周期管理一小部分的开源项目黏合在一起 5.2. MySQL不应该是在组织中Kubernetes上运行工作负载的第一个实验对象