Skip to content

Rate this page
Thanks for your feedback
Thank you! The feedback has been submitted.

Get free database assistance or contact our experts for personalized support.

Add nodes to cluster

New nodes that are properly configured are provisioned automatically. When you start a node with the address of at least one other running node in the wsrep_cluster_address variable, this node automatically joins and synchronizes with the cluster.

The command to start MySQL on a new node (for example, systemctl start mysql) triggers a State Snapshot Transfer (SST): the new node contacts an existing node (the Donor) and any existing data in the new node’s data directory is completely removed or overwritten by the cluster’s data. This is irreversible. Any existing data and configuration are overwritten to match the data and configuration of the DONOR node.

Before running systemctl start mysql (or service mysql start), complete the following tasks:

  • Ensure there is no unique or unbacked-up data on this server. If the node has local data you care about, back it up first or do not use this server as a joiner.

  • Confirm in my.cnf that wsrep_cluster_address points to the intended cluster.

  • Use a clean (empty) data directory on the new node to avoid conflicts; SST will overwrite it, but starting from a clean state is best practice.

Note

Add nodes one at a time to avoid the traffic and overhead of multiple simultaneous joins.

Percona XtraDB Cluster uses Percona XtraBackup for State Snapshot Transfer and the wsrep_sst_method variable is always set to xtrabackup-v2.

Start the second node

Start the second node using the following command:

[root@pxc2 ~]# systemctl start mysql

After the server starts, it receives SST automatically.

To check the status of the second node, run the following:

mysql@pxc2> show status like 'wsrep%';
Expected output
+----------------------------------+--------------------------------------------------+
| Variable_name                    | Value                                            |
+----------------------------------+--------------------------------------------------+
| wsrep_local_state_uuid           | a08247c1-5807-11ea-b285-e3a50c8efb41             |
| ...                              | ...                                              |
| wsrep_local_state                | 4                                                |
| wsrep_local_state_comment        | Synced                                           |
| ...                              |                                                  |
| wsrep_cluster_size               | 2                                                |
| wsrep_cluster_status             | Primary                                          |
| wsrep_connected                  | ON                                               |
| ...                              | ...                                              |
| wsrep_provider_capabilities      | :MULTI_MASTER:CERTIFICATION: ...                 |
| wsrep_provider_name              | Galera                                           |
| wsrep_provider_vendor            | Codership Oy <[email protected]>                |
| wsrep_provider_version           | 4.3(r752664d)                                    |
| wsrep_ready                      | ON                                               |
| ...                              | ...                                              | 
+----------------------------------+--------------------------------------------------+
75 rows in set (0.00 sec)

The output of SHOW STATUS shows that the new node has been successfully added to the cluster. The cluster size is now 2 nodes, it is the primary component, and it is fully connected and ready to receive write-set replication.

If the state of the second node is Synced as in the previous example, then the node received full SST is synchronized with the cluster, and you can proceed to add the next node.

Note

If the state of the node is Joiner, it means that SST hasn’t finished. Do not add new nodes until all others are in Synced state.

Starting the Third Node

To add the third node, start it as usual:

[root@pxc3 ~]# systemctl start mysql

To check the status of the third node, run the following:

mysql@pxc3> show status like 'wsrep%';

The output shows that the new node has been successfully added to the cluster. Cluster size is now 3 nodes, it is the primary component, and it is fully connected and ready to receive write-set replication.

Expected output
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | c2883338-834d-11e2-0800-03c9c68e41ec |
| ...                        | ...                                  |
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
| ...                        | ...                                  |
| wsrep_cluster_size         | 3                                    |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            | ON                                   |
| ...                        | ...                                  |
| wsrep_ready                | ON                                   |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)

Next steps

When you add all nodes to the cluster, you can verify replication by running queries and manipulating data on nodes to see if these changes are synchronized across the cluster.