共计 3858 个字符,预计需要花费 10 分钟才能阅读完成。
今天丸趣 TV 小编给大家分享一下 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 电脑。
mysql 中 5.6 与 5.7 有什么区别一、编译安装区别
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 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 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 日志文件中;新用户登入后需要立刻修改密码,否则无法继续后续的工作。
以上就是“mysql 中 5.6 与 5.7 有哪些区别”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,丸趣 TV 小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注丸趣 TV 行业资讯频道。