MySQL9.0的兩種部署模式及各個版本發(fā)布的新功能
1.MySQL 9.0 創(chuàng)新版發(fā)布
Oracle 每季度發(fā)布一次 MySQL 更新,2024年7月1日推出了最新的 MySQL 9.0 創(chuàng)新版本。
MySQL發(fā)布模型分為兩個主要軌道:LTS(長期支持)和創(chuàng)新。所有LTS和Innovation版本都包含錯誤和安全修復,并被視為生產(chǎn)級質(zhì)量。
1.1 MySQL 9.0 功能進化
1.1.1 添加或更改的功能
1.從MySQL 9.0.0開始支持將 EXPLAIN ANALYZE的JSON輸出保存到用戶變量中 EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt mysql> EXPLAIN FORMAT=JSON INTO @myupdate -> UPDATE a SET name2 = "garcia" WHERE id = 3; mysql> SELECT @myupdate, @mydelete\G *************************** 1. row *************************** @myupdate: { "query_block": { "select_id": 1, "table": { "update": true, "table_name": "a", "access_type": "range", "possible_keys": [ "PRIMARY" ], "key": "PRIMARY", "used_key_parts": [ "id" ], "key_length": "4", "ref": [ "const" ], "rows_examined_per_scan": 1, "filtered": "100.00", "attached_condition": "(`db`.`a`.`id` = 3)" } } }
2.Event DDL in prepared statements MySQL 9.0提供了對服務(wù)器端準備語句的支持,那有什么好處呢? a.減少每次執(zhí)行語句時解析語句的開銷。 通常,數(shù)據(jù)庫應(yīng)用程序處理大量幾乎相同的語句, 只更改子句中的文字或變量值, 如用于查詢和刪除的WHERE、用于更新的SET和用于插入的values。 b.防止SQL注入攻擊。 參數(shù)值可以包含未加轉(zhuǎn)義的SQL引號和分隔符。 --使用方法如下: mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'; mysql> SET @a = 3; mysql> SET @b = 4; mysql> EXECUTE stmt1 USING @a, @b; +------------+ | hypotenuse | +------------+ | 5 | +------------+ mysql> DEALLOCATE PREPARE stmt1;
3.新增2個性能架構(gòu)系統(tǒng)變量表
(1)variables_metadata表
提供了有關(guān)系統(tǒng)變量的一般信息。
這些信息包括MySQL服務(wù)器識別的每個系統(tǒng)變量的
名稱、范圍、類型、范圍(如適用)和描述。
(2)global_variable_attributes表
提供了有關(guān)服務(wù)器分配給全局系統(tǒng)變量的屬性值對的信息。
1.1.2 棄用的功能
能架構(gòu)variables_info表列的MIN_VALUE和MAX_VALUE列現(xiàn)在已被棄用, 請使用variables_metadata表中具有相同名稱的列
1.1.3 刪除的功能
為了向后兼容,mysql_native_password在客戶端上仍然可用,因此mysql 9.0客戶端程序可以連接到早期版本的mysql服務(wù)器。在MySQL 9.0中,以前版本的客戶端程序中內(nèi)置的MySQL本地身份驗證插件已轉(zhuǎn)換為必須在運行時加載的插件。
其實從mysql 8.0中不推薦使用的mysql_native_password身份驗證插件已被刪除。
服務(wù)器現(xiàn)在拒絕來自不具有client_PLUGIN_AUTH
功能的舊客戶端程序的mysql_native身份驗證請求
由于此更改,9.0還刪除了以下服務(wù)器選項和變量:
–mysql本機密碼服務(wù)器選項
–mysql本機密碼代理用戶服務(wù)器選項
–default_authentication_plugin服務(wù)器系統(tǒng)變量
1.2 二進制編譯安裝
下載地址:https://dev.mysql.com/downloads/mysql/
#! /bin/bash #----------------------------------------------------- #Author: XingYuyu #Date: 2024-07-2 #Blog: http://8.141.4.74 #Filename: install_offline_mysql9.0_for_rocky9.sh #Description: [在Rocky 8/9離線二進制安裝mysql 9.0] #----------------------------------------------------- SRC_DIR=$(pwd) #MYSQL='mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz' #MYSQL='mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz' MYSQL='mysql-9.0.0-linux-glibc2.28-x86_64.tar.xz' MYSQL_ROOT_PASSWORD='123456' COLOR='echo -e \E[01;31m' END='\E[0m' check () { if [ $UID -ne 0 ]; then $COLOR"當前用戶不是root, 安裝失敗"$END exit 1 fi cd $SRC_DIR if [ ! -e $MYSQL ]; then $COLOR"缺少${MYSQL}文件"$END $COLOR"請將相關(guān)軟件放在${SRC_DIR}目錄下"$END exit elif [ -e /usr/local/mysql ]; then $COLOR"數(shù)據(jù)庫已存在,安裝失敗"$END exit else return fi } install_mysql () { $COLOR"開始安裝MySQL數(shù)據(jù)庫..."$END yum -y -q install libaio numactl-libs tar xf $MYSQL -C /usr/local/ MYSQL_DIR=$(echo $MYSQL | sed -nr 's/^(.*[0-9]).*/\1/p') ln -s /usr/local/$MYSQL_DIR /usr/local/mysql chown -R root.root /usr/local/mysql/ id mysql &> /dev/null || useradd -s /sbin/nologin -r mysql echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh ln -s /usr/local/mysql/bin/* /usr/bin/ # Create MySQL configuration file cat > /etc/my.cnf <<-EOF [mysqld] server-id=$(hostname -I | cut -d. -f4) log-bin datadir=/data/mysql socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock EOF [ -d /data/mysql ] || mkdir -p /data/mysql chown -R mysql:mysql /data/mysql # Initialize MySQL Database /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --datadir=/data/mysql # Create systemd service file for MySQL cat > /etc/systemd/system/mysqld.service <<-EOF [Unit] Description=MySQL Server After=network.target Wants=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql --socket=/data/mysql/mysql.sock ExecStop=/usr/local/mysql/bin/mysqladmin shutdown Restart=on-failure LimitNOFILE=5000 [Install] WantedBy=multi-user.target EOF # Reload systemd manager configuration systemctl daemon-reload # Enable mysqld service to start on boot systemctl enable mysqld # Start mysqld service systemctl start mysqld if [ $? -ne 0 ]; then $COLOR"數(shù)據(jù)庫啟動失敗,退出!"$END exit fi sleep 3 /usr/local/mysql/bin/mysqladmin -uroot password "$MYSQL_ROOT_PASSWORD" &>/dev/null $COLOR"數(shù)據(jù)庫安裝完成"$END } check install_mysql
# 使用上面腳本安裝 MySQL 9.0(前提:將安裝包上傳和腳本上傳到同一目錄下) [root@Rocky9 src]# bash install_offline_mysql8.3_for_rocky9.sh 開始安裝MySQL數(shù)據(jù)庫... Upgraded: numactl-libs-2.0.16-3.el9.x86_64 Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /etc/systemd/system/mysqld.service. 數(shù)據(jù)庫安裝完成 [root@Rocky9 src]#[root@Rocky9 src]# mysql -uroot -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.0.0 MySQL Community Server - GPL Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> status -------------- mysql Ver 9.0.0 for Linux on x86_64 (MySQL Community Server - GPL) Connection id: 9 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 9.0.0 MySQL Community Server - GPL Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /data/mysql/mysql.sock Binary data as: Hexadecimal Uptime: 29 sec Threads: 2 Questions: 10 Slow queries: 0 Opens: 130 Flush tables: 3 Open tables: 46 Queries per second avg: 0.344 -------------- mysql>
1.2.1 新增用戶
默認密碼是:123456,可以在執(zhí)行腳本前通過修改腳本中的變量來自定義數(shù)據(jù)庫密碼
MYSQL_ROOT_PASSWORD=‘123456’
# 修改本地用戶密碼 alter user root@'localhost' identified by 'xxxx'; # 刷新權(quán)限 flush privileges; # 查詢當前主機和用戶 select Host,User from mysql.user; # 新增遠程登錄用戶 create user root@'10.0.0.%' identified by 'xxxx'; # 給創(chuàng)建的用戶賦予權(quán)限 grant all on *.* to root@'10.0.0.%' with grant option; flush privileges;
1.2.2 向量及 JSON 體驗
mysql> create schema MyDb; Query OK, 1 row affected (0.00 sec) mysql> create table vector_json (id int primary key,json_value JSON,vector_value vector); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO vector_json (id, json_value,vector_value) -> VALUES -> (1, -> JSON_ARRAY(1.0, 2.0, 3.0,4.0), -> to_vector('[1,2,3,4]') -> ); Query OK, 1 row affected (0.01 sec) mysql> select -> id, -> json_value, -> VECTOR_DIM(vector_value) -> from vector_json; +----+----------------------+--------------------------+ | id | json_value | VECTOR_DIM(vector_value) | +----+----------------------+--------------------------+ | 1 | [1.0, 2.0, 3.0, 4.0] | 4 | +----+----------------------+--------------------------+ 1 row in set (0.00 sec) mysql>
1.2.3 完整的/etc/my.cnf
由于是二進制文件安裝,數(shù)據(jù)庫參數(shù)文件需要自己配置 cat >> /etc/my.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ù)可遠程登陸 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
1.3 通過 yum 來安裝 RPM 包的方式
# 安裝依賴 yum -y install lrzsz wget perl-Digest-MD5 yum -y install numactl yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make # 添加用戶、用戶組 groupadd mysql useradd -g mysql --no-create-home -s /sbin/nologin mysql # 上傳安裝包并解壓 mkdir /data/mysql -pv tar -xf mysql-9.0.0-1.el9.x86_64.rpm-bundle.tar -C /data/mysql/ cd /data/mysql/ # 修改所屬主,所屬組 [root@Rocky9 data]# chown -R mysql:mysql /data/mysql/ # 安裝下面四個即可 # 安裝順序:包之間相互依賴,所以必須注意安裝順序 ? 先裝 common ? 再裝 libs ? 再裝 client ? 最后裝 server rpm -ivh mysql-community-common-9.0.0-1.el9.x86_64.rpm rpm -ivh mysql-community-libs-9.0.0-1.el9.x86_64.rpm rpm -ivh mysql-community-client-9.0.0-1.el9.x86_64.rpm rpm -ivh mysql-community-server-9.0.0-1.el9.x86_64.rpm
通過 yum 的方式來自動處理軟件包的依賴關(guān)系
[root@Rocky9 mysql]# yum -y install mysql-community-* Last metadata expiration check: 0:47:48 ago on Tue 02 Jul 2024 03:47:49 PM CST. Dependencies resolved. ================================================================================================================================================================================================================= Package Architecture Version Repository Size ================================================================================================================================================================================================================= Installing: mysql-community-client x86_64 9.0.0-1.el9 @commandline 3.0 M mysql-community-client-debuginfo x86_64 9.0.0-1.el9 @commandline 22 M mysql-community-client-plugins x86_64 9.0.0-1.el9 @commandline 1.4 M mysql-community-client-plugins-debuginfo x86_64 9.0.0-1.el9 @commandline 2.7 M mysql-community-common x86_64 9.0.0-1.el9 @commandline 581 k mysql-community-debuginfo x86_64 9.0.0-1.el9 @commandline 8.8 M mysql-community-debugsource x86_64 9.0.0-1.el9 @commandline 17 M mysql-community-devel x86_64 9.0.0-1.el9 @commandline 7.3 M mysql-community-icu-data-files x86_64 9.0.0-1.el9 @commandline 2.3 M mysql-community-libs x86_64 9.0.0-1.el9 @commandline 1.5 M mysql-community-libs-compat x86_64 9.0.0-1.el9 @commandline 1.4 M mysql-community-libs-compat-debuginfo x86_64 9.0.0-1.el9 @commandline 2.5 M mysql-community-libs-debuginfo x86_64 9.0.0-1.el9 @commandline 2.6 M mysql-community-server x86_64 9.0.0-1.el9 @commandline 50 M mysql-community-server-debug x86_64 9.0.0-1.el9 @commandline 24 M mysql-community-server-debug-debuginfo x86_64 9.0.0-1.el9 @commandline 154 M mysql-community-server-debuginfo x86_64 9.0.0-1.el9 @commandline 192 M mysql-community-test x86_64 9.0.0-1.el9 @commandline 336 M mysql-community-test-debuginfo x86_64 9.0.0-1.el9 @commandline 23 M Upgrading: [root@Rocky9 mysql]# rpm -qa | grep mysql mysql-community-debugsource-9.0.0-1.el9.x86_64 mysql-community-debuginfo-9.0.0-1.el9.x86_64 mysql-community-client-plugins-9.0.0-1.el9.x86_64 mysql-community-common-9.0.0-1.el9.x86_64 mysql-community-libs-9.0.0-1.el9.x86_64 mysql-community-client-9.0.0-1.el9.x86_64 mysql-community-icu-data-files-9.0.0-1.el9.x86_64 mysql-community-server-9.0.0-1.el9.x86_64 mysql-community-server-debug-9.0.0-1.el9.x86_64 mysql-community-test-9.0.0-1.el9.x86_64 mysql-community-devel-9.0.0-1.el9.x86_64 mysql-community-libs-compat-9.0.0-1.el9.x86_64 mysql-community-client-debuginfo-9.0.0-1.el9.x86_64 mysql-community-client-plugins-debuginfo-9.0.0-1.el9.x86_64 mysql-community-libs-compat-debuginfo-9.0.0-1.el9.x86_64 mysql-community-libs-debuginfo-9.0.0-1.el9.x86_64 mysql-community-server-debug-debuginfo-9.0.0-1.el9.x86_64 mysql-community-server-debuginfo-9.0.0-1.el9.x86_64 mysql-community-test-debuginfo-9.0.0-1.el9.x86_64 [root@Rocky9 mysql]# # 啟動mysql [root@Rocky9 mysql]# systemctl enable --now mysqld [root@Rocky9 mysql]# # 獲取臨時密碼 [root@Rocky9 mysql]# cat /var/log/mysqld.log | grep temporary 2024-07-02T09:05:09.190201Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: J3E7ZjT8uc=/ [root@Rocky9 mysql]# mysql -uroot -p'J3E7ZjT8uc=/' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.0.0 Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>alter user root@'localhost' identified by 'root'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements # 修改一下密碼策略,也是不允許的,只能先改一下密碼然后再修改策略 mysql> SET GLOBAL validate_password.policy = LOW; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456'; Query OK, 0 rows affected (0.01 sec) mysql> SET GLOBAL validate_password.policy = LOW; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL validate_password.length = 6; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'validate_password%'; +-------------------------------------------------+-------+ | Variable_name | Value | +-------------------------------------------------+-------+ | validate_password.changed_characters_percentage | 0 | | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 6 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +-------------------------------------------------+-------+ 8 rows in set (0.00 sec)
2.MySQL 8.4.0 LTS 發(fā)布
從 MySQL 8.4.0 開始,mysql_native_password 認證插件默認不再啟用。
若要啟用,需要在MySQL啟動的時候,添加–mysql-native-password=ON 參數(shù);或在配置文件中設(shè)置 mysql_native_password=ON。MySQL 8.4,還調(diào)整了與 InnoDB 存儲引擎相關(guān)的多個服務(wù)器系統(tǒng)變量的默認值
其余的一些變更,大家詳細的閱讀官網(wǎng)即可
安裝方式參考上面9.0.
3.MySQL 8.3.0 發(fā)布
3.1 標簽化 GTID
此增強功能使為特定事務(wù)組的GTID分配唯一名稱成為可能。
例如,只需比較包含數(shù)據(jù)操作的事務(wù)的GTID,就可以很容易地將其與管理操作產(chǎn)生的事務(wù)區(qū)分開來。
管理員現(xiàn)在可以將SET@gtid_next=AUTOMATIC:<TAG>或SET@gtid_next=<UUID>:<TAG>:NUMBER的
使用限制為所需的MySQL用戶或角色集,以便只有與給定數(shù)據(jù)或操作域相關(guān)的用戶才能提交具有指定標記的新事務(wù)。
該版本新增了TRANSACTION_GTID_TAG權(quán)限,它允許設(shè)置 GTID 值,讓管理員能夠控制權(quán)限分配,優(yōu)化事務(wù)管理。
3.2 JSON EXPLAIN 格式
添加了explain_json_format_version系統(tǒng)變量,以確定explain format=json語句使用的json輸出格式的版本。
它允許管理員在EXPLAIN FORMAT=JSON命令中,在兩種不同的 JSON 輸出格式之間進行選擇。
這一特性保證了軟件與 MySQL 優(yōu)化器未來版本的兼容性,增強了長期使用的便利性
3.3 身份驗證說明
Microsoft Windows:Windows平臺現(xiàn)在支持執(zhí)行基于sasl的ldap身份驗證的服務(wù)器端authentication_ldap_sasl插件。
這意味著Windows客戶端程序現(xiàn)在可以使用GSSAPI和Kerberos,使用authentication_ldap_sasl_client插件進行身份驗證。
3.4 可插拔身份驗證
從本版本開始,調(diào)試PAM身份驗證插件時使用的 AUTHENTICATION_PAM_LOG 環(huán)境變量的行為更改如下:
將AUTHENTICATION_PAM_LOG設(shè)置為任意值(除非下一項中另有說明),其診斷消息中不再包含密碼。
要在診斷消息中包括密碼,請設(shè)置AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO
3.5 線程池新增信息
在MySQL性能架構(gòu)中添加了額外的線程池連接信息,如下所示:
添加了一個tp_connections表,其中包含有關(guān)每個線程池連接的信息。
將以下列添加到tp_thread_state表中:
TIME_OF_ATTACH、 MARKED_STALLED、 state、EVENT_COUNT、 ACCUMULATED_EVENT_TIME、 EXEC_COUNT和ACCUMULATED_EXEC_TIME
將以下列添加到tp_thread_group_state表中:
EFECTIVE_MAX_TRANSACTION_LIMIT、 NUM_QUERY_THREADS、 TIME_OF_LAST_thread_CREATION、 NUM_CONNECT_HANDLER_THREADD_IN_SLEEP、 THREADS_BOUND_to_TRANSACTION、 QUERY_THRADS_COUNT和TIME_OF_EARLIEST_CONN_EXPIRE
3.6 刪減功能
一些關(guān)鍵的 C API 函數(shù),比如mysql_kill()、mysql_list_fields()等,已被移除,建議采用其他方式來執(zhí)行類似操作。
用于清理主機名內(nèi)部緩存的FLUSH HOSTS命令(之前已經(jīng)被棄用),也正式從系統(tǒng)中移除了。管理員現(xiàn)在需要通過其他方法來清理主機緩存。
還有一些復制和服務(wù)器的相關(guān)選項,例如–slave-rows-search-algorithms和–log_bin_use_v1_events也已被移除,引導管理員采用更有效、更現(xiàn)代的操作方法。
4.MySQL 8.1.0 發(fā)布
4.1 密碼參數(shù)
增加了一個新的系統(tǒng)參數(shù),用于限制用戶改密碼時的最少替換字符數(shù)。
validate_password.changed_characters_percentage,該值是百分比。
4.2 錯誤日志加強
隨著 MySQL 服務(wù)器、插件和組件的啟動和關(guān)閉消息的增加,關(guān)閉過程的日志記錄得到了增強。這些消息現(xiàn)在也被記錄為關(guān)閉連接。
這些附加功能應(yīng)該有助于故障排除和調(diào)試問題,特別是在服務(wù)器需要很長時間才能關(guān)閉的情況下。
此版本引入了一系列新的消息,這些消息會在MySQL錯誤日志中記錄,包括以下內(nèi)容:
- MySQLserver的啟動和關(guān)閉日志消息,包括使用–initialize參數(shù)啟動時的日志。
- 插件關(guān)閉階段的啟動和結(jié)束日志消息。
- 組件關(guān)閉階段的啟動和結(jié)束日志消息。
- 連接關(guān)閉階段的開始和結(jié)束日志消息。
在強制斷開連接后仍然活動的線程數(shù)量和ID的日志消息,這些線程可能會導致等待情況。
mysql> show variables like ‘log_error'; ±--------------±-----------------------------------------+ | Variable_name | Value | ±--------------±-----------------------------------------+ | log_error | /mysql/data/mysql3306/errlog/err3306.log | ±--------------±-----------------------------------------+
4.3 二進制日志
libmysqlclient.so 共享庫中添加了幾個函數(shù),使開發(fā)人員能夠訪問 MySQL server的二進制日志:
mysql_binlog_open()、mysql_binlog_fetch() 和 mysql_binlog_close()。
4.4 審計日志
審計日志可以指定庫database存儲JSON過濾表。
新增Audit_log_direct_writes系統(tǒng)變量,用于計算直接寫入審計文件的次數(shù)。
MySQL企業(yè)審計使用臨時緩沖區(qū)保存寫入日志文件的查詢事件數(shù)據(jù)。
然而,由于server可能無法為長查詢分配額外內(nèi)存,審計插件已經(jīng)進行了優(yōu)化,在JSON格式記錄日志時,不再使用臨時緩沖區(qū)。
MySQL企業(yè)審計現(xiàn)在支持使用調(diào)度程序組件來配置和執(zhí)行定期任務(wù),以刷新內(nèi)存緩存。
mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
4.5 組復制增強
添加了一些特定于組復制插件的狀態(tài)變量,這些變量可以改進對網(wǎng)絡(luò)不穩(wěn)定的診斷和故障排除,
為每個組成員 (group member) 提供有關(guān)網(wǎng)絡(luò)使用情況、控制消息和數(shù)據(jù)消息的統(tǒng)計信息。
作為這項工作的一部分,Performance Schema 的 replication_group_communication_information 表中添加了一個新列 MEMBER_FAILURE_SUSPICIONS_COUNT 。該列的內(nèi)容被格式化為一個 JSON 數(shù)組,其鍵是組成員 ID,其值是該組成員被認為是可疑的次數(shù)。
4.6 廢棄特性
以下功能在 MySQL 8.1 中已棄用,并且可能會在未來的系列中刪除。如果顯示替代方案,則應(yīng)更新應(yīng)用程序以使用它們。
1.mysqlpump
由于 MySQL 提供了具有相同或額外功能的 mysqldump 和 MySQL Shell 等其他方法來執(zhí)行數(shù)據(jù)庫轉(zhuǎn)儲和備份,
mysqlpump 已經(jīng)變得多余,現(xiàn)在已棄用?,F(xiàn)在調(diào)用這個程序會產(chǎn)生一個警告。您應(yīng)該記住,mysqlpump 可能會在 MySQL 的未來版本中被刪除。
2.binlog_format
binlog_format 服務(wù)器系統(tǒng)變量現(xiàn)已棄用,并且可能會在 MySQL 的未來版本中刪除。 與此變量關(guān)聯(lián)的功能(更改二進制日志記錄格式)也已被棄用。
此更改的含義是,當刪除 binlog_format 時,MySQL 服務(wù)器將僅支持基于行的二進制日志記錄(MySQL 8.0 中的默認設(shè)置)。 因此,新安裝應(yīng)僅使用基于行 (Row) 的二進制日志記錄,而使用基于語句或混合日志記錄格式的現(xiàn)有安裝應(yīng)遷移到基于行的格式。
系統(tǒng)變量 log_bin_trust_function_creators 和 log_statements_unsafe_for_binlog 僅在基于語句的日志記錄上下文中有用,現(xiàn)在也已棄用,因此也將在 MySQL 的未來版本中刪除。
現(xiàn)在設(shè)置或選擇剛才提到的任何變量的值都會引發(fā)警告。 (WL*#13966,WL#15669)*
3.mysql_native_password
mysql_native_password 身份驗證插件現(xiàn)已棄用,并可能在 MySQL 的未來版本中刪除。
如果帳戶嘗試使用 mysql_native_password 作為身份驗證方法進行身份驗證,
他方法來執(zhí)行數(shù)據(jù)庫轉(zhuǎn)儲和備份,
mysqlpump 已經(jīng)變得多余,現(xiàn)在已棄用。現(xiàn)在調(diào)用這個程序會產(chǎn)生一個警告。您應(yīng)該記住,mysqlpump 可能會在 MySQL 的未來版本中被刪除。
4.binlog_format
binlog_format 服務(wù)器系統(tǒng)變量現(xiàn)已棄用,并且可能會在 MySQL 的未來版本中刪除。 與此變量關(guān)聯(lián)的功能(更改二進制日志記錄格式)也已被棄用。
此更改的含義是,當刪除 binlog_format 時,MySQL 服務(wù)器將僅支持基于行的二進制日志記錄(MySQL 8.0 中的默認設(shè)置)。 因此,新安裝應(yīng)僅使用基于行 (Row) 的二進制日志記錄,而使用基于語句或混合日志記錄格式的現(xiàn)有安裝應(yīng)遷移到基于行的格式。
系統(tǒng)變量 log_bin_trust_function_creators 和 log_statements_unsafe_for_binlog 僅在基于語句的日志記錄上下文中有用,現(xiàn)在也已棄用,因此也將在 MySQL 的未來版本中刪除。
現(xiàn)在設(shè)置或選擇剛才提到的任何變量的值都會引發(fā)警告。 (WL*#13966,WL#15669)*
5.mysql_native_password
mysql_native_password 身份驗證插件現(xiàn)已棄用,并可能在 MySQL 的未來版本中刪除。
如果帳戶嘗試使用 mysql_native_password 作為身份驗證方法進行身份驗證,
CREATE USER、ALTER USER 和 SET PASSWORD 操作現(xiàn)在會在服務(wù)器錯誤日志中插入棄用警告。
到此這篇關(guān)于MySQL9.0的兩種部署模式及各個版本發(fā)布的新功能的文章就介紹到這了,更多相關(guān)MySQL9.0兩種部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql使用sum()函數(shù)返回null的問題詳解
MySQL的Sum()函數(shù)是用來找出所有記錄的一個字段的總和,下面這篇文章主要給大家介紹了關(guān)于Mysql使用sum()函數(shù)返回null的問題,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-01-01mysql中replace into與insert into區(qū)別
本文主要介紹了mysql中replace into與insert into區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01阿里云配置MySQL-server?8.0遠程登錄的實現(xiàn)
我們經(jīng)常會碰到需要遠程訪問數(shù)據(jù)庫的場景,本文主要介紹了阿里云配置MySQL-server?8.0遠程登錄的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-08-08