网站建设5000费用预算,拼多多分销模式,河南商丘网站,怎么注册一个域名一、前言 时间很快#xff0c;到2023年10月底#xff0c;MySQL 5.7就到了它的EOL#xff08;End of Life#xff09;#xff0c;届时将不会提供任何补丁#xff0c;无法应对潜在的安全风险#xff1b;是时候和 MySQL 5.7 说再见了#xff01;#xff01;#xff01;到2023年10月底MySQL 5.7就到了它的EOLEnd of Life届时将不会提供任何补丁无法应对潜在的安全风险是时候和 MySQL 5.7 说再见了回顾自Mysql5.7 版本2015年10月发布它带来很多新的特性比如默认引擎改成了InnoDB更新了安全策略性能方面的提升新增JSON数据类型增强了sql模式及用户权限等等强大的功能。因此这个版本自从发布之后一直受到业界的欢迎也成为了众多开发者的首选数据库版本至今仍被广泛使用于很多中小生产环境。各个MySQL发行版本官方提供5年的支持期限MySQL和Percona还提供额外的3年补丁更新期限总计提供8年的服务支持。2018年4月MySQL 8.0 正式发布。 相关资源Mysql 5.7.43发布说明、Mysql版本差异说明、Mysql平台兼容性、Mysql文档中心、Mysql5.7升级说明、升级Mysql8.0官网说明、Mysql EOL、Oracle lifetime-support、MariaDB、brary-mariadb、percona生命周期说明、版本对比、postgresql、Mysql8 LTS
二、Mysql生命周期
Mysql产品的生命周期分为三个支持阶段标准支持服务、延伸支持服务和持续支持服务一旦进入延伸支持阶段MySQL仅在认为有必要升级的时候才会提供补丁通常是为了解决安全性问题。对应这三个阶段的时间分别是产品从GA正式发布开始1-5年、6-8年及9年以上。 如下图所示今年的10月份5.7版本会停止延伸阶段支持即2023年10月以后停止发布补丁Oracle 将不再为 MySQL 5.7 提供官方更新、错误修复或安全补丁。
ReleaseRelease DateEnd of lifeMySQL 8.0April 19, 2018MySQL 8.0April 19, 2018MySQL 5.7October 21, 2015October 21, 2023MySQL 5.6February 5, 2013February 5, 2021MySQL 5.5December 3, 2010December 3, 2018MySQL 5.1November 14, 2008December 31, 2013MySQL 5.0January 9, 2012
Mysql 8.0x版本的长期稳定版LTS生命周期图途中蓝色部分。 2.1、Mysql 5.7和8.0特性
1MySQL 8.0 的新特性 原子 DDL 一种原子数据定义语言 (DDL) 语句用于组合对数据字典、存储引擎操作等所做的更新。 加密默认值 已为表加密全局定义和实施加密默认值。 “default_table_encryption”变量用于为新创建的模式定义加密默认值。在创建模式时可以借助“DEFAULT ENCRYPTION”子句定义模式的默认加密。默认密码策略变更。 资源组 可以创建和管理资源组并且服务器能够将线程分配给在服务器内运行的特定组的资源。组属性可用于控制资源、限制或授予线程使用资源的权限等。支持窗口函数支持Hash join。 默认字符集 版本更新后默认字符集由‘latin1’改为‘utf8mb4’。新字符集“utf8mb4”有多个排序规则其中包括“utf8mb4_ja_0900_as_cs”这是 MySQL 中第一个可用于 Unicode 的日语特定排序规则。MyISAM系统表全部换成InnoDB表。支持不可见索引支持直方图。sql_mode参数默认值变化。 JSON 增强 对 MySQL 的 JSON 功能进行了 JSON 增强其中添加了“-”即内联路径运算符。这相当于对调用‘JSON_EXTRACT()’函数后得到的结果调用‘JSON_UNQUOTE()’函数。 对 DBA 的控制 新增角色管理DBA 已被授予根据工作负载修改属性的控制权。服务器确定虚拟 CPU 是否可用具有所需权限的 DBA 可以使用这些 CPU 并将它们分配给某些资源组和线程。
2.2、MySQL5.7 vs 8.0
据相关经验表明性能上测试如下仅供参考 1、读写模式下mysql5.7.22和mysql8.0.15tps、qps性能差不多mysql8.0.15在120线程并发时性能出现了下降抖动 2、只读模式下mysql5.7.22的tps、qps比mysql8.0.15好1/3左右并发线程数增加后tps、qps并没有随着增加反而出现了下降的趋势 3、只写模式下随着并发数的上升mysql5.7.22的性能比mysql8.0.15好1/4左右。 4、读写模式下并发数低时mysql5.7.22性能好于mysql8.0.15;并发数比较高时mysql8.0.15性能好于mysql5.7.22在80线程的并发以上时性能开始下降。 5、只读模式下mysql5.7.22性能比mysql8.0.15好1/3左右随着并发数的上升性能也没有上升反而有下降的趋势。 6、只写模式下mysql5.7.22的tps抖动比较大mysql5.7.22的qps比mysql8.0.15好1/3左右。 三、升级Mysql到8.0
3.1、升级前准备
根据MySQL8.0官方升级教程列举出以下几点注意事项 1、注意字符集设置。为了避免新旧对象字符集不一致的情况可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。 2、密码认证插件变更。为了避免连接问题可以仍采用5.7的mysql_native_password认证插件。 3、sql_mode支持问题。8.0 版本sql_mode不支持NO_AUTO_CREATE_USER要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。 4、是否需要手动升级系统表。在MySQL 8.0.16版本之前需要手动的执行mysql_upgrade来完成该步骤的升级在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。 升级前检查工具更多参看升级检查
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar #解压文件
tar zxvf mysql-8.0.34-el7-x86_64.tar.gz -C /usr/local/mysql8.0/
#更改目录属性
chown -R mysql.mysql /usr/local/mysql8.0/#MySQL提供mysql-shell验证方式可以下载后进行验证没有0.34
wget https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.33-linux-glibc2.12-x86-64bit.tar.gztar -xf mysql-shell-8.0.33-linux-glibc2.12-x86-64bit.tar.gz
cd mysql-shell-8.0.33-linux-glibc2.12-x86-64bit/bin
./mysqlsh -uroot -p123456 -S /tmp/mysql.sock -e util.checkForServerUpgrade()
#全备份
mysqldump -uroot -p123456 --all-databases --lock-tables0 all.sql.bak.20231012
或
mysqldump -uroot -p123456 --all-databases --single-transaction all.sql.bak.202310123.2、配置部署
vim /etc/my.cnf [client]
port3306
socket/tmp/mysql.sock [mysqld]
log-binmysql-bin
server-id100
character_set_serverutf8
init_connectSET NAMES utf8
socket/tmp/mysql.sock
log-error/var/log/mysqld.log
pid-file/run/mysqld/mysqld.pid
innodb_data_file_pathibdata1:200M:autoextend
innodb_log_files_in_group2
innodb_log_file_size1572864000
innodb_page_size16384
innodb_undo_directory./
innodb_undo_tablespaces0
#不区分大小写
lower_case_table_names1
#sql_mode要注意8.0中有变化不支持NO_AUTO_CREATE_USER新增sql_mode中的NO_ENGINE_SUBSTITUTION
sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections5000
default-time_zone 8:00
max_allowed_packet 32M
collation-server utf8_general_ci
basedir/usr/local/mysql8.0
datadir/usr/local/mysql/data
skip_ssl
default_authentication_pluginmysql_native_password登录旧版本的数据库
mysql -uroot -p123456
#查看mysql版本
mysql select version();
mysql show variables like innodb_fast_shutdown;
#确保数据都刷到硬盘上更改成0
mysql set global innodb_fast_shutdown0;
mysql shutdown;
mysql exit;Bye使用安全模式启动MySQL 8.0
/usr/local/mysql8/bin/mysqld_safe --defaults-file/etc/my.cnf --usermysql
#登录新版本数据库
mysql -uroot -p123456
mysql select version();
mysql exit;
#配置环境变量
vim /etc/profile #增加下面的内写
export PATH$PATH:/usr/local/mysql8/bin
source /etc/profile#客户端验证
which mysql
mysql -V
#导入数据
待补充#修改密码
mysql ALTER USER rootlocalhost IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY xxxxx;#配置启动项
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
# 修改启动项目
vim /etc/init.d/mysqld # 修改目录位置
basedir/usr/local/mysql8
datadir/usr/local/mysql/data# 添加到启动列表
chkconfig --add mysqld
# 刷新启动信息
systemctl daemon-reload
# 查看启动项列表
chkconfig --list
#启动找不到pid
mkdir /var/tmp/mysql
touch /var/tmp/mysqlmysqld.pid
chown -R mysql.mysql /var/tmp/mysqlmysqld.pid更多参见官网升级说明跳转进入