Доступна СУБД MySQL 8.4.0

Компания Oracle сформировала новую ветку СУБД MySQL 8.4 и опубликовала корректирующее обновление MySQL 8.0.37. Сборки MySQL Community Server 8.4.0 подготовлены для всех основных дистрибутивов Linux, FreeBSD, macOS и Windows. Выпуск 8.4.0 отнесён к веткам с длительным сроком поддержки (LTS), который выпускаются раз в два года и поддерживаются 5 лет (плюс можно получить ещё 3 года расширенной поддержки).

MySQL 8.4.0 является четвёртым выпуском, сформированным в рамках новой модели формирования релизов, предусматривающей наличие двух типов веток MySQL – “Innovation” и “LTS”. Ветки Innovation, к которым отнесены MySQL 8.1, 8.2 и 8.3, рекомендованы для тех, кто хочет раньше получать доступ к новой функциональности. Данные ветки публикуются каждые 3 месяца и поддерживаются только до публикации следующего значительного релиза (например, после появления ветки 8.3 прекращена поддержка ветки 8.2). LTS-ветки рекомендованы для внедрений, которым необходима предсказуемость и длительное сохранение неизменного поведения. Следом за LTS-веткой будет сформирована новая Innovation-ветка – MySQL 9.0.

Основные изменения в MySQL 8.4:

  • В оптимизатор добавлена поддержка автоматического обновления гистограмм, независимо от выполнения операции “ANALYZE TABLE” для родительской таблицы. Автоматическое обновление включается через указание выражения “AUTO UPDATE” при выполнении операции “ANALYZE TABLE”, а отключается через указание выражения “MANUAL UPDATE”, которое используется по умолчанию.
  • Добавлены опции “–keyring-migration-from-component”, “–keyring-migration-source” и “–keyring-migration-destination” для миграции из компонента keyring в плагин keyring.
  • Добавлена новая привилегия FLUSH_PRIVILEGES, которая в отличие от ранее доступной привилегии RELOAD предоставляет пользователю права только на выполнение операции “FLUSH PRIVILEGES”.
  • Добавлена новая привилегия OPTIMIZE_LOCAL_TABLE, позволяющая пользователю выполнять операции “OPTIMIZE LOCAL TABLE” и “OPTIMIZE NO_WRITE_TO_BINLOG TABLE”.
  • Изменены значения по умолчанию системных переменных group_replication_consistency и group_replication_exit_state_action. Переменная group_replication_consistency теперь выставляется в значения BEFORE_ON_PRIMARY_FAILOVER вместо EVENTUAL, а переменная group_replication_exit_state_action в значение OFFLINE_MODE вместо READ_ONLY.
  • В сборках, поставляемых со встроенной библиотекой OpenSSL, задействована новая версия OpenSSL 3.0.13.
  • Прекращено прямое обновление с MySQL 5.7 до MySQL 8.4. Для перехода с MySQL 5.7 вначале теперь следует перейти на ветку 8.0, а уже затем обновить её до версии 8.4.
  • Изменены значения по умолчанию следующих настроек InnoDB: 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, 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 и temptable_use_mmap.
  • Добавлена поддержка сборки пакетов для дистрибутивов Fedora 40 и Ubuntu 24.04.
  • Отключён по умолчанию и объявлен устаревшим серверный плагин mysql_native_password, обеспечивающий аутентификацию при помощи паролей. Вместо mysql_native_password рекомендуется перейти на использование плагина caching_sha2_password, применяющего для хэширования алгоритм SHA2 вместо SHA1. Для возвращения поддержки mysql_native_password можно использовать опцию “–mysql-native-password=ON” или настройку “mysql_native_password=ON”.
  • Прекращена поддержка небезопасных протоколов и алгоритмов шифрования. Оставлены только TLS v1.2 и TLSv1.3, алгоритмы, обеспечивающие прямую секретность (forward secrecy), шифры и сертификаты с SHA2, и алгоритмы AES в режиме GCM или AEAD.
  • Удалены связанные с репликацией SQL-выражения, которые ранее были объявлены устаревшими из-за использования неполиткорректной терминологии: START SLAVE (следует использовать START REPLICA); STOP SLAVE (следует использовать STOP REPLICA); SHOW SLAVE STATUS (следует использовать SHOW REPLICA STATUS); 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).
  • Удалены ранее объявленные устаревшими опции, применявшиеся в выражениях “CHANGE REPLICATION SOURCE TO” и “START REPLICA”, и использующие слово “master”, которое было заменено на “source”:
    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).
  • Удалены системные переменные, в которых использовались слова “master” и “slave”: 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); and Com_change_master (Com_change_replication_source).
  • Объявлена устаревшей системная переменная group_replication_allow_local_lower_version_join. Удалены ранее объявленные устаревшими опции “–no-dd-upgrade”,
    “–old”, “–new”, “–language”, “–ssl”, “–admin-ssl” и переменные binlog_transaction_dependency_tracking, group_replication_recovery_complete_at,
    avoid_temporal_upgrade, show_old_temporals и default_authentication_plugin.
  • Удалена неиспользуемая таблица INFORMATION_SCHEMA.TABLESPACES.
  • Прекращена поддержка использования значения LOW_PRIORITY вместе с выражением “LOCK TABLES … WRITE”.
  • Прекращена поддержка использования модификатора AUTO_INCREMENT вместе с типами FLOAT и DOUBLE.
  • Удалена утилита mysql_ssl_rsa_setup – при сборке с OpenSSL сервер MySQL может автоматически генерировать недостающие SSL- и RSA-файлы при запуске.
  • Удалена утилита mysql_upgrade, которая не используется с выпуска MySQL 8.0.16.
  • Удалены утилиты mysqlpump, lz4_decompress и zlib_decompress, вместо которых следует использовать утилиту mysqldump или команды dump интерактивной оболочки.
  • Удалены плагины: authentication_fido, authentication_fido_client (следует использовать authentication_webauthn); keyring_file (следует использовать component_keyring_file); keyring_encrypted_file (следует использовать component_keyring_encrypted_file); keyring_oci (следует использовать component_keyring_oci).
  • Прекращена поддержка выражения ENGINE вместе с различными вариантами “DROP TABLESPACE” и “ALTER TABLESPACE”.
  • Удалена привилегия “SET_USER_ID”, которую больше нельзя указывать в выражениях GRANT.
  • Возвращены функции С API: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() и mysql_ssl_set(), часть из которых была переработана с использованием функции mysql_real_query(). Данные функции были удалены в ветке MySQL 8.3, но восстановлены для поддержки в рамках LTS-ветки MySQL 8.4.
  • Устранено 26 уязвимостей, которые могут быть эксплуатированы удалённо. Наиболее серьёзная проблема имеет уровень опасности 6.5 и связана с уязвимостью в openSSL. Менее опасные уязвимости затрагивают оптимизатор, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.
Release. Ссылка here.