网站建设知识
mysql5.7新特性
2025-07-22 10:01  点击:0

一、MySQL服务功能增强 1.数据库初始化方式变更 mysql 5.7之前通过初始化脚本初始化: scripts/mysql_install_db --user=mysql\ --datadir=/var/lib/mysql \ --socket=/var/lib/mysql/mysql.sock \ --pid-file=/var/run/mysqld/mysqld.pid \ --basedir=/usr mysql之后: bin/mysqld --initialize --user=mysql \ --datadir=/var/lib/mysql \ --socket=/var/lib/mysql/mysql.sock \ --pid-file=/var/run/mysqld/mysqld.pid \ --basedir=/usr 安装后,通过service mysqld start 启动服务,会自动初始化执行初始化脚本,日志:

会生成一个root的默认密码:=1l3cehiMfRe 需要使用该密码登录后,修改root密码,再以前版本初始化数据库后root密码是空的。 初始化后,数据目录:

初始化后使用,使用如下命令启动: nohup mysqld_safe –defaults-file=/etc/my.cnf &

2,为表增加计算列 mysql 5.7之前需要通过触发器实现,如表t_temp(a int , b int ,c int ),其中c存储为a+b之和,当然通过视图的方式可以实现。

mysql 5.7之后,通过计算列实现在create table 或 alter table 语句增加计算列 col_name data_type[generated always] as (experssion) [virtual | stored] [unique [key]] [comment comment] [[not] null] [[primary] key] 如: create table t (id int auto_increment not null, c1 int,c2 int,c3 int as (c1+c2), primary key(id))

3,引入json列数据类型及相关函数 mysql 5.7之前,如果存储json类型(json对象和json数组),只能存储在varchar和text等字符类型的列中存储,并通过存储进行解析json字符串。 mysql 5.7之后,增加json列类型,以及json开头的相关处理函数,如:

json_type json_object 转换为json对象 json_object('name','tom','age',20)-->{"name":"tom","age":20} json_merge json_array 转换为json数组 json_array('a','b',now()) -->["a","b","2016-05-06 10:00:01.000000"] 等

4,内建中文全文索引

二、.Replication相关增强

1,支持多源复制 可以分表之后汇总

2,基于库或逻辑锁多线程复制 mysql5.6 开始支持多线程复制,但是针对每一个库一个线程复制 mysql5.7后对多线程复制功能进行了加强,增加slave_parallel_type参数可以控制并发同步是基于database还是logical_clock

3,在线变更复制方式 mysql5.7之前,要把基于日志点的复制方式改为基于gtid的复制方式,或者把基于gtid的复制方式改为基于日志点的复制方式,必须要重启master服务

mysql5.7之后,允许在线变更复制方式,而无需重启master服务

在线变更步骤: 在slave服务器上 (1) SET @@GLOBAL.ENFORCE_GTID_ConSISTENCY=WARN 执行完后要保证再所有服务器都没有警告发送 (2) SET @@GLOBAL.ENFORCE_GTID_ConSISTENCY=ON (3) SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE (4) SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE

(5) SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

(6) SET @@GLOBAL.GTID_MODE =ON;并加gtid-mode=on到my.cnf (7) STOP SLAVE [FOR CHANNEL 'channel']; CHANGE MASTER TO MASTER_AUTO_POSITION=1 [FOR CHANNEL 'channel']; START SLAVE [FOR CHANNEL 'channel'];

三、 InnoDB引擎增强 1.支持缓池区大小在线变更

之前需要修改配置文件my.cnf ,innodb_buffer_pool大小重新启动服务器 mysql5.7之后可以在线调整innodb_buffer_pool参数大小

innodb_buffer_pool_size 缓池区大小 innodb_buffer_pool_chunk_size 缓池区块的大小 默认128M innodb_buffer_pool_instances 缓池区实例的个数 innodb_buffer_pool_size 必须是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances倍数,如果不是mysql也会自动取整为倍数。

修改缓冲池的大小,会对运行的事务有影响,尽量下少操作的情况下修改。

2.增加innodb_buffer_pool导入导出功能 增加如下参数控制innodb_buffer_pool的导入导出: innodb_buffer_pool_filename 如果开启InnoDB预热功能,停止MySQL服务时,MySQL将InnoDB缓冲池中的热数据保存到数据库根目录中,默认文件名为ib_buffer_pool. innodb_buffer_pool_dump_pct 导出缓存池的百分比 默认25%

innodb_buffer_pool_dump_now 用手工方式立刻做一次把热数据dump到本地磁盘。 innodb_buffer_pool_dump_at_shutdown 默认为关闭OFF。如果开启该参数,正常停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。 innodb_buffer_pool_load_now 默认为关闭OFF。如果开启该参数,停止MySQL服务时,以手动方式立刻做一次将InnoDB缓存池中的热数据保存到本地硬盘。 innodb_buffer_pool_load_abort 默认为关闭OFF。如果开启该参数,即便开启InnoDB预热功能,启动MySQL服务时,MySQL也不会将本地硬盘的热数据加载到InnoDB缓冲池中。 innodb_buffer_pool_load_at_startup 默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。

3.支持为innodb表建立表空间 mysql5.7之前,具有系统表空间以及可以为每个表建一个独立的表空间。 mysql5.7之后,支持create tablespace 为一个或多个表建立公用的表空间

create tablespace ts1 add datafile 'ts1.ibd' engine=innodb;

即会在数据库数据目录下建立ts1.ibd表空间 使用表空间 在创建表的时候指定 表空间 create table t1 (....) tablespace ts1; show create table t

1; //显示表结构 使用公用表空间优点:节约内存,可以将表空间文件放在ssd磁盘,提高速度。 缺点:和系统表空间一样,不利于磁盘空间回收,即便删除表,也不会释放。

四、安全及管理方面增强 1.不再支持old_password认证 plugin: mysql_native_password authentication_string: *6691484EA6B50DDDE1926A220DA01FA9E575C18A password_expired: N password_last_changed: 2016-05-07 08:04:47 password_lifetime: NULL account_locked: N

2.增加账户默认过期时间 通过阐述default_password_lifetime控制,单位天,0 标识关闭

通过语句修改过期时间 ALTER USER 'root'@localhost' PASSWORD EXPIRE INTERVAL 90 DAYS;

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT;

3.增强对账户的管理功能 查看帮助:help create user; CREATE USER 'jeffrey'@'localhost' IDENTIFIED WITH sha256_password BY 'new_password' PASSWORD EXPIRE INTERVAL 180 DAY; 指定密码过期时间和加密方式

4.增加sys管理数据库表 创建多张视图,方便管理员维护管理,真实数据源来源:performance_schema 再mysql5.7以后不能关闭 performance_schema库,如 global_status、global_variables全局参数也迁移到其中(以前位于information_schema)。