-
MySQL Cluster Performance Tuning Best Practices – Webinar replay available
Posted on February 5th, 2010 No commentsFor anyone that missed the recent webinar on getting the best performance out of MySQL Cluster then the replay is now available from mysql.com.
Are you experiencing current performance bottlenecks in your high availability applications ? Are you designing a new mission-critical application and want to know how best to structure your schema and index strategy for optimal performance? Interested in how to transform your SQL into faster, more efficient queries?
Then this free web presentation is for you! You will get expert insight and learn best practices to help you identify those areas of database and application design that will give you the greatest benefits for performance when using MySQL Cluster.
It discusses guidelines and best practices covering the following areas:
- General Design Concepts and Guidelines
- Schema Optimization
- BLOB/Text vs VARBINARY/VARCHAR
- Partition by Key
- Index Selection and Tuning
- Basic Query Tuning
- MySQL Cluster Parameter Tuning Guidelines
- Tools to accelerate application development and testing
-
Using NDBINFO – example of monitoring data nodes with MySQL Enterprise Monitor
Posted on February 4th, 2010 No comments
You may have read Bernd’s recent post that explained how to try out some new beta functionality for MySQL Cluster and wondered what kind of use you could put the new ndb$info to. ndb$info uses tables/views to give real-time access to a whole host of information that helps you monitor and tune your MySQL Cluster deployment. This article gives one example, extending MySQL Enterprise Monitor to keep an eye on the amount of free memory on the data nodes and then raise an alarm when it starts to run low – even generating SNMP traps if that’s what you need.One of the features of MySQL Enterprise Monitor is that you can define custom data collectors and that those data collectors can run SQL queries to get the data. The information retrieved by those custom data collectors can then be used with rules that the user defines through the MySQL Enterprise Monitor GUI to create warning/alarms.
In this example, I create two new data collectors and store the files in the “<MySQL Enterprise Monitor installation directory>/agent/share/mysql-proxy/items/” directory before starting up the MySQL Enterprise Monitor agents:
cluster_max_used.xml:
<?xml version="1.0" encoding="utf-8"?> <classes> <class> <namespace>mysql</namespace> <classname>cluster_max_used</classname> <query><![CDATA[SELECT MAX(used) as Used FROM ndbinfo.memoryusage WHERE DATA_MEMORY = 'DATA_MEMORY']]> </query> </class> </classes>cluster_min_avail.xml:
<?xml version="1.0" encoding="utf-8"?> <classes> <class> <namespace>mysql</namespace> <classname>cluster_min_avail</classname> <query><![CDATA[SELECT MIN(max)as Max FROM ndbinfo.memoryusage WHERE DATA_MEMORY = 'DATA_MEMORY']]> </query> </class> </classes>
In MySQL Enterprise Monitor, rules are grouped together into Advisors and so I create a new Advisor called “MySQL Cluster” and then create just one new rule within that Advisor group.
As shown in Fig. 1 the rule is called “Data Node Low Memory”. The “Variable Assignment” section is used to define 2 variables %used_mem% and %config_mem% which are populated from the Used and Max results from the 2 new data collectors. The “Expression” section is used to test “(Max - Used) < THRESHOLD” and then the values to be substituted for THRESHOLD are defined in the “Thresholds” section – indicating at what points the Info, Warning and Critical Alters should be raised.
There are then a number of optional sections that you can use to add useful information to the person investigating the alert.
Once the rule has been created, the next step is to schedule it and (if desired) tag that the alerts should also result in SNMP traps being raised. This is standard MySQL Enterprise Monitor practice and so it isn’t explained here except to point out that this rule is monitoring information from the data nodes but the rule has to be applied to a MySQL Server (MySQL Enterprise Monitor has no idea what a data node is) and so you need to schedule the rule against one or more arbitrary MySQL Server instances in the Cluster.
To test the functionality, start adding more data to your MySQL Cluster until the Warning alert is triggered as shown in Fig. 2. As you can see, the optional information we included is shown – including values from Used and Max.
I then add more data to the database until the critical alert is raised and confirm that it’s displayed on the main monitoring panel of the MySQL Enterprise Monitor dashboard. Note that if you requested these alerts be included with the SNMP feed then SNMP traps will also be raised.
Please note that this example is intended to illustrate the mechanics of setting up monitoring on an arbitrary piece of data from ndbinfo and obviously in the real world you would want to monitor more than just the memory and even for the memory, you might want to use a more sophisticated rule.
-
New twitter account for MySQL Cluster news
Posted on February 3rd, 2010 4 comments
A new twitter account has been created for communicating MySQL Cluster updates – follow it from http://twitter.com/clusterdb 
-
MySQL Cluster 7.0.11 source released
Posted on February 3rd, 2010 No commentsThe source version for MySQL Cluster 7.0.11 has now been made available at ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/mysql-5.1.41-ndb-7.0.11/
This replaces MySQL Cluster 7.0.10.
You can either wait for the binaries to be released or if you’re in a rush then you can find instructions on building the binaries for yourself in the earlier article: “MySQL Cluster 7.0.7 source released“.
A description of all of the changes (fixes) that have gone into MySQL Cluster 7.0.11 (compared to 7.0.11) can be found in the MySQL_Cluster_7_0_11_ChangeLog.
-
Location of MySQL documentation and binaries?
Posted on January 28th, 2010 No commentsYou may have noticed that the software downloads and documentation are not currently available from www.mysql.com. Don’t panic, you can download the software from dev.mysql.com. The documentation is also available from dev.mysql.com.
-
Upcoming webinar – MySQL performance tuning best practices
Posted on January 26th, 2010 2 commentsMySQL Cluster Performance Tuning Best Practices
Are you experiencing current performance bottlenecks in your high availability applications ? Are you designing a new mission-critical application and want to know how best to structure your schema and index strategy for optimal performance? Interested in how to transform your SQL into faster, more efficient queries?
Then this free web presentation is for you! You will get expert insight and learn best practices to help you identify those areas of database and application design that will give you the greatest benefits for performance when using MySQL Cluster.
We will discuss guidelines and best practices covering the following areas:
- General Design Concepts and Guidelines
- Schema Optimization
- BLOB/Text vs VARBINARY/VARCHAR
- Partition by Key
- Index Selection and Tuning
- Basic Query Tuning
- MySQL Cluster Parameter Tuning Guidelines
- Tools to accelerate application development and testing
Johan Andersson and Mat Keep will be presenting and I’ll be helping with the Q&A.
Tuesday, February 2, 2009: 10:00 CET (Central European Time)/ 09:00 UK/GMT.
-
Running MySQL Cluster over multiple Windows servers
Posted on January 20th, 2010 14 comments
Following on from the earlier article on running MySQL Cluster on a single Windows host, this one looks at installing and running over multiple Windows machines.Note that MySQL Cluster is still for development use only on Windows – use LINUX or Solaris for live deployments. For the latest status of which platforms are supported for development and deployment, refer to the Supported Platforms matrix.
In this post, the MySQL Cluster database will be split over 3 Windows machines:
- 2 hosts with each running 1 data node
- 3rd host running management node and 2 MySQL Servers
The first step is to download and install the software on each of the Windows hosts. There are 2 main ways that you can install MySQL Cluster on Windows – the first is an MSI installer and the second is extracting the files from a Zip archive – this article focuses on using the Zip file as the single host article used the MSI installer. You can get the Zip archive from the Cluster downloads page on mysql.com
Make sure that you choose the correct file MSI vs. Zip, 32 bit vs. 64 bit. Also make sure that you don’t download the source code rather than the binaries (you can tell the source archive as it’s a much smaller file).
Repeat this on each of the hosts that will run a Cluster node (or download it once and then copy it to each of the hosts).
Extract the contents of the Zip archive to “c:\mysql\cluster”.
I prefer to keep the configuration and data files separate from the software and so I create a new folder “MySQL_Cluster\My_Cluster” in my home directory and in there create “conf” and “data” folders. Within the “data” folder on 192.168.0.19, create a sub-folder for each of the 2 MySQL Server (mysqld) processes and then copy “c:\mysql\cluster\data\mysql” to each – this creates the mysql database for each of the MySQL nodes containing data such as privileges and password.
To get access to the executables from the command line, add “c:\mysql\cluster\bin” to the PATH environment variable.
Create a “config.ini” file within the “conf” folder that was created on the host to run the management node (ndb_mgmd) – which in this example is 192.168.0.19:
[ndbd default] noofreplicas=2 E:\am233268\Documents\MySQL_Cluster\My_Cluster\data\ [ndbd] hostname=192.168.0.201 id=2 [ndbd] hostname=192.168.0.4 id=3 [ndb_mgmd] id=1 hostname=192.168.0.19 mysqld] id=101 hostname=192.168.0.19 [mysqld] id=102 hostname=192.168.0.19As both of the MySQL Server nodes will also run on 192.168.0.19, we create a cnf file for each of them in that same “conf” folder:
my.101.cnf
[mysqld] ndb-nodeid=101 ndbcluster datadir=E:\am233268\Documents\MySQL_Cluster\My_Cluster\data\mysqld_1 port=3306 ndb-connectstring=192.168.0.19:1186my.102.cnf
[mysqld] ndb-nodeid=102 ndbcluster datadir=E:\am233268\Documents\MySQL_Cluster\My_Cluster\data\mysqld_2 port=3307 ndb-connectstring=192.168.0.19:1186Note that the “ndb-connectstring” is not strictly needed as the MySQL Servers happen to be on the same host as the management node but they’ve been included to make it clearer what to change if you moved those nodes to another machine.
The information from this table can help you set up the firewall rules to allow the nodes to communitcate with each other but if possible, turn off the firewall for connections between these 3 nodes.
The next step is to start the nodes (processes) but before then, a hint.
If you run each command from a different command prompt then your screen will quickly fill with Windows. Instead, rather than just typing “c:\ <command>” use “c:\ start /B <command>” (for example “c:\ start /B ndbd –initial”) so that multiple processes can be run from the same Window. To keep things simple, the “start /B” has been skipped for the rest of this article.
The first process to start is the management node; run the following from the “<home>\Documents\MySQL_Cluster\My_Cluster” folder on 192.168.0.19:
192.168.0.19: ndb_mgmd --initial -f conf/config.ini --configdir=./confNext, start the data nodes on 192.168.0.201 and 192.168.0.4:
192.168.0.201: ndbd -c 192.168.0.19:1186 --initial 192.168.0.4: ndbd -c 192.168.0.19:1186 --initialand then finally start the MySQL Server nodes on 192.168.0.19:
192.168.0.19: mysqld --defaults-file=conf\my.101.cnf 192.168.0.19: mysqld --defaults-file=conf\my.102.cnfFinally, check that all of the nodes are up and running:
192.168.0.19: ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.201 (mysql-5.1.39 ndb-7.0.9, Nodegroup: 0, Master) id=3 @192.168.0.4 (mysql-5.1.39 ndb-7.0.9, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.19 (mysql-5.1.39 ndb-7.0.9) [mysqld(API)] 2 node(s) id=101 @192.168.0.19 (mysql-5.1.39 ndb-7.0.9) id=102 @192.168.0.19 (mysql-5.1.39 ndb-7.0.9)Known limitation of running MySQL Cluster on Windows:
- No angel process for data nodes -> processes will not be automatically restarted even if you set StopOnError to FALSE
- Running nodes as Windows services is not really practical (as well as software limitations, would still need to activate processes through ndb_mgm)
- Safe to run management node or MySQL Servers (or NDB API Apps) on Windows in production: will soon be supported
- See open MySQL Cluster bugs reported for Windows:
- You tell us! Help us get to GA quality on Windows:
- bugs.mysql.com
- Category = MySQL Cluster
- OS = Microsoft Windows
- bugs.mysql.com
-
Upcoming webinars for Java and JPA access to MySQL Cluster
Posted on January 20th, 2010 No commentsMySQL have been working on a new way of accessing MySQL Cluster using Java. Designed for Java developers, the MySQL Cluster Connector for Java implements an easy-to-use and high performance native Java interface and OpenJPA plug-in that maps Java classes to tables stored in the high availability, real-time MySQL Cluster database.
There is a series of 2 webinars coming up, as always these are free to attend – you just need to register in advance:
Part 1: Tuesday, February 16, 2010: 10:00 Pacific time
- an overview of the MySQL Cluster Connector for Java
- what these technologies bring to Java developers
- implementation details of the MySQL Cluster Java API and Plug-In for OpenJPA
- configuring the connection to MySQL Cluster
- creating the Java Domain Object Model for your tables
- managing insert, update, and delete operations
- querying the database
- how to get started developing new Java applications using these interfaces
Tue, Feb 16: 08:00 Hawaii time
Tue, Feb 16: 11:00 Mountain time (America)
Tue, Feb 16: 12:00 Central time (America)
Tue, Feb 16: 13:00 Eastern time (America)
Tue, Feb 16: 18:00 UTC
Tue, Feb 16: 18:00 Western European time
Tue, Feb 16: 19:00 Central European time
Tue, Feb 16: 20:00 Eastern European timean overview of the MySQL Cluster Connector for Javawhat these technologies bring to Java developersimplementation details of the MySQL Cluster Java API and Plug-In for OpenJPAconfiguring the connection to MySQL Clustercreating the Java Domain Object Model for your tablesmanaging insert, update, and delete operationsquerying the databasehow to get started developing new Java applications using these interfacesPart 2: Wednesday, March 03, 2010: 10:00 Pacific time
- how MySQL Cluster Connector for Java coexists with existing OpenJPA / TopLink / JDBC-based apps
- how to evaluate the MySQL Cluster Connector for Java alternatives
- performance comparisons with both existing Java access and with native NDB API access to MySQL Cluster
- what the future holds for this technology
Wed, Mar 03: 08:00 Hawaii time
Wed, Mar 03: 11:00 Mountain time (America)
Wed, Mar 03: 12:00 Central time (America)
Wed, Mar 03: 13:00 Eastern time (America)
Wed, Mar 03: 18:00 UTC
Wed, Mar 03: 18:00 Western European time
Wed, Mar 03: 19:00 Central European time
Wed, Mar 03: 20:00 Eastern European timeThis functionality isn’t yet GA but it is available for you to try and we’d love to get feedback (which you can provide through the MySQL Cluster forum or by emailing cluster@lists.mysql.com
If you want to see for yourself then take a look at the Blog entry from Bernhard Ocklin – the engineering manager responsible for this work.
-
MySQL Cluster running on Windows – new Webinar
Posted on December 22nd, 2009 No commentsReplay now available from http://www.mysql.com/news-and-events/on-demand-webinars/display-od-445.html
I’ll be presenting a (free) webinar on installing, configuring and running MySQL Cluster on Windows – starting at 10:00 PT on 7th January – that’s 18:00 UK time or 19:00 for most of Europe. To attend, just register ahead of time at mysql.com
In this presentation we will explore the benefits of leveraging MySQL Cluster on Windows. We will also cover step by step, how to get started with installing, configuring, and running MySQL Cluster on Windows. Finally, a review of MySQL Cluster’s architecture and future roadmap for Windows support will be covered. If you are interested in learning how to leverage MySQL Cluster on Windows, this webinar is for you.
Thursday, January 07, 2010: 10:00 Pacific time (America)
Thu, Jan 07: 08:00 Hawaii time
Thu, Jan 07: 11:00 Mountain time (America)
Thu, Jan 07: 12:00 Central time (America)
Thu, Jan 07: 13:00 Eastern time (America)
Thu, Jan 07: 18:00 UTC
Thu, Jan 07: 18:00 Western European time
Thu, Jan 07: 19:00 Central European time
Thu, Jan 07: 20:00 Eastern European time -
MySQL Cluster 7.0.10 source released
Posted on December 16th, 2009 No commentsThe source version for MySQL Cluster 7.0.10 has now been made available at ftp://ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/mysql-5.1.39-ndb-7.0.10//
This replaces MySQL Cluster 7.0.9.
You can either wait for the binaries to be released or if you’re in a rush then you can find instructions on building the binaries for yourself in the earlier article: “MySQL Cluster 7.0.7 source released“.
A description of all of the changes (fixes) that have gone into MySQL Cluster 7.0.10 (compared to 7.0.9) can be found in the MySQL_Cluster_7_0_10_ChangeLog.












