Lab 03: MySQL Group Replication
Overview
Step 1: Create Network and Configuration Files
# Create Docker network
docker network create gr-network
# Create configuration directory
mkdir -p /tmp/gr-config
# Node 1 configuration
cat > /tmp/gr-config/node1.cnf <<'EOF'
[mysqld]
server-id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
log_bin=mysql-bin
log_slave_updates=ON
# Group Replication settings
plugin_load_add=group_replication.so
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=OFF
group_replication_local_address="mysql-node1:33061"
group_replication_group_seeds="mysql-node1:33061,mysql-node2:33061,mysql-node3:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_enforce_update_everywhere_checks=OFF
EOF
# Node 2 configuration
cat > /tmp/gr-config/node2.cnf <<'EOF'
[mysqld]
server-id=2
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
log_bin=mysql-bin
log_slave_updates=ON
plugin_load_add=group_replication.so
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=OFF
group_replication_local_address="mysql-node2:33061"
group_replication_group_seeds="mysql-node1:33061,mysql-node2:33061,mysql-node3:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_enforce_update_everywhere_checks=OFF
EOF
# Node 3 configuration (same structure, different server-id and local_address)
cat > /tmp/gr-config/node3.cnf <<'EOF'
[mysqld]
server-id=3
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=ROW
log_bin=mysql-bin
log_slave_updates=ON
plugin_load_add=group_replication.so
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=OFF
group_replication_local_address="mysql-node3:33061"
group_replication_group_seeds="mysql-node1:33061,mysql-node2:33061,mysql-node3:33061"
group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=ON
group_replication_enforce_update_everywhere_checks=OFF
EOF
echo "Configurations created!"
ls -la /tmp/gr-config/Step 2: Launch Three MySQL Nodes
Step 3: Create Replication User on All Nodes
Step 4: Bootstrap the Group on Node 1
Step 5: Add Nodes 2 and 3 to the Group
Step 6: Test Data Replication Across Group
Step 7: Single-Primary vs Multi-Primary Mode
Step 8: Capstone — Simulate Node Failure and Automatic Failover
Summary
Concept
Setting
Purpose
Key Takeaways
Last updated
