Skip to content

Commit a0d0d1f

Browse files
committed
PS-10482 [DOCS] - Create a What's Changed in the MySQL 9.x series document 8.4
new file: docs/9x-breaking-changes.md new file: docs/9x-compatibility-and-removed-items.md new file: docs/9x-defaults-and-tuning.md modified: docs/index.md modified: docs/installation.md modified: docs/upgrade.md new file: docs/whats-new-mysql-9x-apt-dnf-yum.md new file: docs/whats-changed-mysql-9x.md modified: mkdocs-base.yml
1 parent 655ef1e commit a0d0d1f

5 files changed

Lines changed: 271 additions & 3 deletions

File tree

docs/index.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ Upgrade your Percona Server for MySQL installation with our comprehensive upgrad
6262

6363
</div><div data-banner markdown>
6464

65+
### :material-information-outline: Planning for the MySQL 9.x series? { .title }
66+
67+
If you are evaluating or planning a move to the MySQL 9.x series (for example, Percona Server for MySQL 9.7 LTS), see [What's New in MySQL 9.x: Technical Migration Overview](whats-new-mysql-9.md) for breaking changes, compatibility, removed items, and defaults and tuning.
68+
69+
</div><div data-banner markdown>
70+
6571
## :fontawesome-solid-gears: Audit Log Filter plugin { .title }
6672

6773
Learn about the Audit Log Filter plugin that allows you to monitor, log, and block a connection or query actively executed on the selected server.

docs/installation.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ The following guides describe the installation process for using the official Pe
1212

1313
[Install Percona Server for MySQL on Debian and Ubuntu](apt-repo.md){.md-button} [Install Percona Server for MySQL on Red Hat Enterprise Linux](yum-repo.md){.md-button}
1414

15+
If you are considering the MySQL 9.x series (for example, Percona Server for MySQL 9.7 LTS via APT, DNF, or YUM), see [What's New in MySQL 9.x: Technical Migration Overview](whats-new-mysql-9.md) for breaking changes, compatibility, removed items, and defaults and tuning.
16+
1517
## Other installation methods
1618

1719
[Install Percona Server for MySQL from Binaries](binary-tarball-install.md){.md-button} <br> [Compile Percona Server for MySQL from Source](source-tarball.md){.md-button} <br> [Run Percona Server for MySQL in a Docker container](docker.md){.md-button}

docs/upgrade.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Review these documents to understand breaking changes, removed features, and com
4949

5050
* [Percona Toolkit updates for {{vers}}](./percona-toolkit-8.4-updates.md) - Review toolkit changes if you use Percona Toolkit
5151

52+
If you are planning an upgrade to the MySQL 9.x series (for example, to Percona Server for MySQL 9.7 LTS), see [What's New in MySQL 9.x: Technical Migration Overview](./whats-new-mysql-9.md) for breaking changes, compatibility, removed items, and defaults and tuning.
53+
5254
### Step 2: Complete pre-upgrade preparation
5355

5456
Work through the pre-upgrade checks in the [upgrade checklist](./upgrade-checklist-8.4.md). This includes:
@@ -137,12 +139,10 @@ Review these upgrade-related documents:
137139
* [Downgrade options](./downgrade.md)
138140

139141
* [Breaking and incompatible changes in {{vers}}](./8.4-breaking-changes.md)
140-
141142
* [Compatibility and removed items in {{vers}}](./8.4-compatibility-and-removed-items.md)
142-
143143
* [Defaults and tuning guidance for {{vers}}](./8.4-defaults-and-tuning.md)
144-
145144
* [Percona Toolkit updates for {{vers}}](./percona-toolkit-8.4-updates.md)
145+
* [What's New in MySQL 9.x: Technical Migration Overview](./whats-new-mysql-9.md) (for migration to 9.x / 9.7 LTS)
146146

147147
### Additional MySQL documentation
148148

docs/whats-new-mysql-9.md

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
# MySQL 9.x Innovation Series: Technical Migration Overview
2+
3+
Upgrading to the MySQL 9.x Innovation Series introduces stronger security defaults, improved scalability, and continued modernization of server internals. At the same time, legacy authentication methods, plugins, and configuration patterns are removed or retired.
4+
5+
This guide is intended for teams upgrading from MySQL 8.4 LTS to a Percona Server for MySQL release based on MySQL 9.x. It summarizes breaking changes, incompatible features, removed items, and new defaults that can affect compatibility, operations, and performance.
6+
7+
Use this document to identify required pre-upgrade actions and to plan configuration and application changes before moving to MySQL 9.x.
8+
9+
## Breaking and incompatible changes
10+
11+
Before upgrading to MySQL 9.x, address the following high-impact changes first.
12+
• mysql_native_password authentication plugin removed
13+
All accounts and applications using mysql_native_password must be migrated to a supported authentication plugin (for example, caching_sha2_password) before upgrading, or authentication failures will occur.
14+
• gtid_mode and enforce_gtid_consistency default to ON
15+
Replication topologies that rely on file-based or position-based replication must be reviewed and explicitly configured, or replication may fail to start after the upgrade.
16+
• keyring_file plugin removed
17+
Servers configured to load the keyring_file plugin must migrate to a supported keyring component before upgrading, or the server may fail to start.
18+
19+
Each section below explains what is affected, what to use instead, and what actions to take.
20+
21+
## Authentication and user management (9.0)
22+
23+
Impact
24+
• The mysql_native_password authentication plugin is removed as of MySQL 9.0.0. It was deprecated throughout MySQL 8.0.
25+
• Accounts configured to use mysql_native_password can no longer authenticate.
26+
• Clients that do not support CLIENT_PLUGIN_AUTH are rejected.
27+
• The server options --mysql-native-password, --mysql-native-password-proxy-users, and the default_authentication_plugin system variable are removed.
28+
29+
Replacement
30+
• Use caching_sha2_password or another supported authentication plugin.
31+
• New user accounts already default to caching_sha2_password in MySQL 8.4 and later.
32+
33+
Action
34+
• Identify all accounts and applications using mysql_native_password.
35+
• Migrate each account to a supported plugin before upgrading.
36+
37+
Example:
38+
39+
ALTER USER 'username'@'host.'
40+
IDENTIFIED WITH caching_sha2_password
41+
BY 'new_password';
42+
43+
• Remove all references to removed authentication options and variables from configuration files and scripts before upgrading.
44+
45+
46+
## GTID and replication defaults (9.0)
47+
48+
Impact
49+
• As of MySQL 9.0, gtid_mode defaults to ON.
50+
• enforce_gtid_consistency also defaults to ON.
51+
• Replication setups that are not GTID-based may fail to start if not explicitly configured.
52+
• enforce_gtid_consistency=ON disallows certain non-deterministic statements within transactions.
53+
54+
Replacement
55+
• Either migrate to GTID-based replication or explicitly disable GTID before starting the upgraded server.
56+
57+
Action
58+
• If you are not ready to migrate to GTID, set the following before upgrading:
59+
60+
gtid_mode=OFF
61+
enforce_gtid_consistency=OFF
62+
63+
• Review application SQL and stored programs for statements that are incompatible with enforce_gtid_consistency=ON.
64+
65+
66+
## --early-plugin-load removed (9.1)
67+
68+
Impact
69+
• The --early-plugin-load server option is removed in MySQL 9.1.
70+
• If present in configuration files, the server may fail to start.
71+
72+
Replacement
73+
• Use supported components and the component manifest mechanism (for example, mysqld.my).
74+
75+
Action
76+
• Scan configuration files for --early-plugin-load and remove it before upgrading.
77+
• Migrate affected functionality to components where applicable.
78+
79+
## mysql client parsing of \G and \C (9.1)
80+
81+
Impact
82+
• The mysql client now recognizes \G (vertical output) and \C (clear) only at the end of a statement.
83+
• Scripts that embed these tokens mid-statement may fail or behave differently.
84+
85+
Replacement
86+
• Use \G and \C only at statement boundaries.
87+
88+
Action
89+
• Review scripts and automation that use mysql -e or batch input and correct any mid-statement usage.
90+
91+
92+
## CREATE DATABASE and DROP DATABASE atomic (9.1)
93+
94+
Impact
95+
• CREATE DATABASE and DROP DATABASE are now atomic and crash-safe.
96+
• This is a behavior improvement and does not introduce incompatibilities for correct usage.
97+
98+
Action
99+
• No action required.
100+
101+
## `keyring_file` plugin removed (9.2)
102+
103+
Impact
104+
• The keyring_file plugin binary is no longer included as of MySQL 9.2.
105+
• Configurations that attempt to load it will fail.
106+
107+
Replacement
108+
• Use the component_keyring_file component for file-based keyring storage.
109+
110+
Action
111+
• Migrate keyring data and configuration to a supported keyring component.
112+
• Remove plugin load directives from configuration files before upgrading.
113+
114+
## `FLUSH PRIVILEGES` and related items deprecated (9.2)
115+
116+
Impact
117+
• FLUSH PRIVILEGES is deprecated and produces warnings.
118+
• The FLUSH_PRIVILEGES privilege, mysqladmin flush-privileges, and mysqladmin reload are deprecated.
119+
120+
Replacement
121+
• Use the recommended privilege-load behavior documented in the MySQL Reference Manual.
122+
123+
Action
124+
• Update scripts, automation, and operational runbooks to remove or replace deprecated commands.
125+
126+
127+
## Version Tokens plugin removed (9.3)
128+
129+
Impact
130+
• The Version Tokens plugin is deprecated in 9.2 and removed in 9.3.
131+
• Related functions, privileges, and system variables are removed.
132+
133+
Replacement
134+
• No direct replacement.
135+
136+
Action
137+
• Remove all usage of Version Tokens from configuration files and application code before upgrading.
138+
139+
## Connection Control plugins deprecated (9.2)
140+
141+
Impact
142+
• Both Connection Control plugins are deprecated and may be removed in a future release.
143+
144+
Replacement
145+
• Use the Connection Control component (component_connection_control).
146+
147+
Action
148+
• Migrate from plugins to the component and update any scripts or monitoring that reference deprecated tables or variables.
149+
150+
## Replica parallel workers minimum (9.3)
151+
152+
Impact
153+
• replica_parallel_workers can no longer be set to 0.
154+
• The minimum allowed value is 1.
155+
156+
Replacement
157+
• Use replica_parallel_workers = 1 for single-threaded behavior.
158+
159+
Action
160+
• Update configuration files before upgrading.
161+
162+
163+
## InnoDB variables removed (9.3)
164+
165+
Impact
166+
167+
The following InnoDB variables are removed:
168+
• innodb_log_file_size
169+
• innodb_log_files_in_group
170+
• innodb_undo_tablespaces
171+
172+
Redo and undo configuration is handled using new mechanisms.
173+
174+
Replacement
175+
176+
Removed variable MySQL 9.x approach
177+
innodb_log_file_size innodb_redo_log_capacity
178+
innodb_log_files_in_group Managed automatically
179+
innodb_undo_tablespaces Automatic undo management
180+
181+
Action
182+
• Remove variables from configuration files.
183+
• Review the current redo and undo configuration model in the MySQL Reference Manual.
184+
185+
186+
## IGNORE and scalar subqueries (9.0)
187+
188+
Impact
189+
• IGNORE no longer suppresses errors caused by scalar subqueries returning more than one row.
190+
• Statements such as INSERT IGNORE, UPDATE IGNORE, or DELETE IGNORE may now fail.
191+
192+
Replacement
193+
• Ensure scalar subqueries return at most one row.
194+
195+
Action
196+
• Review the application SQL and stored code and correct affected statements.
197+
198+
199+
## Inline foreign keys enforced (9.0)
200+
201+
Impact
202+
• Inline foreign key specifications that were previously parsed but ignored are now enforced.
203+
204+
Action
205+
• Review schema definitions and generated DDL.
206+
• Correct any statements that relied on previously ignored syntax.
207+
208+
## MD5() and SHA1() deprecated in SQL (9.4)
209+
210+
Impact
211+
• MD5() and SHA1() are deprecated as of MySQL 9.4.
212+
• They continue to work but may be removed in a future release.
213+
214+
Replacement
215+
• Use SHA2() or another supported hashing mechanism.
216+
217+
Action
218+
• Audit application code, stored procedures, and triggers, and plan a migration.
219+
220+
221+
## Group Replication and replication variables removed (9.5)
222+
223+
Impact
224+
• group_replication_allow_local_lower_version_join is removed.
225+
• replica_parallel_type and slave_parallel_type are removed.
226+
• The legacy semisynchronous replication plugins (semisync_master.so and semisync_slave.so) and their associated system and status variables (prefixed with rpl_semi_sync_) are removed in MySQL 9.5. Semisynchronous replication itself is not gone; only the old plugin-based implementation is removed.
227+
228+
Replacement
229+
• Semisynchronous replication is now provided by the Semisynchronous Replication Source and Replica components. Migrate to these components to keep semisync behavior.
230+
231+
Action
232+
• Remove the removed variables from configuration, monitoring, and automation.
233+
• Migrate to the Semisynchronous Replication Source and Replica components if you use semisync; update replication configuration to use the new components and supported mechanisms.
234+
235+
## Defaults and tuning guidance
236+
237+
Replication defaults (9.0)
238+
239+
Variable New default Previous
240+
gtid_mode ON OFF
241+
enforce_gtid_consistency ON OFF
242+
243+
## InnoDB and binary logging (9.5+)
244+
245+
• innodb_log_writer_threads default now depends on:
246+
• Whether binary logging is enabled
247+
• Number of logical CPUs
248+
• binlog_transaction_dependency_history_size default increased from 25,000 to 1,000,000; maximum increased to 10,000,000.
249+
250+
Existing explicit settings are preserved.
251+
252+
## Pre-upgrade checklist
253+
254+
• Remove all removed or deprecated variables, options, and plugins.
255+
• Validate authentication plugins and migrate off mysql_native_password.
256+
• Review replication topology and GTID strategy.
257+
• Review InnoDB redo and undo configuration.
258+
• Test upgrades, replication, and failover in staging before production.

mkdocs-base.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ nav:
273273
- 8.4-compatibility-and-removed-items.md
274274
- 8.4-defaults-and-tuning.md
275275
- percona-toolkit-8.4-updates.md
276+
- MySQL 9.x series:
277+
- whats-new-mysql-9.md
276278
- upgrade-checklist-8.4.md
277279
- upgrade-strategies.md
278280
- mysql-upgrade-paths.md

0 commit comments

Comments
 (0)