Just as MySQL's open source architecture and liberal licensing terms have revolutionized the relational database market, MySQL Cluster's reliability, performance, and scalability capabilities let organizations with limited software and hardware budgets enjoy the same database processing power and dependability previously restricted to very large enterprises.
This chapter examines ways that you can exploit MySQL Cluster's capabilities to pry additional speed and consistency from your hardware and software, while charting a realistic plan for future growth. This chapter begins by explaining how clustering works, including a synopsis of key terms and concepts. The next section can be used as a guide to help determine if clustering is right for you and your unique data-processing needs.
After completing that task, this chapter examines some clustering strategies, with special attention on best practices. Finally, the chapter closes with a review of how to configure MySQL Cluster in your environment, with a particular focus on the performance ramifications of your choices.
Before beginning, it's a good idea to keep several facts in mind about the content found in this chapter:
Clustering is a highly complex topic, with many variables combining to determine the optimal structure and configuration for a given environment. To do the theme full justice would require an entire book. This chapter simply attempts to provide an overview and a start to your clustering journey, while citing key performance considerations; comprehensive coverage requires much more space than is available here.
In the best of circumstances, performance recommendations are highly subject to the vagaries of each installation's site-specific configuration and processing profile. Given the copious potential permutations of node relationships, this is especially true with clustering; consequently, this chapter makes relatively few absolute recommendations about parameter settings. Instead, it points out which of these variables might have the most relative impact on performance. The final arbiter is you the MySQL administrator.
Numerous utilities and other programs can be used to set up, monitor, and manage a MySQL cluster. Except as needed to illustrate a point, this chapter does not explore these modules, nor does it cover more than a relatively small percentage of all the MySQL Cluster settings: Only those variables that directly impact performance are reviewed.
At the time of this writing, clustering is supported in the 4.1 production versions of MySQL. You should note that the 5.x series will feature substantial new capabilities that will have a dramatic and positive impact on performance. The result of these improvements will make clustering more appropriate in many more situations.