破产码农
IT圈最会讲故事的网红 · 南山彭于晏
MySQL 8.0的最新版本8.0.22已发布。姜老师也多次强调,现在是升级8.0版本的好时机了。
一方面,8.0这个版本经过多次迭代已经比较成熟,另一方面,8.0拥有了很多实用的企业级特性。
今天让姜老师带大家来看看8.0.22版本中,最激动人心的Top 5功能。
SHOW PROCESSLIST优化
8.0.22版本对命令SHOW PROCESS LIST进行了优化。
原来的实现机制会去遍历所有线程,这时需要持有一把全局大锁。
当生产环境的线程非常多时,这可能会产生性能波动,影响业务的耗时上升。
8.0.22新增了一种实现,即SHOW PROCESSLIST直接从PERFORMANCE_SCHEMA库中去读取,这样就避免了锁的持有,从而提升了系统的稳定性。
官方Worklog:https://dev.mysql.com/worklog/task/?id=9090
BTW,对于MySQL 5.7,SHOW PROCESSSLIT怎么优化呢?
只读库功能(Read Only Schema)
之前版本的MySQL仅支持实例级别设置为只读。
而8.0.22版本新增了设置指定库为只读。这样方便分布式架构下的数据迁移工作。
ALTER {DATABASE | SCHEMA} [db_name]
READ ONLY [=] {DEFAULT | 0 | 1}
官方Worklog:https://dev.mysql.com/worklog/task/?id=13369
新增Error Log表
MySQL错误日志Error Log是用于分析数据库实例状态的重要文件。
之前查询错误日志文件需要登录到服务器,对于大规模运维来说,安全性和效率都较为一般。
8.0.22在performance_schema库下,新增了一张表errorlog,用户未来可直接查询此表即可。
mysql> SELECT * FROM performance_schema.error_log\G
*************************** 1. row ***************************
LOGGED: 2020-08-06 09:25:00.338624
THREAD_ID: 0
PRIO: System
ERROR_CODE: MY-010116
SUBSYSTEM: Server
DATA: mysqld (mysqld 8.0.23) starting as process 96344
*************************** 2. row ***************************
LOGGED: 2020-08-06 09:25:00.363521
THREAD_ID: 1
PRIO: System
ERROR_CODE: MY-013576
SUBSYSTEM: InnoDB
DATA: InnoDB initialization has started....
官方Worklog:https://dev.mysql.com/worklog/task/?id=13681
异步复制自动FAILOVER新节点
8.0.22版本新增了异步复制的自动FAILOVER机制,即当复制源节点当即是,异步节点可以自动地从另一个复制源进行复制。
这是一个在生产环境中比较实用的功能,如果能mysqlbinlog远程拉二进制日志也能实现类似机制就更好了。这样在做增量备份时,就更为简单。
CHANGE MASTER TO ...
SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}
官方Worklog:https://dev.mysql.com/worklog/task/?id=12649
MySQL Router连接性能提升
作为一款中间件产品,即便定位是轻量级,MySQL Router刚开始的连接性能真值得吐槽。姜老师甚至觉得是实习生开发的产品。
例如之前用SELECT机制,连接被限制为最多1024。
后面的版本更新为了POLL机制,连接数上限可以设置为5000。
8.0.22版本进一步优化,使用非阻塞的EPOLL异步机制,连接数上限可达5K,甚至更高。
即MySQL Router这款中间件产品本身解决了10K问题。
官方Worklog:https://dev.mysql.com/worklog/task/?id=10703
MySQL 8.0.22版本中,你最最兴奋的特性是什么呢?赶紧留言评论吧。
-----------------------
公众号:破产码农(ID:manongBR)
B站:Jiang老师
微博:破产码农
知乎:破产码农