Galera Cluster System Tables
Starting with Galera 4 (used in MariaDB 10.4 and later), several system tables related to replication are available in the mysql
database. These tables can be queried by administrators to get a real-time view of the cluster's layout, membership, and current operations.
You can view these tables with the following query:
SHOW TABLES FROM mysql LIKE 'wsrep%';
+---------------------------+
| Tables_in_mysql (wsrep%) |
+---------------------------+
| wsrep_allowlist |
| wsrep_cluster |
| wsrep_cluster_members |
| wsrep_streaming_log |
+---------------------------+
mysql
vs. mariadb
You'll see queries referencing the mysql
database (e.g., FROM mysql.wsrep_cluster
). This is intentional. MariaDB, a MySQL fork, retains the mysql
name for its internal system schema to ensure historical and backward compatibility where it manages user permissions and system tables.
This is different from the command-line client, which should always be invoked as mariadb
.
These tables are managed by the cluster itself and should not be modified by users, with the exception of wsrep_allowlist
.
wsrep_allowlist
wsrep_allowlist
This table stores a list of allowed IP addresses that can join the cluster and perform a state transfer (IST/SST). It is a security feature to prevent unauthorized nodes from joining.
MariaDB [mysql]> DESCRIBE wsrep_allowlist;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| ip | char(64) | NO | PRI | NULL | |
+-------+----------+------+-----+---------+-------+
To add a new node to the allowlist, you can INSERT
its IP address:
INSERT INTO mysql.wsrep_allowlist(ip) VALUES('18.193.102.155');
If a node attempts to join and its IP address is not in the allowlist, the join will fail. The DONOR nodes will log a warning similar to this:
[Warning] WSREP: Connection not allowed, IP 3.70.155.51 not found in allowlist.
The joining node will fail with a connection timeout error.
wsrep_cluster
wsrep_cluster
This table contains a single row with a high-level view of the cluster's identity, state, and capabilities.
cluster_uuid
The unique identifier for the cluster.
view_id
Corresponds to the wsrep_cluster_conf_id
status variable, representing the current membership view ID.
view_seqno
The global transaction sequence number associated with this cluster view.
protocol_version
The wsrep protocol version in use.
capabilities
A bitmask of capabilities provided by the Galera library.
You can query its contents like this:
SELECT * FROM mysql.wsrep_cluster\G
*************************** 1. row ***************************
cluster_uuid: bd5fe1c3-7d80-11e9-8913-4f209d688a15
view_id: 3
view_seqno: 2956
protocol_version: 4
capabilities: 184703
wsrep_cluster_members
wsrep_cluster_members
This table provides a real-time list of all the nodes that are currently members of the cluster component.
node_uuid
The unique identifier for each individual node.
cluster_uuid
The UUID of the cluster this node belongs to.
node_name
The human-readable name of the node, set by the wsrep_node_name
parameter.
node_incoming_address
The IP address and port where the node is listening for client connections.
Querying this table gives you a quick overview of the current cluster membership:
SELECT * FROM mysql.wsrep_cluster_members ORDER BY node_name\G
*************************** 1. row ***************************
node_uuid: e39d1774-7e2b-11e9-b5b2-7696f81d30fb
cluster_uuid: bd5fe1c3-7d80-11e9-8913-4f209d688a15
node_name: galera1
node_incoming_address: AUTO
*************************** 2. row ***************************
node_uuid: eb8fc512-7e2b-11e9-bb74-3281cf207f60
cluster_uuid: bd5fe1c3-7d80-11e9-8913-4f209d688a15
node_name: galera2
node_incoming_address: AUTO
*************************** 3. row ***************************
node_uuid: 2347a8ac-7e2c-11e9-b6f0-da90a2d0a563
cluster_uuid: bd5fe1c3-7d80-11e9-8913-4f209d688a15
node_name: galera3
node_incoming_address: AUTO
wsrep_streaming_log
wsrep_streaming_log
This table contains metadata for Streaming Replication transactions that are currently in progress. Each row represents a write-set fragment. The table is typically empty unless a large or long-running transaction with streaming enabled is active.
node_uuid
The UUID of the node where the streaming transaction originated.
trx_id
The transaction identifier.
seqno
The sequence number of the specific write-set fragment.
flags
Flags associated with the fragment.
frag
The binary log events contained in the fragment.
Example of querying the table during a streaming transaction:
-- Enable streaming for the session
SET SESSION wsrep_trx_fragment_unit='statements';
SET SESSION wsrep_trx_fragment_size=1;
-- Start a transaction
START TRANSACTION;
INSERT INTO my_table VALUES (100);
-- Query the log table in the same session
SELECT node_uuid, trx_id, seqno, flags
FROM mysql.wsrep_streaming_log;
+--------------------------------------+--------+-------+-------+
| node_uuid | trx_id | seqno | flags |
+--------------------------------------+--------+-------+-------+
| a006244a-7ed8-11e9-bf00-867215999c7c | 26 | 4 | 1 |
+--------------------------------------+--------+-------+-------+
This page is licensed: CC BY-SA / Gnu FDL
Last updated
Was this helpful?