mysql5.7新特性

一、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 t1; //显示表结构
使用公用表空间优点:节约内存,可以将表空间文件放在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)。

发布了404 篇原创文章 · 获赞 205 · 访问量 227万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章