MySQL8018个管理相关的新特性

最近在梳理MySQL8.0的新特性,以下是从中选取的18个管理相关的新特性。

这18个新特性涉及的范围比较广,包括安装、备份、升级、DDL、慢日志、迁移、日常维护等。

掌握这些新特性有助于我们更好地使用MySQL8.0。

1.可持久化全局变量

持久化后的变量会存储在数据目录下的mysqld-auto.cnf文件中。

以下是持久化变量相关的命令。

持久化后的变量即可在mysqld-auto.cnf中查看,也可通过performance_schema.persisted_variables查看。

2.可设置管理IP和端口

管理IP通过admin_address参数设置,管理端口通过admin_port参数设置。

管理连接的数量没有限制,但仅允许具有SERVICE_CONNECTION_ADMIN权限的用户连接。

默认情况下,管理接口没有自己的独立线程,可将create_admin_listener_thread设置为ON开启。

建议设置管理IP和端口,这样即使连接数满了,也不用担心登陆不上实例去调整max_connections的大小。

3.安装包

从MySQL8.0.16开始,MySQL针对通用二进制包(Linux-Generic)提供了一个最小化版本。

最小化版本移除了debug相关的二进制文件。

从MySQL8.0.31开始,通用二进制包还提供了Linux-Generic(glibc2.17)(ARM,64-bit)版本的下载。

4.资源组(ResourceGroups)

资源组,可用来控制组内线程的优先级及其能使用的资源,目前,能被管理的资源只有CPU。

以下是资源组的几种常用方式。

5.ALTERDATABASE支持READONLY选项

设置为只读模式的库将禁止任何更新操作。适用于数据库迁移场景。

6.设置SHOWPROCESSLIST的实现方式

SHOWPROCESSLIST默认是从线程管理器中获取线程信息。这种实现方式会持有全局互斥锁,对数据库的性能会有一定的影响。

所以一般都推荐使用performance_schema.processlist,这种方式不会持有全局锁。

在MySQL8.0.22中,引入了performance_schema_show_processlist参数,用来设置SHOWPROCESSLIST的实现方式。设置为ON,则会使用performance_schema.processlist这种实现方式,默认为OFF。

7.DDL

在MySQL8.0.27中,引入了innodb_ddl_threads和innodb_ddl_buffer_size提升索引的创建速度。

8.秒级加列

从MySQL8.0.12开始,OnlineDDL开始支持INSTANT算法。

使用这个算法进行加列操作,只需修改表的元数据信息,操作瞬间就能完成。不过在MySQL8.0.29之前,列只能添加到表的最后位置。

从MySQL8.0.29开始,则移除了这一限制,新增列可以添加到表的任何位置。

不仅如此,从MySQL8.0.29开始,删列操作也可以使用INSTANT算法。

9.提升了DROPTABLE,TRUNCATETABLE,DROPTABLESPACE操作的性能

这个优化是MySQL8.0.23引入的。在之前的版本中,这些操作会遍历整个BufferPool,删除对应表(或表空间)的数据页。在遍历的过程中,会加锁(latch)。加锁期间,会阻塞所有的DML操作。

注意,阻塞时间与BufferPool的大小有关,与表的大小无关。BufferPool越大,遍历时间会越长,相应的,阻塞时间也会越久。

优化后,待删除的数据页会做异步处理。

10.操作系统查看MySQL的线程名

从MySQL8.0.27开始,通过ps命令可以直接查看MySQL的线程名。

11.控制连接的内存使用量

从MySQL8.0.28开始,引入了connection_memory_limit参数限制单个用户连接可以使用的最大内存量,global_connection_memory_limit参数限制所有用户连接可以使用的内存总量。

注意,这里说的内存不包括InnoDBBufferPool。

12.慢日志

在MySQL8.0.14中,引入了log_slow_extra参数,可以将更详细的信息记录到慢日志中。

看下面这个示例,对比下参数开启前后的输出。

除此之外,SETtimestamp现在记录的是语句的开始时间,不再是语句的结束时间。

13.备份

在MySQL8.0.30中,mysqldump新增了--mysqld-long-query-time选项,允许自定义long_query_time的会话值。

这样可避免将备份相关的查询语句记录在慢日志中。

14.克隆插件

克隆插件(ClonePlugin)是MySQL8.0.17引入的一个重大特性。

有了克隆插件,只需一条命令就能很方便地添加一个新的节点,无论是在组复制还是普通的主从环境中。

15.备份锁

注意,引入备份锁是为了阻塞备份过程中的DDL,不是为了替代全局读锁。

之所以XtraBackup8.0及MySQLEnterpriseBackup在备份的过程中不再加全局读锁,主要是因为performance_schema.log_status的引入。

16.数据库升级

数据库升级无需再执行mysql_upgrade脚本。升级逻辑已内置到mysqld的启动流程中。

升级之前,可通过MySQLShell中的util.checkForServerUpgrade()检查实例是否满足升级条件。

17.MySQL客户端

mysql客户端默认会开启--binary-as-hex。

开启后,mysql客户端会使用十六进制表示法显示二进制数据。例如,

如果要禁用十六进制表示法,需设置--skip-binary-as-hex。

18.可通过RESTART命令重启MySQL实例

能使用RESTART命令的前提是mysqld是通过mysqld_safe或systemctl等守护进程启动的。




转载请注明:http://www.aierlanlan.com/rzfs/6270.html