You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/mysql/concepts-version-policy.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ A: Azure Database for MySQL enables you to carry out in-place major version upgr
103
103
104
104
__Q: Are there any expected downtime or performance impacts during a major version upgrade?__
105
105
106
-
A: Yes, there's some downtime during the major version upgrade process. The specific duration varies depending on factors such as the size and complexity of the database. We recommend conducting a test upgrade in a nonproduction environment to assess the expected downtime and evaluate potential performance. To minimize downtime for your applications during the upgrade, you can explore the option of [performing a minimal downtime major version upgrade using read replica](flexible-server/how-to-upgrade.md#perform-minimal-downtime-major-version-upgrade-using-read-replicas).
106
+
A: Yes, there's some downtime during the major version upgrade process. The specific duration varies depending on factors such as the size and complexity of the database. We recommend conducting a test upgrade in a nonproduction environment to assess the expected downtime and evaluate potential performance. To minimize downtime for your applications during the upgrade, you can explore the [recommended major version upgrade procedure across major versions](flexible-server/how-to-upgrade.md#recommended-major-version-upgrade-procedure-across-major-versions).
107
107
108
108
__Q: Can I roll back to a previous major version after upgrading?__
Copy file name to clipboardExpand all lines: articles/mysql/flexible-server/how-to-upgrade-faq.md
+27-1Lines changed: 27 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ ai-usage: ai-assisted
19
19
20
20
- Q: **Will this cause downtime of the server, and if so, how long?**
21
21
22
-
A. To have minimal downtime during upgrades, follow the steps mentioned under [Perform minimal downtime major version upgrade using read replicas](how-to-upgrade.md#perform-minimal-downtime-major-version-upgrade-using-read-replicas). The server is unavailable during the upgrade process, so we recommend you perform this operation during your planned maintenance window. The estimated downtime depends on the database size, storage size provisioned (IOPs provisioned), and the number of tables on the database. The upgrade time is directly proportional to the number of tables on the server. To estimate the downtime for your server environment, we recommend first performing an upgrade on a restored copy of the server.
22
+
A. To have minimal downtime during upgrades, follow the steps mentioned under [Recommended major version upgrade procedure across major versions](flexible-server/how-to-upgrade.md#recommended-major-version-upgrade-procedure-across-major-versions). The server is unavailable during the upgrade process, so we recommend you perform this operation during your planned maintenance window. The estimated downtime depends on the database size, storage size provisioned (IOPs provisioned), and the number of tables on the database. The upgrade time is directly proportional to the number of tables on the server. To estimate the downtime for your server environment, we recommend first performing an upgrade on a restored copy of the server.
23
23
24
24
- Q: **I'm using an HA server. Can I expect a near zero downtime experience for a major version upgrade, similar to routine maintenance?**
25
25
@@ -66,6 +66,32 @@ Until the upstream fix is available, take the following precautions before and a
66
66
- Set the session or server `time_zone` explicitly, and write datetime values without an inline offset so the server applies the configured timezone consistently.
67
67
- Validate a representative sample of newly inserted rows after the upgrade to confirm that stored values match the expected values.
68
68
69
+
### Performance regression for IN() queries on indexed string columns after upgrading to 8.4
70
+
71
+
In MySQL 8.4, a query that uses an `IN()` predicate on an indexed non-binary string column (for example, `VARCHAR` with a `utf8mb4` or `utf8mb3` non-binary collation such as `utf8mb4_0900_ai_ci`) can deteriorate to a full table or index scan when at least one value in the `IN()` list is longer than the column's defined length, or longer than a prefix index's defined length. Queries that previously used efficient index range scans on the same data in MySQL 5.7 or 8.0 might experience performance degradation after upgrading to 8.4.
72
+
73
+
This is a known MySQL community bug. For more information, see [MySQL Bug #118009](https://bugs.mysql.com/bug.php?id=118009).
74
+
75
+
#### Resolution
76
+
77
+
Until the fix is available on Azure Database for MySQL Flexible Server, use one or more of the following mitigations:
78
+
79
+
- Audit application queries that use `IN()` on indexed string columns, and filter or truncate values on the application side so that none of the values exceed the column's defined length (or the prefix index length).
80
+
- For affected queries, split the `IN()` list into multiple shorter `IN()` lists or `OR` conditions that exclude oversized values, so the optimizer can continue to use index range scans.
81
+
- Use binary collations (for example, `utf8mb4_bin`) or the `latin1` character set for affected columns, because these collations aren't impacted by this regression. Evaluate the change against your application's sorting and comparison requirements before adopting it.
82
+
- Review query plans by using `EXPLAIN` after the upgrade to identify queries that have switched from `range` to `ALL` or `index` access, and prioritize them for mitigation.
83
+
84
+
### Slowness or high CPU usage for SELECT queries with very large IN() lists after upgrading to 8.0 or 8.4
85
+
86
+
After upgrading to MySQL 8.0 or 8.4, `SELECT` queries that use an `IN()` predicate with an extremely large set of values (for example, several thousand or more values in a single `IN()` list) might exhibit significantly higher query latency and CPU usage compared to the same workload on MySQL 5.7. The optimizer's handling of very large `IN()` lists is more expensive in 8.0 and 8.4, and the cost grows with the number of values in the list.
87
+
88
+
#### Resolution
89
+
90
+
- Reduce the number of values passed in the `IN()` list. Where possible, refactor the application to send a smaller, more selective set of values per query.
91
+
- For workloads that need to filter against a large set of values, load the values into a temporary or staging table and use a `JOIN` against that table instead of a single large `IN()` list.
92
+
- Batch the query into multiple smaller queries with shorter `IN()` lists and combine the results in the application layer.
93
+
- Test the refactored queries on a read replica or restored copy of the server before applying changes to the primary.
94
+
69
95
## Related content
70
96
71
97
-[Major version upgrade in Azure Database for MySQL](how-to-upgrade.md)
Copy file name to clipboardExpand all lines: articles/mysql/flexible-server/how-to-upgrade.md
+16-4Lines changed: 16 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -171,13 +171,15 @@ To perform a major version upgrade of an Azure Database for MySQL Flexible Serve
171
171
172
172
1. Go to your primary server and perform a major version upgrade.
173
173
174
-
## Perform minimal downtime major version upgrade using read replicas
174
+
## Recommended major version upgrade procedure across major versions
175
175
176
-
To perform a major version upgrade of an Azure Database for MySQL Flexible Server with minimal downtime using read replica servers, perform the following steps.
176
+
To perform a major version upgrade of an Azure Database for MySQL Flexible Server with minimal downtime using read replica servers or PITR, perform the following steps.
177
+
178
+
### Using a Read replica
177
179
178
180
1. Select your existing Azure Database for MySQL Flexible Server instance in the Azure portal.
179
181
180
-
1. Create a [read replica](how-to-read-replicas-portal.md) from your primary server.
182
+
1. Create a [read replica](how-to-read-replicas-portal.md) from your existing primary server.
181
183
182
184
1. [Upgrade](#perform-a-planned-major-version-upgrade-using-the-azure-cli) your read replica to the target major version.
183
185
@@ -196,11 +198,21 @@ To perform a major version upgrade of an Azure Database for MySQL Flexible Serve
196
198
197
199
1. Set Server Parameter read_only to **0** (OFF) to start writing on the promoted primary.
198
200
199
-
1. Point your application to the new primary (former replica) running the target version. Each server has a unique connection string. Update your application to point to the (former) replica instead of the source.
201
+
1. Update your application to point to the new primary (former replica) running the target version. Each server has a unique connection string.
200
202
201
203
> [!NOTE]
202
204
> This scenario only incurs downtime during steps 4 through 7.
203
205
206
+
### Using Point-in-time restore (PITR)
207
+
208
+
1. Perform PITR of your existing Azure Database for MySQL Flexible Server.
209
+
210
+
1. Upgrade the PITR instance to the target version.
211
+
212
+
1. Test and tune your production load/queries on the upgraded PITR instance until the result is satisfactory.
213
+
214
+
1. Update your application to point to the new primary (PITR instance) running the target version. Each server has a unique connection string.
Copy file name to clipboardExpand all lines: articles/mysql/flexible-server/release-notes/may-2026.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ This version doesn't include any engine version changes.
35
35
36
36
- TLS certificates are now automatically renewed earlier in their lifecycle (at 84% of validity) and all certificates follow the same renewal schedule, reducing the chance of connection issues caused by certificate expiry.
37
37
38
-
- During this scheduled maintenance window, a few servers migrate from the current architecture to a dedicated Standard Load Balancer (SLB) - based architecture. The candidate servers are communicated through the usual maintenance notifications. This enhancement adds a dedicated SLB to HA configurations for servers created with public access or private endpoints. By managing the MySQL data traffic path, the SLB eliminates the need for DNS changes during failovers, significantly reducing failover time. There's a brief extra downtime (of around 30 seconds) while this migration is performed. This feature isn't supported by servers using private access with a virtual network integration.
38
+
- During this scheduled maintenance window, a few HA-enabled servers migrate from the current architecture to a dedicated Standard Load Balancer (SLB) - based architecture. The candidate servers are communicated through the usual maintenance notifications. This enhancement adds a dedicated SLB to HA configurations for servers created with public access or private endpoints. By managing the MySQL data traffic path, the SLB eliminates the need for DNS changes during failovers, significantly reducing failover time. There's a brief extra downtime (of around 30 seconds) while this migration is performed. This feature isn't supported by servers using private access with a virtual network integration.
0 commit comments