Azure MySQL claims to provide a fully-managed, enterprise-ready MySQL experience while hosting MySQL Community. Let's see how Azure's hosting service stacks up against MySQL 8.0 Enterprise.
Category: Product Comparison
ySQL 8.0 Enterprise is cloud friendly - that means Oracle will happily let you run MySQL 8.0 Enterprise in any cloud provider you wish, so long as you obtain proper licensing for it. You also have the option of installing to a VM or to a container - Oracle maintains Docker images for MySQL 8.0 Enterprise among other products in their portfolio.
On the other hand, Microsoft's offering is the open-source Community edition of MySQL, which is freely downloaded to the general public. It's essentially a co-opt of an open-source product by a hosting company - not an uncommon practice in today's cloud ecosystem (or before that, even), but as we've detailed in this website, there are some pretty stark feature gaps between the product editions, gaps that Microsoft does little to nothing to fill.
Security
Microsoft gives you the options you would expect from a hosting company - SSL connectivity, a network firewall, and their Advanced Threat Protection which is currently under public preview (not GA). This product monitors for events such as connection events from unusual locations, brute force attacks, and access from unusual apps or users, and reports these events to the Azure Security Center for further remediation by whoever is in charge of such things.
In a MySQL Enterprise installation, you get all of these (except the Azure Security Center integration) and other features explained here such as:
- keyring encryption
- MySQL Enterprise Firewall, which lets you restrict the SQL commands used against your database
- data masking and de-identification
Another important consideration when comparing Azure MySQL to MySQL Enterprise is compliance. For the most part, Azure hosted MySQL is on-par in compliance with MySQL Enterprise, with two minor differences. The first one is, MySQL Enterprise is FIPS compliant, which is no minor feat. Secondly, Azure MySQL availability is somewhat limited in its datacenters, though it appears to be more unavailable in Azure Government than commercial, so if you're a government customer looking for MySQL, Enterprise is the way to go - but you, government customer, probably knew that already.
Authentication
Let's start with the important one: Azure MySQL does not support Active Directory authentication. You only get this feature through MySQL 8.0 Enterprise, which also supports Linux PAM as well as MySQL users, which is the only Azure MySQL authentication option supported.
Scalability
If you're looking to scale out your number of connections to your Azure Hosted MySQL instance, it's going to be entirely dependent on your machine hardware. It also uses a gateway system of public IPs (based on the data center you're using) that routes your external connections to your hosted environment.
In MySQL Enterprise, you get the thread pool component, which does a fantastic job of giving your environment sustained, stable scalability well beyond what's supported in Azure MySQL's Community Edition platform.
Backups
Azure MySQL supports full, differential and transaction log backups that are encrypted and have a default retention period of seven days. What it lacks in enterprise-level options, Azure does a good job of making sure your system is backed up well and often.
MySQL Enterprise backups have more options, but there could also be some limitations in getting those backups into your storage account in your Azure subscription; however, any limitations in direct storage account access can be circumvented by using Azure File storage mounted to your MySQL server instance.
Support
The one area where Oracle wins hands-down is with Oracle Lifetime Support which comes at no additional cost to MySQL Enterprise licensees. For the cost of the Enterprise license, you not only get all of the feature differences listed above, but you also get hands-on, consultative support with any issue you may face with the MySQL database platform.
Microsoft does not offer any kind of exclusive support to their hosted MySQL product; instead, you have to purchase one of their support plans. To get the equivalent support for Azure MySQL as you get with MySQL Enterprise, you have to purchase their Premier Support option, which does not list a price but can easily run into the tens or hundreds of thousands of dollars for a contract. To be fair, it will cover the Azure platform in its entirety, including Azure MySQL, so it's really up to you, the enterprise customer, as to what you determine to be the better value there.
The other thing to keep in mind is that Enterprise customers get bug fixes sooner than Community Edition members do, if only by virtue of being further up the support chain than those not paying for the platform.
Other Azure MySQL Limitations
From the Resource Limitations page in the Azure MySQL documentation, there are some other limits to keep in mind, including (but not limited to):
- Your maximum number of connections will be limited to 10k on a General Purpose VM with 64 cores or a Memory Optimized VM with 32.
- Only InnoDB and Memory database engines are supported
DBA
role,SUPER
privilege andDEFINER
are all restricted
But wait, there's more - There's a list of known issue and limitations when migrating into Azure MySQL, which include the following:
- no
JSON
datatype support - no
LOB
datatype support - no migrating MySQL 5.6 into 5.7
- collations and schemas must be the same between source and destination
- No foreign keys
Other limitations around data types and index nuances are in there as well, so make sure you read that document if you ever considered migrating into Azure MySQL.
If you're considering deploying MySQL 8.0 Enterprise into Azure or any other cloud provider, contact us first so we can discuss your options. If you're looking for a managed service provider (you know, so you don't have to manage all those pesky upgrades), give us a chance to earn your business, or at least make sure you have all the licensing you need.