In my last blog post, I showed you how easy it is to set up a three node Percona XtraDB Cluster. But how do we know if the cluster is working or not? In this post I will go over the built-in variables that ship with Galera you can use to check on the status of your cluster. Before we dive in, it is important to realize that Galera is a multi-master cluster. This means that you can read and write to all the nodes. One of the implications of the manic that makes Galera work is that each node can be independently configured. As such, it is important that you check all the nodes, not just one, to determine the overall health of your cluster. For the rest of this post I will be only running the checks on one of the nodes for brevity. But you should really run these checks on all the nodes to ensure a fully functioning cluster.
Probably the most important variable is wsrep_cluster_status. This variable will tell you if the node is up and fully part of the cluster. If the node is fully part of the cluster this variable will return the status of Primary. Any other response and the node is not fully part of the cluster. You can check the status by running:
node1 mysql> SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.00 sec)
But checking the variable alone is not enough, because you can bootstrap all three nodes and have three seperate clusters. In this case, all three would return Primary but you would still not have a three node cluster. In order to tell if you if the node is part of the cluster you can use wsrep_cluster_size. This will tell you the number of nodes in the cluster.
node1 mysql> SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.00 sec)
For our simple three node example, this is probably good enough. But what if you work in an environment with multiple clusters. How can you tell if the node is part of the right cluster? To be sure we can use wsrep_cluster_state_uuid. All the nodes fully participating in the cluster should return the same value.
node1 mysql> SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid'; +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_state_uuid | c0803766-24db-11e5-ac7a-abcded9c6987 | +--------------------------+--------------------------------------+ 1 row in set (0.00 sec)
For more information on how to use wsrep variables to check on the health of your cluster you can use the Galera documentation. In future posts we will dive more into Galera.