MySQL最新版8.1.0版本部署和新特性詳解
前言
2023年7月18日晚,MySQL官方網(wǎng)站正式發(fā)布了MySQL8.1.0與8.0.34版本.
一、暢談新版本
Oracle 每季度發(fā)布一次 MySQL 更新,所以自己也一直留意的官網(wǎng)的動(dòng)態(tài),2023年7月18日晚,MySQL官方網(wǎng)站正式發(fā)布了MySQL8.1.0與8.0.34版本,8.1的應(yīng)該來(lái)說(shuō)是8.0版本的bug修復(fù),這是 MySQL 變更發(fā)版模型后的第一個(gè)創(chuàng)新版本 (Innovation Release)。MySQL 8.0.34+ 將成為僅錯(cuò)誤修復(fù)版本(紅色)。MySQL大約每2年發(fā)布一個(gè)新的長(zhǎng)期支持版本(如下圖藍(lán)色),一個(gè)例外是8.x LTS版本,它將在 8.0 的 EOL 之前發(fā)生,按照此規(guī)則來(lái)說(shuō),下一個(gè)(創(chuàng)新)版本將增加主版本號(hào),如果 MySQL 8.4.0 是 8.x LTS 版本,那么 MySQL 9.0 將是下一個(gè)創(chuàng)新版本。
官方下載文檔:https://dev.mysql.com/downloads/mysql/
官方指南:https://dev.mysql.com/doc/refman/8.1/en/
二、8.1.0版本部署
官方的下載渠道已開(kāi)放,dev.mysql.com/downloads/
RPM包下載選擇Linux - Generic,適配對(duì)應(yīng)的操作系統(tǒng)GCC版本。
2.1、環(huán)境準(zhǔn)備
- 操作系統(tǒng)
[root@jeames ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.1 (Ootpa)
- 關(guān)閉防火墻#
查看防火墻是狀態(tài)
[root@jeames ~]# systemctl status firewalld
關(guān)閉防火墻
[root@jeames ~]# systemctl stop firewalld
selinux關(guān)閉
修改參數(shù)文件/etc/sysconfig/selinux中SELINUX的值為disabled
[root@jeames ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
修改完成后需要重啟服務(wù)器才生效
2.2、配置yum安裝依賴
- 創(chuàng)建掛載路徑
mkdir -p /mnt/cdrom
- 掛載系統(tǒng)鏡像光盤到指定目錄
#因?yàn)楣獗P的格式通常是iso9660,意思是/dev/sr0掛載在/mnt/cdrom目錄上 mount -t iso9660 /dev/sr0 /mnt/cdrom mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.
修改yum源配置文件
##編輯rhel8-local.repo文件,加入以下內(nèi)容
[root@jeames ~]# cd /etc/yum.repos.d [root@jeames yum.repos.d]# rm -rf * [root@jeames yum.repos.d]# vi rhel8-local.repo [localREPO] name=localhost8 baseurl=file:///mnt/cdrom/BaseOS enable=1 gpgcheck=0 [localREPO_APP] name=localhost8_app baseurl=file:///mnt/cdrom/AppStream enable=1 gpgcheck=0
- 配置好后重建本地緩存
yum clean all yum makecache yum repolist
- 安裝MySQL 8.1版本二進(jìn)制所需的依賴包
yum -y install libncurses* yum -y install libaio yum -y install perl perl-devel yum -y install autoconf yum -y install numactl.x86_64 ##通過(guò)rpm -qa可以查詢是否將依賴包安裝成功 [root@jeames yum.repos.d]# rpm -qa libaio perl perl-devel autoconf \ numactl.x86_64 libncurses
2.3、用戶及目錄創(chuàng)建
注:可以部署多個(gè)實(shí)例,通過(guò)端口區(qū)分root 用戶操作:
mkdir -p /mysql/data/mysql3306 mkdir -p /mysql/app/ mkdir -p /mysql/conf/ mkdir -p /mysql/data/mysql3306/pid/ mkdir -p /mysql/data/mysql3306/socket/ mkdir -p /mysql/data/mysql3306/log/ mkdir -p /mysql/data/mysql3306/binlog/ mkdir -p /mysql/data/mysql3306/errlog mkdir -p /mysql/data/mysql3306/relaylog/ mkdir -p /mysql/data/mysql3306/slowlog/ mkdir -p /mysql/data/mysql3306/tmp/
2.4、創(chuàng)建用戶及組
[root@jeames ~]# groupadd mysql [root@jeames ~]# useradd -g mysql mysql [root@jeames ~]# chown -R mysql:mysql /mysql [root@jeames ~]# passwd mysql Changing password for user mysql. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@jeames ~]# cat /etc/group | grep mysql mysql?1001: [root@jeames ~]# cat /etc/passwd | grep mysql mysql?1001:1001::/home/mysql:/bin/bash
2.5、解壓縮包
[root@jeames ~]# cd /opt [root@jeames opt]# cp mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz /mysql/app [root@jeames opt]# chown -R mysql:mysql /mysql
mysql用戶操作
[root@jeames ~]# su - mysql md5 值驗(yàn)證,保證下載到的軟件包無(wú)破損無(wú)木馬 [mysql@jeames ~]$ cd /mysql/app [mysql@jeames app]$ ll total 457200 -rw-r--r-- 1 mysql mysql 468170248 Jul 19 15:29 mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz [mysql@jeames app]$ md5sum mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz 5285185fad2b4352c878380a741e29f0 mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz
解壓軟件包并重命名
[mysql@jeames app]$ tar xvf mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz [mysql@jeames app]$ mv mysql-8.1.0-linux-glibc2.28-x86_64 mysql8.1.0 [mysql@jeames app]$ ll total 457200 drwxrwxr-x 9 mysql mysql 129 Jul 19 15:31 mysql8.1.0 -rw-r--r-- 1 mysql mysql 468170248 Jul 19 15:29 mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz
2.6、環(huán)境變量配置
##mysql用戶下操作 cat >> /home/mysql/.bash_profile << “EOF” MYSQL_HOME=/mysql/app/mysql8.1.0 PATH=P A T H : PATH:PATH:HOME/.local/bin:H O M E / b i n : HOME/bin:HOME/bin:MYSQL_HOME/bin EOF
環(huán)境變量生效
[mysql@jeames app]$ source ~/.bash_profile [mysql@jeames app]$ which mysql /mysql/app/mysql8.1.0/bin/mysql
2.7、創(chuàng)建參數(shù)文件
由于是二進(jìn)制文件安裝,數(shù)據(jù)庫(kù)參數(shù)文件需要自己配置
cat >> /mysql/conf/my3306.cnf << "EOF" [mysqld] server_id = 8103306 default-storage-engine= InnoDB basedir=/mysql/app/mysql8.1.0 datadir=/mysql/data/mysql3306/data/ socket=/mysql/data/mysql3306/socket/mysql.sock log-error=/mysql/data/mysql3306/log/mysqld.log pid-file=/mysql/data/mysql3306/pid/mysqld.pid port=3306 default-time_zone='+8:00' default_authentication_plugin=mysql_native_password # 加此參數(shù)可遠(yuǎn)程登陸 transaction_isolation=READ-COMMITTED max_connections=1500 back_log=500 wait_timeout=1800 max_user_connections=800 innodb_buffer_pool_size=1024M innodb_log_file_size=512M innodb_log_buffer_size=40M slow_query_log=ON long_query_time=5 # log settings # slow_query_log = ON slow_query_log_file = /mysql/data/mysql3306/slowlog/slow3306.log log_error = /mysql/data/mysql3306/errlog/err3306.log log_error_verbosity = 3 log_bin = /mysql/data/mysql3306/binlog/mysql_bin log_bin_index = /mysql/data/mysql3306/binlog/mysql_binlog.index general_log_file = /data/mysql/mysql3306/generallog/general.log log_queries_not_using_indexes = 1 log_slow_admin_statements = 1 expire_logs_days = 90 binlog_expire_logs_seconds = 2592000 #30d long_query_time = 2 min_examined_row_limit = 100 log_throttle_queries_not_using_indexes = 1000 innodb_flush_log_at_trx_commit=1 EOF
2.8、數(shù)據(jù)庫(kù)初始化
mysql用戶操作:
mysqld --defaults-file=/mysql/conf/my3306.cnf --initialize --user=mysql --basedir=/mysql/app/mysql8.1.0 --datadir=/mysql/data/mysql3306/data/
注意:以上同一行執(zhí)行
2.9、啟動(dòng)Mysql
[mysql@jeames app]$ mysqld_safe --defaults-file=/mysql/conf/my3306.cnf --user=mysql &
2.10、登陸MySQL 8.1
第一次登錄 MySQL 時(shí),需要到錯(cuò)誤日志下找初始化密碼,使用 socket 加密碼登錄進(jìn)去后,無(wú)法查詢?nèi)魏螙|西,提示先要修改 root 密碼.
[mysql@jeames ~]$ cat /mysql/data/mysql3306/errlog/err3306.log | grep password [mysql@jeames ~]$ mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) [mysql@jeames ~]$ mysql -uroot -p -P 3306 -S /mysql/data/mysql3306/socket/mysql.sock mysql> status ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- 修改密碼
mysql> alter user root@'localhost' identified by 'root'; mysql> status -------------- mysql Ver 8.1.0 for Linux on x86_64 (MySQL Community Server - GPL) Connection id: 8 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.1.0 Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /mysql/data/mysql3306/socket/mysql.sock Binary data as: Hexadecimal Uptime: 3 min 46 sec Threads: 2 Questions: 8 Slow queries: 0 Opens: 398 Flush tables: 3 Open tables: 36 Queries per second avg: 0.035
- 遠(yuǎn)程登陸設(shè)置
mysql> create user root@'%' identified with mysql_native_password by 'root'; Query OK, 0 rows affected (0.01 sec) mysql> grant all on *.* to root@'%' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,plugin from mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | root | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 5 rows in set (0.01 sec)
三、新特性
3.1、密碼參數(shù)
增加了一個(gè)新的系統(tǒng)參數(shù),用于限制用戶改密碼時(shí)的最少替換字符數(shù)。
validate_password.changed_characters_percentage
,該值是百分比。
3.2、錯(cuò)誤日志加強(qiáng)
隨著 MySQL 服務(wù)器、插件和組件的啟動(dòng)和關(guān)閉消息的增加,關(guān)閉過(guò)程的日志記錄得到了增強(qiáng)。這些消息現(xiàn)在也被記錄為關(guān)閉連接。
這些附加功能應(yīng)該有助于故障排除和調(diào)試問(wèn)題,特別是在服務(wù)器需要很長(zhǎng)時(shí)間才能關(guān)閉的情況下。
此版本引入了一系列新的消息,這些消息會(huì)在MySQL錯(cuò)誤日志中記錄,包括以下內(nèi)容:
MySQLserver的啟動(dòng)和關(guān)閉日志消息,包括使用–initialize參數(shù)啟動(dòng)時(shí)的日志。
插件關(guān)閉階段的啟動(dòng)和結(jié)束日志消息。
組件關(guān)閉階段的啟動(dòng)和結(jié)束日志消息。
連接關(guān)閉階段的開(kāi)始和結(jié)束日志消息。
在強(qiáng)制斷開(kāi)連接后仍然活動(dòng)的線程數(shù)量和ID的日志消息,這些線程可能會(huì)導(dǎo)致等待情況。
mysql> show variables like 'log_error'; +---------------+------------------------------------------+ | Variable_name | Value | +---------------+------------------------------------------+ | log_error | /mysql/data/mysql3306/errlog/err3306.log | +---------------+------------------------------------------+
3.3、二進(jìn)制日志
libmysqlclient.so 共享庫(kù)中添加了幾個(gè)函數(shù),使開(kāi)發(fā)人員能夠訪問(wèn) MySQL server的二進(jìn)制日志:
mysql_binlog_open()、mysql_binlog_fetch() 和 mysql_binlog_close()。
3.4、審計(jì)日志
審計(jì)日志可以指定庫(kù)database存儲(chǔ)JSON過(guò)濾表。
新增Audit_log_direct_writes系統(tǒng)變量,用于計(jì)算直接寫(xiě)入審計(jì)文件的次數(shù)。
MySQL企業(yè)審計(jì)使用臨時(shí)緩沖區(qū)保存寫(xiě)入日志文件的查詢事件數(shù)據(jù)。
然而,由于server可能無(wú)法為長(zhǎng)查詢分配額外內(nèi)存,審計(jì)插件已經(jīng)進(jìn)行了優(yōu)化,在JSON格式記錄日志時(shí),不再使用臨時(shí)緩沖區(qū)。
MySQL企業(yè)審計(jì)現(xiàn)在支持使用調(diào)度程序組件來(lái)配置和執(zhí)行定期任務(wù),以刷新內(nèi)存緩存。
mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
3.5、組復(fù)制增強(qiáng)
添加了一些特定于組復(fù)制插件的狀態(tài)變量,這些變量可以改進(jìn)對(duì)網(wǎng)絡(luò)不穩(wěn)定的診斷和故障排除, 為每個(gè)組成員 (group member) 提供有關(guān)網(wǎng)絡(luò)使用情況、控制消息和數(shù)據(jù)消息的統(tǒng)計(jì)信息。 作為這項(xiàng)工作的一部分,Performance Schema 的 replication_group_communication_information 表中添加了一個(gè)新列 MEMBER_FAILURE_SUSPICIONS_COUNT 。該列的內(nèi)容被格式化為一個(gè) JSON 數(shù)組,其鍵是組成員 ID,其值是該組成員被認(rèn)為是可疑的次數(shù)。
3.6、廢棄特性
以下功能在 MySQL 8.1 中已棄用,并且可能會(huì)在未來(lái)的系列中刪除。如果顯示替代方案,則應(yīng)更新應(yīng)用程序以使用它們。
mysqlpump
由于 MySQL 提供了具有相同或額外功能的 mysqldump 和 MySQL Shell 等其他方法來(lái)執(zhí)行數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)和備份,
mysqlpump 已經(jīng)變得多余,現(xiàn)在已棄用。現(xiàn)在調(diào)用這個(gè)程序會(huì)產(chǎn)生一個(gè)警告。您應(yīng)該記住,mysqlpump 可能會(huì)在 MySQL 的未來(lái)版本中被刪除。binlog_format
binlog_format 服務(wù)器系統(tǒng)變量現(xiàn)已棄用,并且可能會(huì)在 MySQL 的未來(lái)版本中刪除。 與此變量關(guān)聯(lián)的功能(更改二進(jìn)制日志記錄格式)也已被棄用。
此更改的含義是,當(dāng)刪除 binlog_format 時(shí),MySQL 服務(wù)器將僅支持基于行的二進(jìn)制日志記錄(MySQL 8.0 中的默認(rèn)設(shè)置)。 因此,新安裝應(yīng)僅使用基于行 (Row) 的二進(jìn)制日志記錄,而使用基于語(yǔ)句或混合日志記錄格式的現(xiàn)有安裝應(yīng)遷移到基于行的格式。
此更改的含義是,當(dāng)刪除 binlog_format 時(shí),MySQL 服務(wù)器將僅支持基于行的二進(jìn)制日志記錄(MySQL 8.0 中的默認(rèn)設(shè)置)。 因此,新安裝應(yīng)僅使用基于行 (Row) 的二進(jìn)制日志記錄,而使用基于語(yǔ)句或混合日志記錄格式的現(xiàn)有安裝應(yīng)遷移到基于行的格式。
系統(tǒng)變量 log_bin_trust_function_creators 和 log_statements_unsafe_for_binlog 僅在基于語(yǔ)句的日志記錄上下文中有用,現(xiàn)在也已棄用,因此也將在 MySQL 的未來(lái)版本中刪除。 現(xiàn)在設(shè)置或選擇剛才提到的任何變量的值都會(huì)引發(fā)警告。 (WL#13966,WL#15669)mysql_native_password
mysql_native_password 身份驗(yàn)證插件現(xiàn)已棄用,并可能在 MySQL 的未來(lái)版本中刪除。 如果帳戶嘗試使用 mysql_native_password 作為身份驗(yàn)證方法進(jìn)行身份驗(yàn)證, CREATE USER、ALTER USER 和 SET PASSWORD 操作現(xiàn)在會(huì)在服務(wù)器錯(cuò)誤日志中插入棄用警告。
以上就是MySQL最新版8.1.0版本部署和新特性詳解的詳細(xì)內(nèi)容,更多關(guān)于MySQL8.1.0版本部署和新特性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Mysql用戶權(quán)限分配實(shí)戰(zhàn)項(xiàng)目詳解
用戶是數(shù)據(jù)庫(kù)的使用者和管理者,MySQL通過(guò)用戶的設(shè)置來(lái)控制數(shù)據(jù)庫(kù)操作人員的訪問(wèn)與操作范圍,這篇文章主要給大家介紹了關(guān)于Mysql用戶權(quán)限分配實(shí)戰(zhàn)項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-12-12MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用
這篇文章介紹了MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12MySQL之FIND_IN_SET()的用法及說(shuō)明
這篇文章主要介紹了MySQL之FIND_IN_SET()的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01學(xué)習(xí)mysql之后的一點(diǎn)總結(jié)(基礎(chǔ))
學(xué)習(xí)mysql之后的一點(diǎn)總結(jié),比較適合新手朋友2012-05-05MySQL 搭建雙主復(fù)制服務(wù)并通過(guò) HAProxy 負(fù)載均衡的過(guò)程詳解
在數(shù)據(jù)庫(kù)管理中,數(shù)據(jù)的備份和同步是至關(guān)重要的環(huán)節(jié),而雙主復(fù)制(Dual Master Replication)作為一種高可用性和數(shù)據(jù)同步的解決方案,本文將介紹MySQL雙主復(fù)制的配置過(guò)程并通過(guò) HAProxy 負(fù)載均衡,感興趣的朋友一起看看吧2024-03-03