Limitations in Azure Database for MySQL - Flexible Server
This article describes limitations in Azure Database for MySQL - Flexible Server. General limitations in the MySQL database engine also apply. If you want to learn about resource limitations (compute, memory, storage), see the article about compute and storage.
Server parameters
Azure Database for MySQL - Flexible Server supports tuning the values of server parameters. Some parameters' minimum and maximum values (for example, max_connections
, join_buffer_size
, query_cache_size
) are determined by the compute tier and before you compute the size of the server. For more information about these limits, along with minimum and maximum values for server parameters like max_connections
and innodb_buffer_pool_size
, see the article about server parameters.
Generated invisible primary keys
For MySQL version 8.0 and later, generated invisible primary keys (GIPKs) are enabled by default for all Azure Database for MySQL - Flexible Server instances.
MySQL 8.0+ servers add the invisible column my_row_id
to the tables and a primary key on that column, where the InnoDB table is created without an explicit primary key. For this reason, you can't create a table that has a column named my_row_id
unless the table creation statement also specifies an explicit primary key. Learn more.
By default, GIPKs appear in the output of SHOW CREATE TABLE, SHOW COLUMNS, and SHOW INDEX. GIPKs are also visible in the INFORMATION_SCHEMA
COLUMNS and STATISTICS tables.
For more details on GIPKs and their use cases with data-in replication, see Replicate data into Azure Database for MySQL - Flexible Server.
Steps to disable a GIPK
If you want to disable a GIPK, you have two options:
Change the value of the sql_generate_invisible_primary_key server parameter to
OFF
by using the Azure portal or the Azure CLI.Connect to your Azure Database for MySQL - Flexible Server instance and run the following command:
mysql> SET sql_generate_invisible_primary_key=OFF;
lower_case_table_names
In Azure Database for MySQL - Flexible Server, the default value for lower_case_table_names
is 1
for MySQL version 5.7. If you need to adjust this setting, we recommend that you create a support ticket. It's important to understand that after you change the parameter value to 2
, reverting it to 1
isn't allowed.
For MySQL version 8.0, changing the lower_case_table_names
setting after the server is initialized is prohibited. Learn more. In Azure Database for MySQL - Flexible Server, the default value for lower_case_table_names
is 1
for MySQL version 8.0. If you want to change this parameter to 2
, we suggest that you create a MySQL 5.7 server and create a support ticket for assistance with the change. Later, if necessary, you can upgrade the server to version 8.0.
Storage engines
MySQL supports many storage engines. The following lists show which storage engines are supported and unsupported in Azure Database for MySQL - Flexible Server.
Supported engines
Unsupported engines
Privileges and data-manipulation support
Many server parameters and settings can inadvertently degrade server performance or negate the ACID (atomic, consistent, isolated, and durable) properties of the MySQL server. To maintain service integrity and the service-level agreement at a product level, Azure Database for MySQL - Flexible Server doesn't expose multiple roles.
Azure Database for MySQL - Flexible Server doesn't allow direct access to the underlying file system. Some data-manipulation commands aren't supported.
Supported privileges
LOAD DATA INFILE
is supported, but you must specify the[LOCAL]
parameter and direct it to a UNC path (Azure storage mounted through Server Message Block). If you're using MySQL client version 8.0 or later, you need to include the-–local-infile=1
parameter in your connection string.For MySQL version 8.0 and later, only the following dynamic privileges are supported:
Unsupported privileges
The database administrator (DBA) role is restricted. Alternatively, you can use the role of the administrator user who's assigned during creation of a new server. This role allows you to perform most of the Data Definition Language (DDL) and Data Manipulation Language (DML) statements.
The following static privileges are restricted:
Granting BACKUP_ADMIN privileges isn't supported for taking backups by using migration tools.
DEFINER
requiresSUPER
privileges to create and is restricted. If you're importing data by using a backup, manually remove theCREATE DEFINER
commands or use the--skip-definer
command when you're performing a mysqlpump backup.The mysql system database is read-only and supports various platform as a service (PaaS) functionalities. You can't make changes to the
mysql
system database.SELECT ... INTO OUTFILE
isn't supported in the service.
Functional limitations
Zone-redundant high availability
You can set a zone-redundant high-availability configuration only during server creation. This configuration isn't supported in the Burstable compute tier.
Network
You can't change the connectivity method after you create the server. If you create the server with private access (virtual network integration), it can't be changed to public access (allowed IP addresses) after creation, and vice versa.
Stop/start operations
Operations to stop and start the server are not supported with read replica configurations (both source and replicas).
Scale operations
Decreasing provisioned server storage isn't supported.
Server version upgrades
Automated migration between major database engine versions isn't supported. If you want to upgrade the major version, use a dump and restore on a server that you created with the new engine version.
Restore a server
With point-in-time restore, new servers have the same compute and storage configurations as the source server that they're based on. You can scale down the newly restored server's compute after you create the server.
Feature comparisons
Not all features available in Azure Database for MySQL - Single Server are available in Azure Database for MySQL - Flexible Server.
For the complete list of feature comparisons between Azure Database for MySQL - Single Server and Azure Database for MySQL - Flexible Server, see the article about choosing the right MySQL Server option in Azure.