Oracle je oblikovao novu granu sustava za upravljanje bazama podataka MySQL 8.4 i objavio ispravak za MySQL 8.0.37. MySQL Community Server 8.4.0 dostupan je za sve glavne distribucije Linuxa, FreeBSD, macOS i Windows. Izdanje 8.4.0 pripada granama s dugoročnom podrškom (LTS), koje se izdaju svake dvije godine i podržavaju 5 godina (uz mogućnost dobivanja još 3 godine proširene podrške).
MySQL 8.4.0 četvrto je izdanje oblikovano u okviru novog modela izdavanja, koji predviđa postojanje dva tipa grananja MySQL — 'Innovation' i 'LTS'. Granice Innovation, uključujući MySQL 8.1, 8.2 i 8.3, preporučuju se onima koji žele ranije pristupiti novim funkcionalnostima. Ove se grane objavljuju svaka 3 mjeseca i podržavaju se samo do objave sljedećeg značajnog izdanja (na primjer, nakon pojave grane 8.4, podrška za granu 8.3 prestaje). LTS-grane preporučuju se za implementacije koje zahtijevaju predvidljivost i dugotrajno očuvanje nepromjenjivog ponašanja. Nakon LTS-grane bit će oblikovana nova granica Innovation — MySQL 9.0.
Glavne promjene u MySQL 8.4:
- Optimizatoru je dodana podrška za automatsko ažuriranje histograma, neovisno o izvršenju operacije 'ANALYZE TABLE' za glavnu tablicu. Automatsko ažuriranje uključuje se korištenjem izraza 'AUTO UPDATE' prilikom izvršenja operacije 'ANALYZE TABLE', a isključuje se korištenjem izraza 'MANUAL UPDATE', koji se koristi prema zadanim postavkama.
- Dodane su opcije '--keyring-migration-from-component', '--keyring-migration-source' i '--keyring-migration-destination' za migraciju iz komponente keyring u plugin keyring.
- Dodana je nova privilegija FLUSH_PRIVILEGES, koja, za razliku od prethodno dostupne privilegije RELOAD, korisniku omogućuje samo izvršavanje operacije 'FLUSH PRIVILEGES'.
- Dodana je nova privilegija OPTIMIZE_LOCAL_TABLE, koja korisniku omogućuje izvođenje operacija 'OPTIMIZE LOCAL TABLE' i 'OPTIMIZE NO_WRITE_TO_BINLOG TABLE'.
- Zadane vrijednosti sistemskih varijabli group_replication_consistency i group_replication_exit_state_action su promijenjene. Varijabla group_replication_consistency sada se postavlja na vrijednost BEFORE_ON_PRIMARY_FAILOVER umjesto EVENTUAL, dok se varijabla group_replication_exit_state_action postavlja na OFFLINE_MODE umjesto READ_ONLY.
- U verzijama isporučenim s ugrađenom bibliotekom OpenSSL, angažirana je nova verzija OpenSSL 3.0.13.
- Neposredno ažuriranje s MySQL 5.7 na MySQL 8.4 je obustavljeno. Sada je potrebno prvo preći na granu 8.0, a zatim je ažurirati na verziju 8.4.
- Promenjene su podrazumevane vrednosti sledećih InnoDB postavki: 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 i temptable_use_mmap.
- Dodata je podrška za izgradnju paketa za distribucije Fedora 40 i Ubuntu 24.04.
- Serverski plugin mysql_native_password, koji omogućava autentifikaciju putem lozinki, je prema zadatku onemogućen i proglašen zastarelim. Preporučuje se prelazak na korišćenje plugina caching_sha2_password, koji koristi algoritam SHA2 za heširanje umesto SHA1. Da bi se povratila podrška za mysql_native_password, može se koristiti opcija "—mysql-native-password=ON" ili podešavanje "mysql_native_password=ON".
- Podrška za nesigurni protokole i algoritme šifrovanja je okončana. Ostavljen je samo TLS v1.2 i TLS v1.3, algoritmi koji obezbeđuju direktnu tajnost (forward secrecy), šifri i sertifikati sa SHA2, i algoritmi AES u GCM ili AEAD režimu.
- Uklanjene su SQL izjave vezane za replikaciju koje su prethodno proglašene zastarelim zbog korišćenja nepolitički korektne terminologije: START SLAVE (koristiti START REPLICA); STOP SLAVE (koristiti STOP REPLICA); SHOW SLAVE STATUS (koristiti 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).
- Odstranjene so prej označene zastarele možnosti, uporabljene v izrazih „CHANGE REPLICATION SOURCE TO“ in „START REPLICA“, in so vsebovale besedo „master“, ki je bila zamenjana z „source“: SOURCE_AUTO_POSITION (uporabite SOURCE_AUTO_POSITION), SOURCE_HOST (uporabite SOURCE_HOST), SOURCE_BIND (uporabite SOURCE_BIND), SOURCE_USER (SOURCE_USER), SOURCE_PASSWORD (SOURCE_PASSWORD), SOURCE_PORT (SOURCE_PORT), SOURCE_CONNECT_RETRY (SOURCE_CONNECT_RETRY), SOURCE_RETRY_COUNT (SOURCE_RETRY_COUNT), SOURCE_DELAY (SOURCE_DELAY), SOURCE_SSL (SOURCE_SSL), SOURCE_SSL_CA (SOURCE_SSL_CA), SOURCE_SSL_CAPATH (SOURCE_SSL_CAPATH), SOURCE_SSL_CIPHER (SOURCE_SSL_CIPHER), SOURCE_SSL_CRL (SOURCE_SSL_CRL), SOURCE_SSL_CRLPATH (SOURCE_SSL_CRLPATH), SOURCE_SSL_KEY (SOURCE_SSL_KEY), SOURCE_SSL_VERIFY_SERVER_CERT (SOURCE_SSL_VERIFY_SERVER_CERT), SOURCE_TLS_VERSION (SOURCE_TLS_VERSION), SOURCE_TLS_CIPHERSUITES (SOURCE_TLS_CIPHERSUITES), SOURCE_SSL_CERT (SOURCE_SSL_CERT), SOURCE_PUBLIC_KEY_PATH (SOURCE_PUBLIC_KEY_PATH), GET_SOURCE_PUBLIC_KEY (GET_SOURCE_PUBLIC_KEY), SOURCE_HEARTBEAT_PERIOD (SOURCE_HEARTBEAT_PERIOD), SOURCE_COMPRESSION_ALGORITHMS (SOURCE_COMPRESSION_ALGORITHMS), SOURCE_ZSTD_COMPRESSION_LEVEL (SOURCE_ZSTD_COMPRESSION_LEVEL), SOURCE_LOG_FILE (SOURCE_LOG_FILE), SOURCE_LOG_POS (SOURCE_LOG_POS).
- Odstranjene so sistemske spremenljivke, ki so vsebovale besedi „master“ in „slave“: Com_slave_start (uporabite 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); in Com_change_master (Com_change_replication_source).
- Sistemska spremenljivka group_replication_allow_local_lower_version_join je označena za zastarelo. Odstranjene so prej označene zastarele možnosti „—no-dd-upgrade“, „—old“, „—new“, „—language“, „—ssl„, „—admin-ssl“ in spremenljivke binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals in default_authentication_plugin.
- Odstranjena je bila neuporabljena tabela INFORMATION_SCHEMA.TABLESPACES.
- Podpora za vrednost LOW_PRIORITY v izrazu „LOCK TABLES … WRITE“ je bila prekinjena.
- Podpora za modifier AUTO_INCREMENT v tipih FLOAT in DOUBLE je bila prekinjena.
- Odstranjena je bila orodje mysql_ssl_rsa_setup — pri gradnji z OpenSSL. strežnik MySQL lahko samodejno generira manjkajoče SSL in RSA datoteke ob zagonu.
- Orodje mysql_upgrade je bilo odstranjeno, ker se ne uporablja s praznim MySQL 8.0.16.
- Orodja mysqlpump, lz4_decompress in zlib_decompress so bila odstranjena, namesto njih pa uporabite orodje mysqldump ali ukaze dump v interaktivni lupini.
- Odstranjeni so vtičniki: authentication_fido, authentication_fido_client (uporabite authentication_webauthn); keyring_file (uporabite component_keyring_file); keyring_encrypted_file (uporabite component_keyring_encrypted_file); keyring_oci (uporabite component_keyring_oci).
- Podpora izraza ENGINE je prekinjena skupaj z različnimi variacijami »DROP TABLESPACE« in »ALTER TABLESPACE«.
- Odstranjena je pravica »SET_USER_ID«, ki je več ne moremo navedeti v izrazih GRANT.
- Vrnjene so funkcije z API-jem: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() in mysql_ssl_set(), nekatere od teh so bile predelane z uporabo funkcije mysql_real_query(). Te funkcije so bile odstranjene v veji MySQL 8.3, vendar so bile obnovljene za podporo v okviru LTS-veje MySQL 8.4.
- Odpravljeno je 26 ranljivosti, ki jih je mogoče izkoristiti na daljavo. Najresnejša težava ima stopnjo nevarnosti 6.5 in je povezana z ranljivostjo v openSSL. Manj nevarne ranljivosti zadevajo optimizator, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.
Izvor: opennet.ru
