# Percona Server for MySQL 8.0.34-26 (2023-09-26) Get started with [Quickstart Guide for Percona Server for MySQL](../quickstart-overview.md). [Percona Server for MySQL 8.0.34-26](https://www.percona.com/software/mysql-database/percona-server) includes all the features and bug fixes available in the [MySQL 8.0.34 Community Edition](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-34.html) in addition to enterprise-grade features developed by Percona. Percona Server for MySQL is a freely available, fully compatible, enhanced, and open source drop-in replacement for any MySQL database. It provides superior and optimized performance, greater scalability, and availability, enhanced backups, increased visibility and instrumentation. Percona Server for MySQL is trusted by thousands of enterprises to provide better performance and concurrency for their most demanding workloads. ## Release highlights * Percona Server for MySQL 8.0.34-26 implements the [Audit Log Filter plugin](../audit-log-filter-overview.md). The plugin provides a set of features that you can use to monitor user activity on the selected server: * Filter audit events based on user/connection, accessed database/table name, query content, etc. Filtering rules are in JSON format. * Dynamically enable/disable the auditing. A server restart is not required to add or adjust existing filtering rules. * Use filtering rules to remove sensitive data from SQL statements written to log files. * Use filtering rules to block events matching specific criteria (for example, database/table name, user name). * Configure filtering rules to write to audit log extra information provided via Query Attributes with each query. * Encrypt the audit log files using AES-256 encryption. The plugin keeps a set of encryption passwords used to encrypt existing log files. External applications may use these passwords to access encrypted logs. * Compress audit log files to reduce the storage space used by log files. * Configure an automatic rotation and removal of log files. You can remove outdated log files based either on storage space used by log files or the age of log files. * Percona Server for MySQL 8.0.34-26 implements the [data masking component](../install-data-masking-component.md), an improved and enchanced version of [data masking plugin](../install-data-masking-plugin.md). The data masking component adds the following features: * Support for multibyte character sets for random generation/masking functions * New masking functions for IBAN, UUID, Canada SIN, and UK NIN * New random generation functions for BAN, UUID, Canada SIN, and UK NIN * The ability to store substitution dictionaries in the database * The dynamic privilege `MASKING_DICTIONARIES_ADMIN` that is required for dictionary manipulation operations * The automated loadable-function registration/unregistration during component installation/uninstallation This merge fixes the following issue: * [PS-8770](https://jira.percona.com/browse/PS-8770): The `INSTANT DDL` caused Percona Server 8.0.32 exit after upgrading from 5.7.41. Improvements and bug fixes introduced by Oracle for MySQL 8.0.34 and included in Percona Server for MySQL are the following: * MySQL 8.0.33 added support for the `audit_log plugin` to choose which database to use to store JSON filter tables. Now, you can specify an alternative to the default system database, mysql, when running the plugin installation script. For example: ```{.bash data-prompt="mysql>"} $> mysql -u root -D database_name -p < audit_log_filter_linux_install.sql ``` * Adds `mysql_binlog_open()`, `mysql_binlog_fetch()`, and `mysql_binlog_close()` functions to the libmysqlclient.so shared library. These functions enable developers to access a MySQL server binary log. * For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server is updated from OpenSSL 1.1.1 to OpenSSL 3.0.9. ### Deprecations and removals * The `mysqlpump` client utility program is deprecated. The use of this program causes a warning. The `mysqlpump` client may be removed in future releases. The applications that depend on `mysqlpump` will use `mysqldump` or `MySQL Shell Utilities`. * The `sync_relay_log_info` server system variable is deprecated. Using this variable or its equivalent startup `--sync-relay-log-info` option causes a warning. This variable may be removed in future releases. The applications that use this variable should be rewritten not to depend on it before the variable is removed. * The `binlog_format` server system variable is deprecated and may be removed in future releases. The functionality associated with this variable, which changes the binary logging format, is also deprecated. When `binlog_format` is removed, MySQL server supports only row-based binary logging. Thus, new installations should use only row-based binary logging. Migrate the existing installations that use the statement-based or mixed logging format to the row-based format. The system variables `log_bin_trust_function_creators` and `log_statements_unsafe_for_binlog` used in the context of statement-based logging are also deprecated and may be removed in future releases. Setting or selecting the values of deprecated variables causes a warning. * The `mysql_native_password` authentication plugin is deprecated and may be removed in future releases. Using `CREATE USER`, `ALTER USER`, and `SET PASSWORD` operations, insert a deprecation warning into the server error log if an account attempts to authenticate using `mysql_native_password` as an authentication method. * The legacy filtering mode is deprecated. New deprecation warnings are emitted for legacy audit log filtering system variables. The deprecated variables are either read-only or dynamic. The `audit_log_policy` read-only variable writes a warning message to the MySQL server error log during server startup when its value is set to any value except `ALL` (default value). The `audit_log_include_accounts`, `audit_log_exclude_accounts`, `audit_log_statement_policy`, and `audit_log_connection_policy` are dynamic variables. Dynamic variables print a warning message based on usage: * Passing in a `non-NULL` value to `audit_log_include_accounts` or `audit_log_exclude_accounts` during MySQL server startup writes a warning message to the server error log. * Passing in a `non-default` value to `audit_log_statement_policy` or `audit_log_connection_policy` during MySQL server startup now writes a warning message to the server error log. `ALL` is the default value for both variables. * Changing an existing value using `SET` syntax during a MySQL client session writes a warning message to the client log. * Persisting a variable using `SET PERSIST` syntax during a MySQL client session writes a warning message to the client log. * The `keyring_file` and `keyring_encrypted_file` plugins are deprecated. These keyring plugins are replaced with the `component_keyring_file` and `component_keyring_encrypted_file` components. Find the full list of bug fixes and changes in the [MySQL 8.0.34 Release Notes](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-34.html). ## New features * [PS-8848](https://jira.percona.com/browse/PS-8848): Increases verbosity of the connection control plugin. * [PS-8728](https://jira.percona.com/browse/PS-8728): Adds the data masking component to align Percona Data Masking functionality with Oracle 8.0.33. * [PS-8042](https://jira.percona.com/browse/PS-8042): Implements the [Audit Log Filter plugin](../audit-log-filter-overview.md). The following features and improvements were added by imlementing the Audit Log Filter plugin feature: * [PS-3874](https://jira.percona.com/browse/PS-3874): Adds options to the Audit Plugin to allow multiple configurations. * [PS-5164](https://jira.percona.com/browse/PS-5164): Adds `Rows_sent` and `Rows_examined` fields to the Audit Log plugin. * [PS-5814](https://jira.percona.com/browse/PS-5814): Allows the audit log to be rotated when MySQL starts. * [PS-236](https://jira.percona.com/browse/PS-236): Prepared statements are now logged in the audit plugin. * [PS-2480](https://jira.percona.com/browse/PS-2480): Adds diagnostics when audit log does synchronous writes in ASYNC mode. * [PS-7331](https://jira.percona.com/browse/PS-7331): Sets the default value of `audit_log_rotations` options to rotate. * [PS-5945](https://jira.percona.com/browse/PS-5945): Adds the MySQL server host name to `audit_log` details when writing to the SYSLOG. ## Improvements * [PS-8624](https://jira.percona.com/browse/PS-8624): Exposes the number of TABLE objects with triggers in the Table Cache. * [PS-8742](https://jira.percona.com/browse/PS-8742): Adds the `audit_log_filter_database` system variable. * [PS-3942](https://jira.percona.com/browse/PS-3942): Adds the `audit_log` MTR test to make sure `PING_CMD` has correct `command_class`. ## Bug fixes * [PS-8504](https://jira.percona.com/browse/PS-8504): Setting a large value of `audit_log_filter_buffer_size` caused the server exit. * [PS-8772](https://jira.percona.com/browse/PS-8772): The instance was completely stalled when using `INSERT (...) SELECT`. * [PS-8797](https://jira.percona.com/browse/PS-8797): The audit log plugin installation caused the server exit. * [PS-8810](https://jira.percona.com/browse/PS-8810): The `FEDERATED` update on table could fail without notifications when the table contained `DOUBLE` columns. * [PS-8869](https://jira.percona.com/browse/PS-8869): The semi-sync master waited for ack when semi-sync replica was down and when was replaced with async. * [PS-8871](https://jira.percona.com/browse/PS-8871): The RESOURCE GROUP hint failed when it was used within a prepared statement. * [PS-8877](https://jira.percona.com/browse/PS-8877): The server exited when selecting from `performance_schema.innodb_redo_log_files`. * [PS-8785](https://jira.percona.com/browse/PS-8785): The metrics were not incremented for the 1st iteration in `buf_LRU_free_from_common_LRU_list`. * [PS-8907](https://jira.percona.com/browse/PS-8907): When sending a SIGTERM signal to MySQL with connections from the x plugin, it terminated MySQL instead of shutting it down. * [PS-8882](https://jira.percona.com/browse/PS-8882): Performing `CREATE TABLE SELECT` was unsuccessful if you ran it when the Data-dictionary Table object Cache was full. The issue occurred after running `RENAME TABLES`, which renamed a number of tables that was more significant than the Data-dictionary Table object Cache capacity (equal to `--max_connections`). * [PS-8836](https://jira.percona.com/browse/PS-8836): An UPDATE failed after an INSERT. When the same UPDATE was retried, it would succeed. * [PS-8592](https://jira.percona.com/browse/PS-8592): XCom connection stalled forever in the `read()` syscall over the network. This issue prevented nodes from re-joining the cluster. The following bugs were fixed by imlementing the Audit Log Filter plugin: * [PS-5784](https://jira.percona.com/browse/PS-5784): The default `audit_log_format` parameter value for MySQL 8 was NEW but the default value for the Percona Server for MySQL Audit log plugin was OLD. * [PS-6863](https://jira.percona.com/browse/PS-6863): The `audit_log` plugin did not handle the application messages from the `audit_api_message_emit` component. ## Packaging notes Percona Server for MySQL 8.0.34-26 supports Debian 12. ## Useful links Install [Percona Server for MySQL 8.0](https://docs.percona.com/percona-server/8.0/installation.html) Upgrade [Percona Server for MySQL from 5.7 to 8.0](https://docs.percona.com/percona-server/8.0/upgrade.html) The [Percona Server for MySQL GitHub location](https://github.com/percona/percona-server) Download product binaries, packages, and tarballs at [Percona Product Downloads](https://www.percona.com/downloads) [Contribute to the documentation](https://github.com/percona/psmysql-docs/blob/8.0/contributing.md) For [training](https://www.percona.com/training), contact [Percona Training - Start learning now](https://learn.percona.com/contact-me)