Enterprises of all kinds are running Pivotal Cloud Foundry at scale. These deployments have hundreds, often thousands, of app instances that need a reliable, persistent datastore. The applications that run on the platform are often mission-critical, requiring core features like scalability, availability, security, and operational efficiency for every layer of the stack. Certainly, the data layer is not exempt from these requirements.
Our modern “MySQL for PCF 2.x” naming reflects a renewed focus on these capabilities. This promise rings true in the latest release of the tile. MySQL for PCF 2.5 - now GA - includes highly available clusters as a beta feature, and it’s delivered through Galera clustering. Enterprise application developers and operators can now enjoy resilience and application availability even in the face of platform and network failures. We anticipate this capability will be fully GA in mid 2019.
This release is just the latest in our efforts to deliver you a rock-solid relational database service. Consider these other recent enhancements that have significantly improved the security and operational experience of running MySQL on PCF:
MySQL for PCF 2.0 introduced a new type of service, an on-demand offering compared to the pre-provisioned “1.0” service. This was initially released as a single-node system in MySQL for PCF 2.1.
This was followed by the addition of leader-follower configurations for disaster recovery, covered in this roll-up blog post for versions 2.2 and 2.3. We also added Transport Layer Security in version 2.3, which is now enabled by default in today’s 2.5 release.
MySQL v2.4 provides automated failovers, and resilience without intervention.
Another key theme is migration from MySQL v1 to MySQL v2. Now that we’ve added Galera to v2.5, many new migration paths are unlocked. To help you move to the new generation of the service, we’ve compiled a handy list of references for you. These are detailed below.
But let’s start by answering the question of when you should take advantage of the new availability capabilities in version 2.5.
Highly Available Clusters in MySQL 2.5
The availability features in MySQL 2.5 are most appropriate for applications with the lowest tolerance for downtime. For this use case, we are providing on-demand instances of three-node Galera clusters, which is clustering technology used with MySQL for ensuring high-availability. The three-node configuration ensures that the system is not in a vulnerable state even after the failure of a single node.
The addition of clustering in MySQL v2.5 brings forth the following benefits:
Developers can spin up MySQL clusters, on-demand, via self-service. They simply choose from a set of available plans. Operators configure these plans that provide a highly available topology. This does more than bring us to parity with the older generation of MySQL 1.x. In v1.x, the virtual machines running MySQL instances were pre-provisioned, and therefore inefficient. Your capacity was allotted to a potential need, not a confirmed one. In v2.5, Galera clusters are provisioned on-demand.
Data loss is prevented because the system replicates/updates data across the cluster and access to data is possible even after a node failure. These updates are near-synchronous, with a slight lag. The vast majority of updates to data are kept fully consistent.
Availability is maintained in case of a node failure. Failover to an alternate node is fully automated.
Data consistency is maintained in the case of a network partition (also known as a split brain condition). When this occurs, an isolated node can take itself off-line and stop accepting updates because it can recognize that it’s not part of a quorum (i.e., it’s not part of the sub-partition with a majority of nodes). This is why having three nodes is important for establishing a quorum.
An external load balancer is not required. Previously, we required operators to acquire and manually configure an external load balancer. In v2.5, we use BOSH DNS for this. In the spirit of on-demand provisioning, no external componentry is required - the platform abstracts all of this away for you!
MySQL 2.5 Helps You Reduce Planned Downtime
In addition to providing resilience after un-planned failures, the ability to use Galera clusters also eliminates planned downtime for maintenance of your MySQL deployment. In either case, your app is still able to access the database and operate as expected.
Upgrades are a good example of eliminating planned downtime. Say you’re applying a patch or upgrading the MySQL tile. It’s quite likely that a given node will need downtime, but your users don’t have to notice it. Here’s why: When you upgrade ‘all service instances’, the platform rolls through each service instance and upgrades it. In this scenario, everything is automated and hands-off.
Galera allows us to do online release upgrades without the downtime across the entire cluster.
Visibility into Failures and How the System Resolved Them
Developers and operators need to know when the system has successfully handled a failure. With v2.5, this information is readily available through an APM tool or through an apps manager dashboard for managing service instances. This is a continuation of our efforts to provide better metrics for the health of the system. In v2.4, we made it possible for developers to see metrics for their service instances via the CF CLI (“cf tail” command).
If the system can’t automatically recover (e.g., all 3 nodes go down), we make it possible for operators to take actions to diagnose and remedy the issue.
Migrating from MySQL for PCF 1.x to MySQL for PCF 2.5
Developers now have a clear and straightforward migration path from v1.x straight to highly available clusters in v2.5. This migration is also required for keeping up with PCF releases - PCF 2.4 does not support MySQL v1.x.
We have assembled a number of resources to simplify this migration, including a migration tool for moving data across service instances that are hosted on separate foundations. This migration tool is a CF CLI plugin (called MysqlTools) can be acquired here. Additional resources include a demo video, documentation, and github repo instructions for the plugin.
Highly Available and Highly Approachable
With self-service, on-demand provisioning of highly available Galera clusters, developers can receive the benefits of improved availability for more applications.
However, high availability is not a simple, single feature, but rather a theme that requires work on multiple fronts. MySQL v2.5 is a big step forward, and we will continue to see deeper coverage of availability, security and other themes in our roadmap, both within and across data centers. We’re looking forward to advancing past the beta status of Galera clusters in MySQL v2.5 to a production-ready version of this feature in mid 2019.
We think MySQL v2.5 will be a happy destination for our v1.x customers. The journey requires a migration, but we have made this easier with a good complement of resources.
About the AuthorMore Content by Jagdish Mirani