欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 开源数据库 - mysql - MYSQL8.4版本删除功能

开源数据库 - mysql - MYSQL8.4版本删除功能

2024/11/29 21:42:11 来源:https://blog.csdn.net/weixin_46325250/article/details/143384471  浏览:    关键词:开源数据库 - mysql - MYSQL8.4版本删除功能

个人存档用。
最近部署了一下mysql_exporter,发现show master status和show slave status语法一致报错,遂查了一下使用的mysql版本的发行说明,以下记录mysql8.4 移除的功能,个人存档用
之前的博客中,主备复制语法需要进行更改。

MySQL 8.4 中删除的功能

以下项目已过时,并已在 MySQL 中删除 8.4. 在显示替代方案的情况下,应用程序 应该更新以使用它们。

对于使用功能的 MySQL 8.3 应用程序 removed 的 MySQL 8.4 中,语句可能会失败 从 MySQL 8.3 源复制到 MySQL 8.4 副本,或者可能对 source 和 replica 的为避免此类问题,应用程序 应修改 MySQL 8.4 中删除的 use 功能 以避免它们并尽可能使用替代品。

  • 删除了服务器选项和变量。 支持许多服务器选项和变量 MySQL 8.4 中已删除以前版本的 MySQL。 尝试在 MySQL 8.4 中设置它们中的任何一个都会引发一个 错误。这些选项和变量如下所示:

    • binlog_transaction_dependency_tracking: 在 MySQL 8.0.35 和 MySQL 8.2.0 中已弃用。没有 计划替换此变量或其功能, 它已设为服务器内部。在 MySQL 8.4 中 (及更高版本)中,当使用多线程副本时, 源 mysqld 始终使用 writesets 生成二进制日志的依赖关系信息; 这与 在 早期版本的 设置为 具有相同的效果 MySQL 的。binlog_transaction_dependency_tracking``WRITESET

    • group_replication_recovery_complete_at: 在 MySQL 8.0.34 中已弃用。在 MySQL 8.4 及更高版本中, 在 Distributed Recovery 过程中应用的策略 始终仅在新成员 接收、认证和应用所有符合以下条件的交易 发生在它加入该组织之前;这是 等同于在上一个 MySQL 版本。group_replication_recovery_complete_at``TRANSACTIONS_APPLIED

    • avoid_temporal_upgrade和 : 这两个 变量在 MySQL 5.6 中已弃用;他们都不是 在最新版本的 MySQL 中有任何影响。双 变量已被删除;目前尚无计划 替换它们中的任何一个。show_old_temporals

    • --no-dd-upgrade:在 MySQL 中已弃用 8.0.16 现已删除。请改用 --upgrade=NONE

    • --old和 :两者 在 MySQL 8.0.35 和 MySQL 8.2.0 中已弃用,现在 删除。--new

    • --language:在 MySQL 5.5 中已弃用, 现在被删除了。

    • 和 server 选项,以及 和 服务器系统变量, 在 MySQL 8.0.26 中已弃用。它们都被删除了 此版本。请改用 --tls-version--admin-tls-version--ssl``--admin-ssl``have_ssl``have_openssl

    • MySQL 8.0.27 中已弃用的 system 变量已删除 从 MySQL 8.4.0 开始。请改用 authentication_policydefault_authentication_plugin

      作为删除 的一部分,该 HAS 的语法 已更改。有关更多信息,请参阅 authentication_policy 的描述。default_authentication_plugin``authentication_policy

    • –skip-host-cache 服务器选项。 此选项已被删除;请改用 --host-cache-size=0 启动服务器。参见第 7.1.12.3 节 “DNS 查找和主机缓存”。

    • –innodb 和 --skip-innodb 服务器选项。 这些选项已被删除。InnoDB 存储引擎是 始终启用,并且无法禁用它。

    • **–character-set-client-handshake 和 --old-style-user-limits 服务器 选项。**这些选项以前用于兼容性 使用非常旧版本的 MySQL,这些版本不再是 支持或维护,因此不再服务于任何 有用的目的。

    • FLUSH HOSTS 语句。 声明 在 MySQL 8.0.23 中已弃用,已被删除。清除 主机缓存,发出 TRUNCATE TABLE performance_schema.host_cachemysqladmin flush-hostsFLUSH HOSTS

  • 过时的复制选项和变量。 与 MySQL 相关的许多选项和变量 复制在以前的 MySQL 版本中已弃用, ,并已从 MySQL 8.4 中删除。 现在,尝试使用其中任何一个都会导致服务器 引发语法错误。这些选项和变量是 此处列出:

    • --slave-rows-search-algorithms:这 复制应用程序用于查找的算法 应用更新或删除时的表行现在是 always 和 is 用户不再配置。HASH_SCAN,INDEX_SCAN

    • log_bin_use_v1_events:这允许 要复制的运行 MySQL 5.7 及更高版本的源服务器 到不再存在的早期版本的 MySQL 支持或维护。

    • --relay-log-info-file, , , : 的使用 应用程序元数据存储库和 连接元数据存储库已被 崩溃安全表,并且不再受支持。参见第 19.2.4.2 节“复制元数据存储库”。--relay-log-info-repository``--master-info-file``--master-info-repository

    • transaction_write_set_extraction

    • group_replication_ip_whitelist:请改用 group_replication_ip_allowlist

    • group_replication_primary_member:不 需要更长的时间;请改为检查 Performance Schema replication_group_members 表的列。MEMBER_ROLE

  • 复制 SQL 语法。 MySQL Replication 中使用的许多 SQL 语句,其中 在早期版本的 MySQL 中已弃用,不再 在 MySQL 8.4 中受支持。尝试使用其中任何一个 statements 现在会产生语法错误。这些语句 可分为两组:与源相关的 servers 以及引用副本的服务器,如下所示:

    作为这项工作的一部分,CREATE 的选项 EVENTALTER EVENT 现已弃用,并被 取代。相应的 term 也是现在 已弃用,并且不再用于事件描述中,例如 在信息架构 EVENTS 表中; 现在显示 相反。DISABLE ON SLAVE``DISABLE ON REPLICA``SLAVESIDE_DISABLED``REPLICA_SIDE_DISABLED

    • 已删除的与 复制源服务器 中,如下所示:

      • CHANGE MASTER TO:使用 CHANGE REPLICATION SOURCE TO.

      • RESET MASTER:使用 RESET BINARY LOGS 和 GTID 中

      • SHOW MASTER STATUS:使用 SHOW BINARY LOG STATUS 的 STATUS 中。

      • PURGE MASTER LOGS:使用 PURGE BINARY LOGS

      • SHOW MASTER LOGS:使用 SHOW BINARY LOGS

    • 列出了已删除的与副本相关的 SQL 语句 这里:

      • START SLAVE:使用 START REPLICA。

      • STOP SLAVE:使用 STOP REPLICA。

      • SHOW SLAVE STATUS:使用 SHOW REPLICA STATUS

      • SHOW SLAVE HOSTS:使用 SHOW REPLICAS

      • RESET SLAVE:使用 RESET REPLICA。

    前面列出的所有语句都已从 MySQL 测试程序和文件,以及来自任何其他 内部使用。

    此外,许多已弃用的选项以前 受 CHANGE REPLICATION SOURCE 支持 TOSTART REPLICA 已被删除,不再是 被服务器接受。每个 接下来列出了这些 SQL 语句。

    • 此处列出了从 中删除的选项:CHANGE REPLICATION SOURCE TO

      • MASTER_AUTO_POSITION:使用 SOURCE_AUTO_POSITION

      • MASTER_HOST:使用 SOURCE_HOST

      • MASTER_BIND:使用 SOURCE_BIND

      • MASTER_UseR:使用 SOURCE_UseR

      • MASTER_PASSWORD:使用 SOURCE_PASSWORD

      • MASTER_PORT:使用 SOURCE_PORT

      • MASTER_CONNECT_RETRY:使用 SOURCE_CONNECT_RETRY

      • MASTER_RETRY_COUNT:使用 SOURCE_RETRY_COUNT

      • MASTER_DELAY:使用 SOURCE_DELAY

      • MASTER_SSL:使用 SOURCE_SSL

      • MASTER_SSL_CA:使用 SOURCE_SSL_CA

      • MASTER_SSL_CAPATH:使用 SOURCE_SSL_CAPATH

      • MASTER_SSL_CIPHER:使用 SOURCE_SSL_CIPHER

      • MASTER_SSL_CRL:使用 SOURCE_SSL_CRL

      • MASTER_SSL_CRLPATH:使用 SOURCE_SSL_CRLPATH

      • MASTER_SSL_KEY:使用 SOURCE_SSL_KEY

      • MASTER_SSL_VERIFY_SERVER_CERT: 使用 SOURCE_SSL_VERIFY_SERVER_CERT

      • MASTER_TLS_VERSION:使用 SOURCE_TLS_VERSION

      • MASTER_TLS_CIPHERSUITES:使用 SOURCE_TLS_CIPHERSUITES

      • MASTER_SSL_CERT:使用 SOURCE_SSL_CERT

      • MASTER_PUBLIC_KEY_PATH:使用 SOURCE_PUBLIC_KEY_PATH

      • GET_MASTER_PUBLIC_KEY:使用 GET_SOURCE_PUBLIC_KEY

      • MASTER_HEARTBEAT_PERIOD:使用 SOURCE_HEARTBEAT_PERIOD

      • MASTER_COMPRESSION_ALGORITHMS: 使用 SOURCE_COMPRESSION_ALGORITHMS

      • MASTER_ZSTD_COMPRESSION_LEVEL: 使用 SOURCE_ZSTD_COMPRESSION_LEVEL

      • MASTER_LOG_FILE:使用 SOURCE_LOG_FILE

      • MASTER_LOG_POS:使用 SOURCE_LOG_POS

    • 从语句中删除的选项如下所示:START REPLICA

      • MASTER_LOG_FILE:用。SOURCE_LOG_FILE

      • MASTER_LOG_POS:用。SOURCE_LOG_POS

    • 系统变量和 NULL. 它不用于 MySQL 服务器,也不支持 MySQL 服务器 将 startup 选项设置为 NULL () 并拥有它 被服务器解释为 SQL ,并且不应该是不可能的。 MySQL 8.1(及更高版本)明确不允许设置 启动选项添加到此 fashion,并拒绝尝试处理错误。 尝试设置相应的服务器系统 在 mysql 客户端中使用 SET 或类似的变量是 也被拒绝了。--my-option=NULL``NULL``NULL``NULL

      以下列表中的服务器系统变量为 从刚才描述的限制中除外:

      • admin_ssl_ca

      • admin_ssl_capath

      • admin_ssl_cert

      • admin_ssl_cipher

      • admin_tls_ciphersuites

      • admin_ssl_key

      • admin_ssl_crl

      • admin_ssl_crlpath

      • basedir

      • character_sets_dir

      • ft_stopword_file

      • group_replication_recovery_tls_ciphersuites

      • init_file

      • lc_messages_dir

      • plugin_dir

      • relay_log

      • relay_log_info_file

      • replica_load_tmpdir

      • ssl_ca

      • ssl_capath

      • ssl_cert

      • ssl_cipher

      • ssl_crl

      • ssl_crlpath

      • ssl_key

      • socket

      • tls_ciphersuites

      • tmpdir

      另请参见第 7.1.8 节 “服务器系统变量”。

    • 带有初始美元符号的标识符。 使用美元符号 () 作为 未加引号的标识符的初始字符为 在 MySQL 8.0 中已弃用,在 MySQL 中受到限制 8.1 及更高版本;使用不带引号的标识符开头 带有一个美元符号,并包含一个或多个美元 signs(除了第一个)现在会生成一个 语法错误。$

      如果 开头的未加引号的标识符不受此限制的影响,则它们不受此限制的影响 包含任何其他字符。$``$

      参见第 11.2 节 “Schema 对象名称”。

    此外,作为这项工作的一部分,以下服务器状态 之前弃用的变量已被删除。他们 在此处列出,以及它们的替代品:

    • Com_slave_start:用。Com_replica_start

    • Com_slave_stop:用。Com_replica_stop

    • Com_show_slave_status:用。Com_show_replica_status

    • Com_show_slave_hosts:用。Com_show_replicas

    • Com_show_master_status:用。Com_show_binary_log_status

    • Com_change_master:用。Com_change_replication_source

    刚刚列为 removed 的变量不再显示在 SHOW 等语句的输出 STATUS 的 STATUS 中。另请参阅 Com_xxx 变量。

  • 插件。 MySQL 8.4.0 中删除了许多插件,它们是 在此处列出,以及任何系统变量和其他 与他们关联的功能也被删除,或者 否则受插件移除影响:

    • authentication_fido和插件: 请改用插件。参见第 8.4.1.11 节“ WebAuthn 可插入身份验证”。authentication_fido_client``authentication_webauthn

      服务器 system 变量、mysql 客户端选项和 CMake 选项也是 删除。authentication_fido_rp_id``--fido-register-factor``-DWITH_FIDO

    • keyring_fileplugin:使用组件 相反。参见第 8.4.4.4 节 “使用基于 component_keyring_file 文件的密钥环组件”。component_keyring_file

      系统变量 也被删除。此外,CMake 选项 和 已被删除。keyring_file_data``-DINSTALL_MYSQLKEYRINGDIR``-DWITH_KEYRING_TEST

    • keyring_encrypted_fileplugin:使用 组件。参见第 8.4.4.5 节 “使用 component_keyring_encrypted_file 加密的基于文件的密钥环 组件”。component_keyring_encrypted_file

      和 系统变量也被删除。keyring_encrypted_file_data``keyring_encrypted_file_password

    • keyring_ociplugin:使用组件 相反。请参见第 8.4.4.9 节 “使用 Oracle Cloud Infrastructure Vault 密钥环组件”。component_keyring_oci

      还删除了以下服务器系统变量:、、、、、 和 。keyring_oci_ca_certificate``keyring_oci_compartment``keyring_oci_encryption_endpoint``keyring_oci_key_file``keyring_oci_key_fingerprint``keyring_oci_management_endpoint``keyring_oci_master_key``keyring_oci_secrets_endpoint``keyring_oci_tenancy``keyring_oci_user``keyring_oci_vaults_endpoint``keyring_oci_virtual_vault

    • openssl_udfplugin:使用 MySQL 企业加密 () 组件;参见第 8.6 节“ MySQL 企业加密”。component_enterprise_encryption

  • 支持弱密码。 配置加密连接时,MySQL 8.4.0 和 以后不再允许指定任何不 满足以下要求:

    • 符合正确的 TLS 版本(TLS v1.2 或 TLSv1.3,如 适当)

    • 提供完美的正向保密

    • 在密码和/或证书中使用 SHA2

    • 在 GCM 或任何其他 AEAD 算法或模式中使用 AES

    这对设置以下系统有影响 变量:

    • ssl_cipher

    • admin_ssl_cipher

    • tls_ciphersuites

    • admin_tls_ciphersuites

    请参阅这些变量的描述以了解其允许的 MySQL 8.4 中的值以及更多信息。

    注意

    libmysqlclient持续支持 不满足 以保留连接到旧版本的能力 的 MySQL。

  • **INFORMATION_SCHEMA。TABLESPACES 的 TABLESPACES 中。**该表实际上并未使用,已在 MySQL 8.0.22 现已删除。INFORMATION_SCHEMA.TABLESPACES

    注意

    对于 NDB 表, Information Schema FILES table 提供与表空间相关的信息。

    对于 InnoDB 表, 信息架构 INNODB_TABLESPACESINNODB_DATAFILES 表 提供表空间元数据。

  • DROP TABLESPACE 和 ALTER TABLESPACE: ENGINE 子句。 DROP TABLESPACEALTER TABLESPACE 语句的子句 在 MySQL 8.0 中已弃用。在 MySQL 8.4 中,它不再是 supported,如果尝试使用它,则会导致错误 with 或 ALTER TABLESPACE ...DROP DATAFILE。 也不再支持 的所有其他变体 , 此处列出了两个例外:ENGINE``DROP TABLESPACE``ENGINE``ALTER TABLESPACE

    • ALTER TABLESPACE ... ADD DATAFILE ENGINE={NDB|NDBCLUSTER}

    • ALTER UNDO TABLESPACE ... SET {ACTIVE|INACTIVE} ENGINE=INNODB

    有关更多信息,请参阅这些文档 语句。

  • LOW_PRIORITY LOCK TABLES …写。 LOCK TABLES 的子句 ...WRITE 语句自那时起就没有效果了 MySQL 5.5 的 5.5 版本,并在 MySQL 5.6 中弃用。不是 在 MySQL 8.4 中不再受支持;现在将其包含在 中会导致语法错误。LOW_PRIORITY``LOCK TABLES

  • EXPLAIN FORMAT=JSON 格式版本控制。 现在可以在 2 个 版本的“MissAV” 使用此版本中引入的 explain_json_format_version 服务器系统变量的语句使用的 JSON 输出格式。设置 this 变量会导致服务器 使用版本 1,这是线性格式,始终是 用于 MySQL 8.2 中此类语句的输出,并且 早些时候。这是 MySQL 中的默认值和格式 8.4. 设置为 Version 2 格式 使用;此 JSON 输出格式基于访问路径, ,旨在提供更好的兼容性 MySQL Optimizer 的未来版本。EXPLAIN FORMAT=JSON``1``explain_json_format_version``2

    有关更多信息,请参阅 获取执行计划信息 信息和示例。

  • 捕获 EXPLAIN FORMAT=JSON 输出。 扩展为 一个选项,该选项提供了 能够将 JSON 格式的输出存储在用户变量中,以便使用 使用 MySQL JSON 函数,如下所示:EXPLAIN FORMAT=JSON``INTO``EXPLAIN

    mysql> EXPLAIN FORMAT=JSON INTO @myex SELECT name FROM a WHERE id = 2;
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT JSON_EXTRACT(@myex, "$.query_block.table.key");
    +------------------------------------------------+
    | JSON_EXTRACT(@myex, "$.query_block.table.key") |
    +------------------------------------------------+
    | "PRIMARY"                                      |
    +------------------------------------------------+
    1 row in set (0.01 sec)
    

    仅当语句还包含 ;否则,会出现语法错误 结果。此要求不受 explain_format 值的影响。EXPLAIN``FORMAT=JSON

    INTO可以与任何可解释的 语句,但 .它不能与 一起使用。EXPLAIN FOR CONNECTION``EXPLAIN ANALYZE

    有关更多信息和示例,请参阅获取执行计划信息。

  • EXPLAIN 的 SCHEMA 中。EXPLAIN 语句添加了一个选项。这 语法如下所示,其中 stmt 是可解释的 陈述:FOR SCHEMA

    EXPLAIN [options] FOR SCHEMA schema_name stmt
    

    这会导致 stmt 像 在命名架构中。

    FOR DATABASE也支持作为 同义词。

    此选项与 不兼容。FOR CONNECTION

    有关更多信息,请参阅 获取执行计划信息 信息。

  • 保留客户评论。 在 MySQL 8.0 中,从 mysql 客户端剥离 Comments 是默认行为; 默认设置已更改以保留此类注释。

    要启用注释剥离,就像在 MySQL 8.0 及更早版本,使用 --skip-comments 启动 mysql 客户端。

  • AUTO_INCREMENT 列和浮点列。 修饰符的使用 在 CREATE TABLEALTER TABLE 语句中,FLOATDOUBLE 列为 在 MySQL 8.0 中已弃用;对它的支持已删除 在 MySQL 8.4 中,它会引发ER_WRONG_FIELD_SPEC(不正确的列说明符 列)。AUTO_INCREMENT

    在从以前的系列升级到 MySQL 8.4 之前,_必须_修复任何包含 or 列的表 with so so table no longer 使用其中任何一个。否则,升级将失败 .FLOAT``DOUBLE``AUTO_INCREMENT

  • mysql_ssl_rsa_setup 实用程序。 已删除 MySQL 8.0.34 中弃用的 mysql_ssl_rsa_setup 实用程序。为 使用 OpenSSL 编译的 MySQL 发行版,MySQL server 可以自动执行缺失的 SSL 和 RSA 文件。有关以下内容,请参见第 8.3.3.1 节“使用 MySQL 创建 SSL 和 RSA 证书和密钥” 更多信息。

  • MySQL 权限。 新增 SET_ANY_DEFINER 权限(用于创建定义器对象)和 ALLOW_NONEXISTENT_DEFINER 权限(用于孤立对象保护)。这些一起 权限与已弃用的 SET_USER_ID 权限共存。

  • SET_USER_ID特权。 权限(已弃用) 在 MySQL 8.2.0 中,已删除。在 GRANT 语句中使用现在会导致 语法错误SET_USER_ID

    您可以使用 SET_ANY_DEFINER 权限,而不是 。 定义者对象创建,以及用于孤立对象保护的 ALLOW_NONEXISTENT_DEFINER 权限。SET_USER_ID

    生成孤立的 SQL 对象需要这两个权限 使用 CREATE PROCEDURE、CREATE FUNCTION、CREATE TRIGGER、CREATE EVENTCREATE VIEW

  • –abort-slave-event-count 和 --disconnect-slave-event-count 服务器 选项。 MySQL 服务器启动选项 和 ,以前称为 在测试中使用,在 MySQL 8.0 中已弃用,并且具有 已在此版本中删除。现在尝试使用这些选项中的任何一个启动 mysqld 导致错误。--abort-slave-event-count``--disconnect-slave-event-count

  • mysql_upgrade 实用程序。 已删除 MySQL 8.0.16 中弃用的 mysql_upgrade 实用程序。

  • mysqlpump 实用程序。 mysqlpump 实用程序 以及它的辅助工具 lz4_decompresszlib_decompress, 在 MySQL 8.0.34 中已弃用,已被删除。请改用 mysqldump 或 MySQL Shell 的 dump 实用程序。

  • 过时的 CMake 选项。 使用 CMake 编译服务器的以下选项 已过时并已被删除:

    • USE_LD_LLD:请改用 WITH_LD=lld

    • WITH_BOOST、 、 :这些选项 不再需要;MySQL 现在包含并使用 从源码编译时捆绑的 Boost 版本。DOWNLOAD_BOOST``DOWNLOAD_BOOST_TIMEOUT

  • 删除了关键字。 自 MySQL 8.0 以来,MySQL 8.4 中删除的关键字。保留 关键字标有 (R)。

    GET_MASTER_PUBLIC_KEY、 、 、 (R)、 、MASTER_AUTO_POSITION``MASTER_BIND``MASTER_COMPRESSION_ALGORITHMS``MASTER_CONNECT_RETRY``MASTER_DELAY``MASTER_HEARTBEAT_PERIOD``MASTER_HOST``MASTER_LOG_FILE``MASTER_LOG_POS``MASTER_PASSWORD``MASTER_PORT``MASTER_PUBLIC_KEY_PATH``MASTER_RETRY_COUNT``MASTER_SSL``MASTER_SSL_CA``MASTER_SSL_CAPATH``MASTER_SSL_CERT``MASTER_SSL_CIPHER``MASTER_SSL_CRL``MASTER_SSL_CRLPATH``MASTER_SSL_KEY``MASTER_SSL_VERIFY_SERVER_CERT``MASTER_TLS_CIPHERSUITES``MASTER_TLS_VERSION``MASTER_USER``MASTER_ZSTD_COMPRESSION_LEVEL

  • 分区键中的索引前缀。 允许带有索引前缀的列出现在 MySQL 8.0 中分区表的分区键,以及 在创建时引发了没有其他效果的警告, 更改或升级分区表。此类列 在分区表中不再允许,并且使用 分区键中的任何此类列都会导致 它们碰巧被拒绝并显示错误。

文档来源

https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com