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

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 requires SUPER privileges to create and is restricted. If you're importing data by using a backup, manually remove the CREATE 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.