MySQL Cluster Evaluation Guide

Getting the most out of your MySQL Cluster Evaluation

 

Introduction

The purpose of this guide is to enable you to efficiently evaluate the MySQL Cluster database and determine if it is the right choice for your application, whether as part of a new project or an upgrade to an existing service.

This guide presents a brief overview of the MySQL Cluster database before then discussing:

  • Considerations before initiating an evaluation
  • Evaluation best practices
  • Configuration options and sanity checking
  • Troubleshooting

By following the recommendations in this Guide, you will be able to quickly and effectively evaluate MySQL Cluster and ultimately accelerate the time to market of your new service.

What is MySQL Cluster?

MySQL Cluster is a write-scalable, real-time in-memory, ACID-compliant transactional database, combining 99.999% availability with the low TCO of open source. Designed around a distributed, multi-master architecture with no single point of failure, MySQL Cluster scales horizontally on commodity hardware with auto-sharding to serve read and write intensive workloads, accessed via SQL and NoSQL interfaces.

MySQL Cluster's real-time design delivers predictable, millisecond response times with the ability to service millions of operations per second. Support for in-memory and disk-based data, automatic data partitioning (sharding) with load balancing and the ability to add nodes to a running cluster with zero downtime allows linear database scalability to handle the most unpredictable workloads. MySQL Cluster integrates the standard MySQL server with a clustered storage engine called NDB. The data within a MySQL Cluster can therefore be accessed via various MySQL connectors like PHP, Java or .NET as well as standard SQL. Data can also be accessed and manipulated directly using MySQL Cluster’s native NoSQL NDB API. This C++ interface provides fast, low-level connectivity to data stored in a MySQL Cluster.

Additional NoSQL interfaces are available that access the cluster through the NDB API. Java applications can get easy and efficient access to the data by using MySQL Cluster Connector for Java which provides two object-relational mapping persistence solutions – ClusterJ or ClusterJPA – both frameworks go directly to the NDB API rather than using JDBC and the MySQL Server. Both ClusterJ and JPA directly map Java objects to relational tables in the MySQL Cluster database. In MySQL Cluster 7.2, a plug-in for Memcached was introduced which enables Memcached clients to directly access tables via the standard Memcached protocol. MySQL 7.3 also added a driver for Node.js which provides direct access (not via SQL) to the data for JavaScript code running in an application server.

 

Guide to Scaling Web Databases with MySQL Cluster

Accelerating Innovation on the Web and in the Cloud

 

MySQL Cluster Architecture

The realities of today’s successful web and mobile services means developers and architects need to consider multiple dimensions to scalability:

  • The need to automatically scale writes, as well as reads, both within and across geographically dispersed data centers
  • The need to scale operational agility to keep pace with demand. This means being able to add and remove capacity and performance to the database, and to evolve the schema – all without downtime
  • The need to scale queries by having flexibility in the APIs used to access the database – including SQL and NoSQL interfaces

The architecture of MySQL Cluster is designed to accommodate these requirements with the following capabilities – all of which are discussed in more detail during the Guide:

  • Auto-sharding for write-scalability
  • In-memory, real-time responsiveness
  • Active/Active geographic replication
  • Online scaling and schema upgrades
  • SQL and NoSQL interfaces
  • 99.999% availability
  • GUI-based configuration and provisioning for DevOps ease-of-use.

MySQL Cluster is a highly scalable, real-time, ACID-compliant transactional database, combining 99.999% availability with the low TCO of open source. Designed around a distributed architecture with no single point of failure, MySQL Cluster scales horizontally on commodity hardware with auto-sharding to serve read and write intensive workloads, accessed via SQL and NoSQL interfaces.

MySQL Cluster's multi-master real-time design delivers predictable, millisecond response times with the ability to service millions of operations per second. Support for in-memory and disk-based data, automatic data partitioning (sharding) with load balancing and the ability to add nodes to a running cluster with zero downtime allows linear database scalability to handle the most unpredictable web-based workloads.

Alcatel-Lucent, Big Fish, PayPal, Shopatron, Telenor, Zillow and many more deploy MySQL Cluster in highly demanding web, mobile and cloud applications for the types of high-scale, mission-critical services discussed in the Introduction section.1

MySQL Cluster is also a key component of the MySQL Web Reference Architectures – a collection of repeatable best practices for building highly scalable and available web services, developed with the world’s leading web properties. The Web Reference Architectures are discussed in more detail later in this Guide. From an architectural perspective, MySQL Cluster comprises three types of node which collectively provide service to the application:

  • Data nodes manage the storage and access to data. Tables are automatically sharded across the data nodes which also transparently handle load balancing, replication, failover and self-healing.
  • Application nodes provide connectivity from the application logic to the data nodes. Multiple APIs are presented to the application. MySQL provides a standard SQL interface, including connectivity to all of the leading web development languages and frameworks. There are also a whole range of NoSQL inerfaces including memcached, JavaScript, REST/HTTP, C++ (NDB-API), Java and JPA.
  • Management nodes are used to configure the cluster and provide arbitration in the event of a network partition.

The roles played by each of these nodes in scaling web and cloud databases are discussed in the following sections of this Guide.