DBMS available: MySQL 8.4.0

Oracle Company formed new DBMS branch MySQL 8.4 and published a corrective MySQL update 8.0.37. MySQL Community Server 8.4.0 builds prepared for all major Linux, FreeBSD, macOS and Windows distributions. Release 8.4.0 is a Long Term Support (LTS) branch, which is released every two years and is supported for 5 years (plus an additional 3 years of extended support available).

MySQL 8.4.0 is the fourth release formed under the new release model, which provides for the presence of two types of MySQL branches – “Innovation” and “LTS”. The Innovation branches, which include MySQL 8.1, 8.2 and 8.3, are recommended for those who want to get access to new functionality earlier. These branches are published every 3 months and are supported only until the next major release is published (for example, after the appearance of the 8.3 branch, support for the 8.2 branch was discontinued). LTS branches are recommended for implementations that require predictability and long-term persistence of unchanged behavior. Following the LTS branch, a new Innovation branch will be formed – MySQL 9.0.

Advertisement

Basic changes in MySQL 8.4:

  • Added support for automatic updates to the optimizer histograms, regardless of whether the ANALYZE TABLE operation is performed on the parent table. Automatic updating is enabled by specifying the “AUTO UPDATE” expression when performing the “ANALYZE TABLE” operation, and disabled by specifying the “MANUAL UPDATE” expression, which is used by default.
  • Added options “–keyring-migration-from-component”, “–keyring-migration-source” and “–keyring-migration-destination” for migration from the keyring component to the keyring plugin.
  • A new privilege FLUSH_PRIVILEGES has been added, which, unlike the previously available RELOAD privilege, only grants the user rights to perform the “FLUSH PRIVILEGES” operation.
  • A new privilege OPTIMIZE_LOCAL_TABLE has been added, allowing the user to perform the operations “OPTIMIZE LOCAL TABLE” and “OPTIMIZE NO_WRITE_TO_BINLOG TABLE”.
  • Changed the default values ​​of the group_replication_consistency and group_replication_exit_state_action system variables. The group_replication_consistency variable is now set to BEFORE_ON_PRIMARY_FAILOVER instead of EVENTUAL, and the group_replication_exit_state_action variable is now set to OFFLINE_MODE instead of READ_ONLY.
  • Assemblies shipped with the built-in OpenSSL library use the new version of OpenSSL 3.0.13.
  • Direct upgrade from MySQL 5.7 to MySQL 8.4 has been discontinued. To migrate from MySQL 5.7, you must first now migrate to the 8.0 branch, and only then update it to version 8.4.
  • Values ​​changed by default the following InnoDB settings: innodb_adaptive_hash_index, innodb_buffer_pool_in_core_file, innodb_buffer_pool_instances, innodb_change_buffering, innodb_doublewrite_files, innodb_doublewrite_pages, innodb_flush_method, innodb_io_capacity, max, innodb_log_buffer_size, innodb_numa_interleave, innodb_page_cleaners, innodb_parallel_read_threads, innodb_purge_threads, innodb_read_io_threads, innodb_use_fdatasync, temptable_max_ram, temptable_max_mmap and temptable_use_mmap.
  • Added support for building packages for Fedora 40 and Ubuntu 24.04 distributions.
  • The mysql_native_password server plugin, which provides authentication using passwords, is disabled by default and deprecated. Instead of mysql_native_password, it is recommended to switch to the caching_sha2_password plugin, which uses the SHA2 algorithm instead of SHA1 for hashing. To return mysql_native_password support, you can use the “–mysql-native-password=ON” option or the “mysql_native_password=ON” setting.
  • Support for insecure protocols and encryption algorithms has been discontinued. Only TLS v1.2 and TLSv1.3 are left, algorithms that provide direct secrecy (forward secrecy), ciphers and certificates with SHA2, and AES algorithms in GCM or AEAD mode.
  • Removed replication-related SQL statements that were previously deprecated due to the use of politically incorrect terminology: START SLAVE (START REPLICA should be used); STOP SLAVE (STOP REPLICA should be used); SHOW SLAVE STATUS (SHOW REPLICA STATUS should be used); SHOW SLAVE HOSTS (SHOW REPLICAS); RESET SLAVE (RESET REPLICA); CHANGE MASTER TO (CHANGE REPLICATION SOURCE TO); RESET MASTER (RESET BINARY LOGS AND GTIDS); SHOW MASTER STATUS (SHOW BINARY LOG STATUS); PURGE MASTER LOGS (PURGE BINARY LOGS); SHOW MASTER LOGS (SHOW BINARY LOGS).
  • Removed previously deprecated options used in the “CHANGE REPLICATION SOURCE TO” and “START REPLICA” statements using the word “master”, which was replaced by “source”: MASTER_AUTO_POSITION (should use SOURCE_AUTO_POSITION), MASTER_HOST (should use SOURCE_HOST), MASTER_BIND (should use 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_K EY ), 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 (SOUR CE_LOG_POS).
  • Removed system variables that used the words “master” and “slave”: Com_slave_start (Com_replica_start should be used); 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); and Com_change_master(Com_change_replication_source).
  • The group_replication_allow_local_lower_version_join system variable has been deprecated. Removed previously deprecated options “–no-dd-upgrade”, “–old”, “–new”, “–language”, “–ssl”, “–admin-ssl” and binlog_transaction_dependency_tracking variables, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals and default_authentication_plugin.
  • The unused table INFORMATION_SCHEMA.TABLESPACES has been deleted.
  • Support for using the LOW_PRIORITY value with the “LOCK TABLES … WRITE” statement has been discontinued.
  • Support for using the AUTO_INCREMENT modifier with the FLOAT and DOUBLE types has been discontinued.
  • The mysql_ssl_rsa_setup utility has been removed – when built with OpenSSL, the MySQL server may automatically generate missing SSL and RSA files at startup.
  • The mysql_upgrade utility has been removed, which has not been used since MySQL 8.0.16.
  • The mysqlpump, lz4_decompress, and zlib_decompress utilities have been removed, in favor of the mysqldump utility or interactive shell dump commands.
  • Plugins removed: authentication_fido, authentication_fido_client (authentication_webauthn should be used); keyring_file (should use component_keyring_file); keyring_encrypted_file (should use component_keyring_encrypted_file); keyring_oci (component_keyring_oci should be used).
  • Support for the ENGINE expression has been discontinued along with the various “DROP TABLESPACE” and “ALTER TABLESPACE” options.
  • The “SET_USER_ID” privilege has been removed and can no longer be specified in GRANT statements.
  • Returned C API functions: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() and mysql_ssl_set(), some of which were reworked using the mysql_real_query() function. These features were removed in MySQL 8.3, but were restored to support in the LTS branch of MySQL 8.4.
  • Eliminated 26 vulnerabilities, which can be operated remotely. The most serious problem has a severity level of 6.5 and is associated with a vulnerability in openSSL. Less dangerous vulnerabilities affect the optimizer, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.

Thanks for reading:

Advertisement