August 20, 2019
Topics: 6 minute read
MySQL is one of the most popular open-source database platforms used by cloud-native application developers. While major cloud service providers offer MySQL Database-as-a-Service options, certain applications might call for a VM-based deployment approach to MySQL in the cloud.
Because of its complexity, users may find it difficult to pin down the right cloud solution for their MySQL database. Considerations like performance, availability, and flexibility—as well as larger concerns like backup capabilities and security—are an essential part of the decision-making process. NetApp® Cloud Volumes Service for AWS offers a number of features to ensure that your database is available, flexible, and secure at all times.
Hosting MySQL in the Cloud
MySQL is a relational database management system (RDBMS) used to manage complex business transactions that need to perform operations such as searching, indexing, and updating data records. Compared to its enterprise counterparts, Oracle and SQL server, MySQL is preferred by the open-source community because it’s free to use and to modify, but it’s still able to handle large-scale data transactions.
Customers can choose from two models for MySQL deployment in the cloud: building a database using infrastructure-as-a-service (IaaS) components or going with one of the database-as-a-service (DBaaS) options provided by cloud service providers, like Amazon Relational Database Service (Amazon RDS). This deployment model depends on the user’s maturity in terms of their ability to address common MySQL hosting pain points.
Flexibility: Deploying databases in VMs provides a lot of flexibility. You can choose your MySQL edition and master database name, as well as the size of database, among other attributes. For instance, Amazon RDS for MySQL only supports a specific version of MySQL (Community Edition versions 5.5, 5.6, 5.7, and 8.0) and is restrictive, with a maximum table size of 16TB. The master user rights are also restrictive relative to the independent deployment of a MySQL instance in VMs, which could ultimately create bottlenecks, for instance, in migrating legacy systems to the cloud.
Performance: Applications may demand higher performance from their underlying storage. Amazon RDS for MySQL allows you to change the storage tier in order to do that, but it can lead to a brief outage when you trigger the switchover to a higher performance tier. That’s not ideal for mission-critical databases. The storage layer should be able to meet the changing performance needs of the database without any downtime.
Security: In the shared responsibility model, ensuring the security of data at rest is up to the customer. While using Amazon RDS for MySQL, the customer should enable the encryption option for the service to secure the data stored in databases. It’s not possible to encrypt a DB instance if that setting isn’t enabled during the provisioning process. Large-scale enterprises would benefit more from a seamless security management option, where data at rest and data in motion are both handled by the platform without any additional overhead for the DBA team.
Business continuity: The ability to restore data from a usable backup is an important part of meeting an application's recovery point objectives (RPOs) and recovery time objectives (RTOs). Amazon RDS for MySQL provides snapshot-based backups; however, it’s up to the customer to ensure that those backups are application-consistent and usable in the event of a disaster. The negative performance impact of pausing the database to create snapshots and added storage consumption for snapshots also needs to be taken into account. That goes for both DBaaS as well as IaaS-based MySQL deployments.
Availability: The DB should always remain available; it should be protected from both transient and ongoing outage within the hosting platform. Amazon RDS supports multi-AZ deployments to protect against DB-instance failures, but it could lead to increased write and commit latency relative to single-AZ deployments. This setup would impact the database’s performance. To compensate, users have to opt for higher-end DB instance classes.
While using a DBaaS might be beneficial for specific use cases, such as when an organization doesn’t want to go into a deep level of DB management, deployment of MySQL databases within the IaaS model provides more control over the compute and storage layers. With IaaS, users aren’t constrained by size, naming capabilities, or performance gaps that impact its DBaaS counterpart. IaaS also offers the same flexibility as on-premises deployments for end-to-end management of your data.
Using Cloud Volumes Service for MySQL
Cloud Volumes Service for AWS fits into the IaaS approach for running MySQL databases on AWS. With Cloud Volumes Service, MySQL databases benefit from high-performance storage, behind-the-scenes storage optimization, an instant, non-interruptive snapshot process, data encryption, and business continuity features that NetApp has provided enterprises for decades.
Assured Performance: Cloud Volumes Service offers three performance tiers with guaranteed SLAs that cater to multiple workloads that rely on MySQL. The performance tiers can be switched without impacting the hosted databases to meet your workload’s changing needs.
Data security: Cloud Volumes Service is secured with trusted NetApp encryption mechanisms. Those mechanisms are transparent and don’t require any additional configuration overhead. Data at rest is always protected with NetApp Volume Encryption, which uses AES 256-bit encryption and separate encryption keys for each volume. SMB/NFS protocol-level capabilities are used for protecting data in transit.
Storage layer availability: Cloud Volumes Service uses standard NetApp hardware and software behind the scenes and ensures high availability through the use of multiple network paths and failover mechanisms. Cloud Volume Service is placed centrally in a given AWS region so that data can be accessed from any Availability Zone without replication.
Backup and disaster recovery: Cloud Volumes Service snapshot copies offer a non-disruptive and storage efficient way of achieving your RPO and RTO targets for MySQL databases hosted in Cloud Volumes Service. Snapshots are taken without any performance overheads and can be used to easily spin up new volumes with point-in-time backups of the DB. Snapshots can be created using a schedule or users can create them ad hoc, for instance, to create a backup before making major database changes.
Data migration: Customers hosting MySQL DBs that are using on-premises NFS shares can make use of NetApp Cloud Sync technology to quickly and efficiently migrate data in any repository to the cloud. That makes it possible to continue using familiar architecture in the cloud without costly and time-consuming migration efforts.
Fine-Tuning MySQL Deployments with Cloud Volumes Service
Selecting the right VM instance type is also important when deploying MySQL using an IaaS model, since it will determine how fast data is retrieved from server cache memory. To speed up operations, one option is to use the innodb_buffer_pool_size setting in the MySQL config file. Another config setting that can be fine-tuned is innodb_io_capacity. This tells the MySQL engine the allowed IOPS amount based on the disk type in use.
While hosting databases in Cloud Volumes Service, customers can update their IOPS level depending on the performance tier selected. The Standard tier offers 4000 IOPS (4K IO), the Premium tier provides 16,000 IOPS (4K IO), and the Extreme tier comes with a guarantee of 32,000 IOPS (4K IO) per terabyte of storage. Cloud Volumes Service performance for MySQL has been proven using the TPC Benchmark C test, where throughput of up to 16Gbps was achieved from a single cloud volume. Cloud Volumes Service offers shorter query wait times and better performance for MySQL databases in the cloud.
SLAs Underpin Deployment in Cloud Volumes Service
All organizations expect optimal performance from their databases in the cloud. And Cloud Volumes Service for AWS is an excellent storage solution to meet the essential criteria for MySQL deployment in the cloud. Considering the extent of its SLAs, scalability, protection, and security features, enterprises can easily leverage NetApp Cloud Volumes Service to confidently provision new MySQL databases or to migrate existing ones into AWS.
Ready to Give It a Try?
To get the best performance on AWS for your MySQL database, get started with Cloud Volumes Service for AWS.