Компания Oracle сформировала новую ветку СУБД MySQL 8.3 и опубликовала корректирующее обновление MySQL 8.0.36. Сборки MySQL Community Server 8.3.0 подготовлены для всех основных дистрибутивов Linux, FreeBSD, macOS и Windows.
MySQL 8.3.0 является третьим выпуском, сформированным в рамках новой модели формирования релизов, предусматривающей наличие двух типов веток MySQL – “Innovation” и “LTS”. Ветки Innovation, к которым отнесены MySQL 8.1, 8.2 и 8.3, рекомендованы для тех, кто хочет раньше получать доступ к новой функциональности. Данные ветки публикуются каждые 3 месяца и поддерживаются только до публикации следующего значительного релиза (например, после появления ветки 8.3 прекращена поддержка ветки 8.2). LTS-ветки рекомендованы для внедрений, которым необходима предсказуемость и длительное сохранение неизменного поведения. LTS ветки будут выпускаться раз в два года и поддерживаться в штатном режиме 5 лет, в дополнение к которым можно будет получить ещё 3 года расширенной поддержки. Весной 2024 года ожидается LTS-релиз MySQL 8.4, после которого будет сформирована новая Innovation-ветка 9.0.
Основные изменения в MySQL 8.3:
- Устранено 25 уязвимостей, из которых одна (CVE-2023-5363, затрагивает OpenSSL) может быть эксплуатирована удалённо. Наиболее серьёзной проблеме, которая связана с использованием протокола Kerberos, присвоен уровень опасности 8.8. Менее опасные уязвимости с уровнем опасности 6.5 затрагивают оптимизатор, UDF, DDL, DML, репликацию, систему привилегий и средства для шифрования.
- На платформе Linux добавлена поддержка компоновщика mold. Для включения предусмотрена опция “-DWITH_LD=mold|lld”.
- Требования к поддерживаемому компилятором стандарту C++ подняты с C++17 до C++20.
- Прекращена поддержка сборки с внешними библиотеками Boost C++ – при компиляции MySQL теперь используются только встроенные библиотеки Boost. В CMake удалены сборочные опции WITH_BOOST, DOWNLOAD_BOOST и DOWNLOAD_BOOST_TIMEOUT.
- Прекращена поддержка сборки в Visual Studio 2022. Минимально поддерживаемая версия инструментария Clang повышена с Clang 10 до Clang 12.
- В MySQL Enterprise Edition добавлена поддержка сбора телеметрии с метриками о работе сервера в формате OpenTelemetry и передачи данных на поддерживающий данный формат сетевой обработчик.
- Расширен формат идентификаторов GTID (global transaction identifier), применяемый при репликации для идентификации групп транзакций. Новый формат GTID – “UUID:<TAG>:NUMBER” (вместо “UUID:NUMBER”), где TAG является произвольной строкой, позволяющей назначать уникальные имена определённой группе транзакций для упрощения обработки и разбора.
- Добавлены две новые переменные “Deprecated_use_i_s_processlist_count” и “Deprecated_use_i_s_processlist_last_timestamp” для отслеживания использования устаревшей таблицы INFORMATION_SCHEMA.PROCESSLIST.
- Установка переменной окружения AUTHENTICATION_PAM_LOG больше не приводит к отображению паролей в диагностических сообщениях (для упоминания пароля требуется присвоение значения PAM_LOG_WITH_SECRET_INFO).
- Добавлена таблица tp_connections с информацией о каждом соединении в пуле потоков (thread pool).
- Добавлена системная переменная “explain_json_format_version” для выбора версии формата JSON, используемого в выражениях “EXPLAIN FORMAT=JSON”.
- В хранилище InnoDB удалены параметры “–innodb” и “–skip-innodb”, которые были объявлены устаревшими ещё в выпуске MySQL 5.6. Удалён плагин memcached к InnoDB, объявленный устаревшим в MySQL 8.0.22.
- Удалены некоторые настройки и опции командной строки, связанные репликацией, которые были объявлены устаревшими в прошлых выпусках: “–slave-rows-search-algorithms”, “–relay-log-info-file”, “–relay-log-info-repository”, “–master-info-file”, “–master-info-repository”, “log_bin_use_v1_events”, “transaction_write_set_extraction”, “group_replication_ip_whitelist”, “group_replication_primary_member”. Прекращена возможность использования опции IGNORE_SERVER_IDS с режимом репликации GTID (gtid_mode=ON).
- Прекращена поддержка функций С API: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown(), mysql_ssl_set().
- Прекращена поддержка выражения “FLUSH HOSTS”, объявленного устаревшим в MySQL 8.0.23.