Replication Configuration

Length: 964 words; Published: October 20, 2014; Topic: General; Level: Beginner

In addition to the configuration for the database server, there are some specific options that you need to set to enable write-set replication. You must apply these changes to the configuration file (i.e., my.cnf) for each node in the cluster.

  • wsrep_cluster_name: Use this parameter to set the logical name for the cluster. You must use the same name for each node in the cluster. The connection will fail on nodes that have different values for this parameter.

  • wsrep_cluster_address: Use this parameter to define the IP addresses for the cluster in a comma-separated list.

    Note

    There are additional schemata and options available through this parameter. For more information on the syntax, see Cluster Addresses below.

  • wsrep_node_name: Use this parameter to define the logical name for the individual node—for convenience.

  • wsrep_node_address: Use this parameter to set explicitly the IP address for the individual node. It’s used when auto-guessing doesn’t produce desirable results.

[mysqld]
wsrep_cluster_name=MyCluster
wsrep_cluster_address="gcomm://192.168.0.1,192.168.0.2,192.168.0.3"
wsrep_node_name=MyNode1
wsrep_node_address="192.168.0.1"

Backend Schema

There are two backend schemata available with Galera Cluster.

  • dummy: This provides a pass-through back-end for testing and profiling purposes. It doesn’t connect to other nodes and will ignore any values given to it.
  • gcomm: This provides the group communications back-end for use in production. It accepts an address and has several settings that may be enabled through the option list, or by using the wsrep_provider_options parameter.

Cluster Addresses

For the cluster address section, you have to provide a comma-separate list of IP addresses for all of the nodes in the cluster. You would do this using the wsrep_cluster_address parameter. Cluster addresses are listed in the configuration file using a particular syntax, like so:

<backend schema>://<cluster address>[?<option1>=<value1>[&<option2>=<value2>]]

Below is an example of how this line from the configuration file might look:

wsrep_cluster_address="gcomm://192.168.0.1,192.168.0.2,192.168.0.3"

Here, the backend schema is gcomm. The cluster addresses (i.e., 192.168.0.1, etc.) are listed next, separted by commas. You can add options after that, within the quotes. You would start with a question mark, followed by each option setting. Option key/value pairs are separated by an ampersand. This is covered in the Options section below.

The IP addresses given in the configuration file should include any current members of the cluster. The list may also include the IP addresses of any possible cluster members. Members can belong to no more than one Primary Component;

If you start a node without proving an IP address for this parameter, the node will assume that it’s the first node of a new cluster. It will initialize the cluster as though you launched mysqld with the mysqld_bootstrap command.

Options

When setting the IP address in the configuration file using the wsrep_cluster_address parameter, you can also set some options. You can set backend parameters, such as the listen address and timeout values.

Note

The wsrep_cluster_address options list is not durable. The node must resubmit the options on each connection to a cluster. To make these options durable, set them in the configuration file using the wsrep_provider_options parameter.

The options set in the URL take precedent over parameters set elsewhere. Parameters you set through the options list are prefixed by evs (i.e., Extended Virtual Synchrony), pc (i.e., Primary Component) and gmcast.

For more information on the available parameters, see Galera Parameters.

When listing options, start with a question mark after the IP address list. Then provide the options in a key=value format. Key/value pairs must be separated by an ampersand. Below is an example of how this might look:

wsrep_cluster_address="gcomm://192.168.0.1, 192.168.0.2, 192.168.0.3 ? gmcast.segment=0 & evs.max_install_timeouts=1"

In this example, the segment option for gcomm and the max_install_timeouts option for evs are set.

Incidentally, if the listen address and port are not set in the parameter list, gcomm will listen on all interfaces. The listen port will be taken from the cluster address. If it’s not specified in the cluster address, the default port is 4567.