加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中5.6与5.7有什么区别

发布时间:2023-05-22 14:21:56 所属栏目:MySql教程 来源:
导读:给大家分享一下mysql中5.6与5.7有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
给大家分享一下mysql中5.6与5.7有哪些区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
 
mysql中5.6与5.7的区别:1、5.7版本提供了json格式数据,而5.6版本没有提供json版本数据;2、5.7版本支持多主一从,而5.6版本不支持多主一从;3、5.7版本初始化数据时在bin目录下,而5.6版本在script目录。
 
本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。
 
一、编译安装区别
 
Mysql5.7版本更新后有很多变化,比如json等,连安装都有变化,他安装必须要BOOST库。mysql的官网源码有带boost库的源码和不带boost库的源码两种,不带boost库源码的需要单独安装boost。
 
mysql5.7 支持多主一从 ,做高可用方式不同
 
下载软件
 
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
 
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
 
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
 
带boost的mysql源码安装
 
1.安装依赖包
 
yum -y install make gcc-c++ cmake bison-devel  ncurses-devel   bison perl perl-devel  perl perl-devel
 
2.编译安装
 
cd /usr/local/mysql-5.7.20/
 
cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
 
make
 
make install
 
不带boost的mysql源码安装
 
1.安装依赖包
 
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
 
2.编译安装
 
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 \
 
-DMYSQL_DATADIR=/application/mysql-5.7.20/data \
 
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock \
 
#开启BOOST库
 
-DDOWNLOAD_BOOST=1 \
 
#指定boost库位置
 
-DWITH_BOOST=/usr/local/boost_1_59_0 \
 
-DDEFAULT_CHARSET=utf8 \
 
-DDEFAULT_COLLATION=utf8_general_ci \
 
-DWITH_EXTRA_CHARSETS=all \
 
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
 
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
 
-DWITH_ZLIB=bundled \
 
-DWITH_SSL=bundled \
 
-DENABLED_LOCAL_INFILE=1 \
 
-DWITH_EMBEDDED_SERVER=1 \
 
-DENABLE_DOWNLOADS=1 \
 
-DWITH_DEBUG=0
 
make
 
make install
 
二、初识化时的区别
 
#【5.6版本初识化】
 
cd /usr/local/mysql/scripts/
 
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
 
#【5.7版本初识化】这种初始化方式,默认密码在一个文件中
 
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
 
–initialize 生成一个随机密码写到一个文件
 
–initialize-insecure 不生成随机密码
 
三、功能和特性的区别
 
安全性
 
用户表 mysql.user 的 plugin字段不允许为空, 默认值是mysql_native_password,而不是 mysql_old_password,不再支持旧密码格式;
 
增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式;
 
增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式;
 
提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。
 
灵活性
 
MySQL数据库从5.7.8版本开始,也提供了对JSON的支持。
 
可以混合存储结构化数据和非结构化数据,同时拥有关系型数据库和非关系型数据库的优点
 
能够提供完整的事务支持
 
generated column是MySQL 5.7引入的新特性,所谓generated column,就是数据库中这一列由其他列计算而得
 
易用性
 
在MySQL 5.7 之前,如果用户输入了错误的SQL语句,按下 ctrl+c ,虽然能够”结束”SQL语句的运行,但是,也会退出当前会话,MySQL 5.7对这一违反直觉的地方进行了改进,不再退出会话。
 
MySQL 5.7可以explain一个正在运行的SQL,这对于DBA分析运行时间较长的语句将会非常有用。
 
sys schema是MySQL 5.7.7中引入的一个系统库,包含了一系列视图、函数和存储过程, 该项目专注于MySQL的易用性。
 
可用性
 
在线设置 复制的过滤规则 不再需要重启MySQL,只需要停止SQLthread,修改完成以后,启动SQLthread。
 
在线修改buffer pool的大小。
 
Online DDL MySQL 5.7支持重命名索引和修改varchar的大小,这两项操作在之前的版本中,都需要重建索引或表。
 
在线开启GTID ,在之前的版本中,由于不支持在线开启GTID,用户如果希望将低版本的数据库升级到支持GTID的数据库版本,需要先关闭数据库,再以GTID模式启动,所以导致升级起来特别麻烦。
 
性能
 
临时表的性能改进。
 
临时表只在当前会话中可见
 
临时表的生命周期是当前连接(MySQL宕机或重启,则当前连接结束)
 
只读事务性能改进。
 
MySQL 5.7通过 避免为只读事务分配事务ID ,不为只读事务分配回滚段,减少锁竞争等多种方式,优化了只读事务的开销,提高了数据库的整体性能。
 
-加速连接处理
 
在MySQL 5.7之前,变量的初始化操作(THD、VIO)都是在连接接收线程里面完成的,现在将这些工作下发给工作线程,以减少连接接收线程的工作量,提高连接的处理速度。这个优化对那些频繁建立短连接的应用,将会非常有用。
 
复制性能的改进 (支持多线程复制(Multi-Threaded Slaves, 简称MTS)
 
MySQL的默认配置是库级别的并行复制,为了充分发挥MySQL 5.7的并行复制的功能,我们需要将slave-parallel-type配置成LOGICAL_CLOCK。
 
支持多源复制(Multi-source replication)
 
严格性改变
 
默认启用 STRICT_TRANS_TABLES 模式。
 
对 ONLY_FULL_GROUP_BY 模式实现了更复杂的特性支持,并且也被默认启用。
 
其他被默认启用的sql mode还有 NO_ENGINE_SUBSTITUTION。
 
默认参数的改变
 
默认binlog格式调整为ROW格式
 
默认binlog错误后的操作调整为ABORT_SERVER
 
在先前的选项下(binlog_error_action=IGNORE_ERROR),如果一个错误发生,导致无法写入binlog,mysql-server会在错误日志中记录错误并强制关闭binlog功能。这会使mysql-server在不记录binlog的模式下继续运行,导致从库无法继续获取到主库的binlog。
 
默认开启mysql崩溃时的binlog安全。
 
默认调低slave_net_timeout。
 
安装不同
 
mysql_install_db已经不再推荐使用了,建议改成mysqld --initialize 完成实例初始化。如果 datadir 指向的目标目录下已经有数据文件,则会有[ERROR] Aborting;
 
在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中;新用户登入后需要立刻修改密码,否则无法继续后续的工作。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!