Hero Image

Bootstrap a Percona XtraDB Cluster on Gentoo Linux

Bootstrap a Percona XtraDB Cluster on Gentoo Linux

Prerequisites

Three servers with PXC installed:

  • Node 1: 192.168.1.10
  • Node 2: 192.168.1.11
  • Node 3: 192.168.1.12

Step 1 – Configure Node 1 (/etc/mysql/my.cnf)

[mysqld]
server-id            = 1
datadir              = /var/lib/mysql
socket               = /var/lib/mysql/mysql.sock

# Galera settings
wsrep_on             = ON
wsrep_provider       = /usr/lib64/galera4/libgalera_smm.so

# Cluster name (same on all nodes)
wsrep_cluster_name   = "pxc_cluster"

# All cluster node addresses
wsrep_cluster_address= "gcomm://192.168.1.10,192.168.1.11,192.168.1.12"

# This node's address
wsrep_node_address   = "192.168.1.10"
wsrep_node_name      = "node1"

# SST (State Snapshot Transfer) method
wsrep_sst_method     = xtrabackup-v2
wsrep_sst_auth       = sstuser:SSTpass!

# InnoDB settings
innodb_autoinc_lock_mode = 2
default_storage_engine = InnoDB
innodb_locks_unsafe_for_binlog = 1

# Binary log
log_bin              = binlog
binlog_format        = ROW

Step 2 – Open firewall ports on all nodes

# RHEL/AlmaLinux:
firewall-cmd --permanent --add-port=3306/tcp   # MySQL
firewall-cmd --permanent --add-port=4444/tcp   # SST
firewall-cmd --permanent --add-port=4567/tcp   # Galera replication
firewall-cmd --permanent --add-port=4568/tcp   # IST
firewall-cmd --reload

# Ubuntu/Debian:
ufw allow 3306/tcp
ufw allow 4444/tcp
ufw allow 4567/tcp
ufw allow 4568/tcp

Step 3 – Bootstrap Node 1

systemctl stop mysql
systemctl start mysql@bootstrap

Or (older PXC):

mysqld_bootstrap

Step 4 – Create the SST user

CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'SSTpass!';
GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;

Step 5 – Verify cluster status

SHOW STATUS LIKE 'wsrep_%';
-- wsrep_cluster_size should be 1 (will increase as nodes join)
-- wsrep_local_state_comment: Synced