www.fromdual.com
1 / 31
MySQL always-up
with Galera Cluster
SLAC 2014
May 14, 2014, Berlin
by oli.sennhauser@fromdual.com
www.fromdual.com
www.fromdual.com
2 / 31
About FromDual GmbH
● FromDual provides neutral and independent:
● Consulting for MySQL, Galera Cluster, MariaDB and
Percona Server
● Support for all MySQL and Galera Cluster
● Remote-DBA Services for all MySQL
● MySQL Training
● Open Source Business Alliance (OSBA)
● Member of SOUG, DOAG, /ch/open
www.fromdual.com
www.fromdual.com
3 / 31
Always-up? :-(
● Its also about maintenance...
● Who loves night-shifts?
● Who loves weekend-work?
● Who does regular upgrade (DB, kernel, etc.)?
● Who does regular reboots (after kernel
upgrade)?
● Why are you not doing it in your office hours?
www.fromdual.com
4 / 31
The Galera Cluster for MySQL
www.fromdual.com
5 / 31
Maintenance time...
App
Load balancing (LB)
Node 2Node 1
wsrep
Galera replication
wsrep
Node 3
wsrep
Upgrade
RAM/HW
O/S
DB?
www.fromdual.com
6 / 31
Advantages / Disadvantages
Based on InnoDB SE
Synchronous replication → No lost transaction
Active-active multi-master Cluster
→ Read and write to any cluster node (no r/w split any more!)
Read scalability and higher write throughput (Flash-Cache?)
Automatic node membership control
Rolling Restart (Upgrade of Hardware, O/S, DB release, etc.)
True parallel replication, on row level → No slave lag
A bit more complicated than normal MySQL, but similar
complexity as M/S Replication!
No original MySQL binaries → Codership MySQL binaries
Be aware of Hot Spots on rows: Higher probability of deadlocks
www.fromdual.com
7 / 31
Quorum and Split-brain
● What is the problem?
● Split-brain → bad!
● Galera is a pessimistic Cluster → good!
● Quorum: FLOOR(n/2+1)
→ more than half! → 3-node Cluster (or 2+1)
?
www.fromdual.com
8 / 31
Quorum
www.fromdual.com
9 / 31
Installation and Configuration
www.fromdual.com
10 / 31
Installation
● Galera Cluster consists of:
● A patched Codership MySQL (mysqld)
● Or MariaDB Galera Cluster
● Or Percona XtraDB Cluster
● The Galera Plugin (libgalera_smm.so)
● Ways of installation
● Packets (RPM, DEB)
● Binary tar-ball
● Patch MySQL source and compile both
● Download http://galeracluster.com/downloads/
www.fromdual.com
11 / 31
MySQL Configuration
my.cnf
[mysqld]
default_storage_engine         = InnoDB
binlog_format                  = row
innodb_autoinc_lock_mode       = 2   # parallel applying
innodb_flush_log_at_trx_commit = 0   # performance only!
query_cache_size               = 0   # Galera 3   experimental→
query_cache_type               = 0   # Mutex! Consistency!
www.fromdual.com
12 / 31
Galera Configuration
my.cnf (conf.d/wsrep.cnf)
[mysqld]
# wsrep_provider = none
wsrep_provider = …/lib/plugin/libgalera_smm.so
# wsrep_cluster_address = "gcomm://"
wsrep_cluster_address = "gcomm://ip_node2,ip_node3"
wsrep_cluster_name = 'Galera Cluster'
wsrep_node_name = 'Node A'
wsrep_sst_method = mysqldump
wsrep_sst_auth = sst:secret
www.fromdual.com
13 / 31
Operations
www.fromdual.com
14 / 31
Initial Cluster start
● Start very 1st node with:
wsrep_cluster_address = "gcomm://"
or
mysqld_safe ­­wsrep­cluster­address="gcomm://"
● → this tells the node to be the first one!
● All other nodes normal:
service mysqld start
www.fromdual.com
15 / 31
Rolling Restart
● Scenario:
● Hardware-, O/S-, DB- and Galera-Upgrade
● MySQL configuration change
● During full operation!!! (99.999% HA, 5x9 HA)
● → Rolling Restart
● Start one node after the other in a cycle
● New features or settings are used after Rolling
Restart is completed
www.fromdual.com
16 / 31
Demo?
www.fromdual.com
17 / 31
Load Balancing
● Connectors
● Connector/J
● PHP: MySQLnd replication and load balancing
plug-in
● SW Load Balancer
● GLB, LVS/IPVS/Ldirector, HAProxy
● HW Load Balancer
www.fromdual.com
18 / 31
Location of Load Balancing
www.fromdual.com
19 / 31
Demo?
www.fromdual.com
20 / 31
Catch Node State Change
● Node State Change
● Initialized (0), Joining (1), Donor/Desynced (2), Synced (4), ...
● Galera node acts as follows;
● ERROR 2013 (HY000): Lost connection to MySQL 
server at 'reading initial communication packet', 
system error: 2
● ERROR 1047 (08S01) at line 1: Unknown command
→ this is ugly!
● Catch the state change with:
● wsrep_notify_cmd
● To start Firewall Rules (REJECT)
● To take node out of Load Balancer
www.fromdual.com
21 / 31
Demo?
www.fromdual.com
22 / 31
Online Schema Upgrade (OSU)
● Schema Upgrade = DDL run against the DB
● Change DB structure
● Non transactional
● 2 Methods:
● Total Order Isolation (TOI) (default)
● Rolling Schema Upgrade (RSU)
● wsrep_osu_method = {TOI|RSU}
www.fromdual.com
23 / 31
Total Order Isolation (TOI)
● Default
● Part of the database is locked for the
duration of the DDL.
+ Simple, predictable and guaranteed data
consistency.
- Locking operation
● Good for fast DDL operations
www.fromdual.com
24 / 31
Rolling Schema Upgrade (RSU)
● DDL will be only processed locally at the
node.
● Node is desynchronized
● After DDL, delayed write sets are applied
● DDL should be manually executed at each
node.
+ only blocking one node at a time
- potentially unsafe and may fail if new and
old schema are incompatible
● Good for slow DDL operations
www.fromdual.com
25 / 31
Other security related stuff
www.fromdual.com
26 / 31
Caution!
!
www.fromdual.com
27 / 31
Galera Network Configuration
www.fromdual.com
28 / 31
WAN – Cluster
● WAN = Wide Area Network
● Connect 2 or more locations over a public or
private Network
● What are the problems?
● Round Trip Time (RTT)
● Throughput
● Network Stability
● Wrong set-ups
www.fromdual.com
29 / 31
Communication encryption
● 2 Possibilities:
1.) Make Network secure (V-LAN, VPN with SSL, stunnel)
2.) Encrypt Galera communication with SSL
● Caution: only Galera replication is affected!
● NOT State Snapshot Transfer (SST, mysqldump | mysql, 
rsync)
● NOT Client connection (mysql), use MySQL SSL
encryption!
● But Incremental State Transfer (IST) IS affected (= Galera
Protocol)!
● We recommend for ease of use: Do it on Network
level!
www.fromdual.com
30 / 31
Wir suchen noch:
● Datenbank Enthusiast/in für
Support / remote-DBA / Beratung
www.fromdual.com
31 / 31
Q & A
Questions ?
Discussion?
We have time for some face-to-face talks...
● FromDual provides neutral and independent:
● Consulting
● Remote-DBA
● Support for MySQL, Galera, Percona Server and MariaDB
● Training
www.fromdual.com

MySQL always-up with Galera Cluster

  • 1.
    www.fromdual.com 1 / 31 MySQLalways-up with Galera Cluster SLAC 2014 May 14, 2014, Berlin by oli.sennhauser@fromdual.com www.fromdual.com
  • 2.
    www.fromdual.com 2 / 31 AboutFromDual GmbH ● FromDual provides neutral and independent: ● Consulting for MySQL, Galera Cluster, MariaDB and Percona Server ● Support for all MySQL and Galera Cluster ● Remote-DBA Services for all MySQL ● MySQL Training ● Open Source Business Alliance (OSBA) ● Member of SOUG, DOAG, /ch/open www.fromdual.com
  • 3.
    www.fromdual.com 3 / 31 Always-up?:-( ● Its also about maintenance... ● Who loves night-shifts? ● Who loves weekend-work? ● Who does regular upgrade (DB, kernel, etc.)? ● Who does regular reboots (after kernel upgrade)? ● Why are you not doing it in your office hours?
  • 4.
    www.fromdual.com 4 / 31 TheGalera Cluster for MySQL
  • 5.
    www.fromdual.com 5 / 31 Maintenancetime... App Load balancing (LB) Node 2Node 1 wsrep Galera replication wsrep Node 3 wsrep Upgrade RAM/HW O/S DB?
  • 6.
    www.fromdual.com 6 / 31 Advantages/ Disadvantages Based on InnoDB SE Synchronous replication → No lost transaction Active-active multi-master Cluster → Read and write to any cluster node (no r/w split any more!) Read scalability and higher write throughput (Flash-Cache?) Automatic node membership control Rolling Restart (Upgrade of Hardware, O/S, DB release, etc.) True parallel replication, on row level → No slave lag A bit more complicated than normal MySQL, but similar complexity as M/S Replication! No original MySQL binaries → Codership MySQL binaries Be aware of Hot Spots on rows: Higher probability of deadlocks
  • 7.
    www.fromdual.com 7 / 31 Quorumand Split-brain ● What is the problem? ● Split-brain → bad! ● Galera is a pessimistic Cluster → good! ● Quorum: FLOOR(n/2+1) → more than half! → 3-node Cluster (or 2+1) ?
  • 8.
  • 9.
  • 10.
    www.fromdual.com 10 / 31 Installation ●Galera Cluster consists of: ● A patched Codership MySQL (mysqld) ● Or MariaDB Galera Cluster ● Or Percona XtraDB Cluster ● The Galera Plugin (libgalera_smm.so) ● Ways of installation ● Packets (RPM, DEB) ● Binary tar-ball ● Patch MySQL source and compile both ● Download http://galeracluster.com/downloads/
  • 11.
    www.fromdual.com 11 / 31 MySQLConfiguration my.cnf [mysqld] default_storage_engine         = InnoDB binlog_format                  = row innodb_autoinc_lock_mode       = 2   # parallel applying innodb_flush_log_at_trx_commit = 0   # performance only! query_cache_size               = 0   # Galera 3   experimental→ query_cache_type               = 0   # Mutex! Consistency!
  • 12.
    www.fromdual.com 12 / 31 GaleraConfiguration my.cnf (conf.d/wsrep.cnf) [mysqld] # wsrep_provider = none wsrep_provider = …/lib/plugin/libgalera_smm.so # wsrep_cluster_address = "gcomm://" wsrep_cluster_address = "gcomm://ip_node2,ip_node3" wsrep_cluster_name = 'Galera Cluster' wsrep_node_name = 'Node A' wsrep_sst_method = mysqldump wsrep_sst_auth = sst:secret
  • 13.
  • 14.
    www.fromdual.com 14 / 31 InitialCluster start ● Start very 1st node with: wsrep_cluster_address = "gcomm://" or mysqld_safe ­­wsrep­cluster­address="gcomm://" ● → this tells the node to be the first one! ● All other nodes normal: service mysqld start
  • 15.
    www.fromdual.com 15 / 31 RollingRestart ● Scenario: ● Hardware-, O/S-, DB- and Galera-Upgrade ● MySQL configuration change ● During full operation!!! (99.999% HA, 5x9 HA) ● → Rolling Restart ● Start one node after the other in a cycle ● New features or settings are used after Rolling Restart is completed
  • 16.
  • 17.
    www.fromdual.com 17 / 31 LoadBalancing ● Connectors ● Connector/J ● PHP: MySQLnd replication and load balancing plug-in ● SW Load Balancer ● GLB, LVS/IPVS/Ldirector, HAProxy ● HW Load Balancer
  • 18.
  • 19.
  • 20.
    www.fromdual.com 20 / 31 CatchNode State Change ● Node State Change ● Initialized (0), Joining (1), Donor/Desynced (2), Synced (4), ... ● Galera node acts as follows; ● ERROR 2013 (HY000): Lost connection to MySQL  server at 'reading initial communication packet',  system error: 2 ● ERROR 1047 (08S01) at line 1: Unknown command → this is ugly! ● Catch the state change with: ● wsrep_notify_cmd ● To start Firewall Rules (REJECT) ● To take node out of Load Balancer
  • 21.
  • 22.
    www.fromdual.com 22 / 31 OnlineSchema Upgrade (OSU) ● Schema Upgrade = DDL run against the DB ● Change DB structure ● Non transactional ● 2 Methods: ● Total Order Isolation (TOI) (default) ● Rolling Schema Upgrade (RSU) ● wsrep_osu_method = {TOI|RSU}
  • 23.
    www.fromdual.com 23 / 31 TotalOrder Isolation (TOI) ● Default ● Part of the database is locked for the duration of the DDL. + Simple, predictable and guaranteed data consistency. - Locking operation ● Good for fast DDL operations
  • 24.
    www.fromdual.com 24 / 31 RollingSchema Upgrade (RSU) ● DDL will be only processed locally at the node. ● Node is desynchronized ● After DDL, delayed write sets are applied ● DDL should be manually executed at each node. + only blocking one node at a time - potentially unsafe and may fail if new and old schema are incompatible ● Good for slow DDL operations
  • 25.
    www.fromdual.com 25 / 31 Othersecurity related stuff
  • 26.
  • 27.
    www.fromdual.com 27 / 31 GaleraNetwork Configuration
  • 28.
    www.fromdual.com 28 / 31 WAN– Cluster ● WAN = Wide Area Network ● Connect 2 or more locations over a public or private Network ● What are the problems? ● Round Trip Time (RTT) ● Throughput ● Network Stability ● Wrong set-ups
  • 29.
    www.fromdual.com 29 / 31 Communicationencryption ● 2 Possibilities: 1.) Make Network secure (V-LAN, VPN with SSL, stunnel) 2.) Encrypt Galera communication with SSL ● Caution: only Galera replication is affected! ● NOT State Snapshot Transfer (SST, mysqldump | mysql,  rsync) ● NOT Client connection (mysql), use MySQL SSL encryption! ● But Incremental State Transfer (IST) IS affected (= Galera Protocol)! ● We recommend for ease of use: Do it on Network level!
  • 30.
    www.fromdual.com 30 / 31 Wirsuchen noch: ● Datenbank Enthusiast/in für Support / remote-DBA / Beratung
  • 31.
    www.fromdual.com 31 / 31 Q& A Questions ? Discussion? We have time for some face-to-face talks... ● FromDual provides neutral and independent: ● Consulting ● Remote-DBA ● Support for MySQL, Galera, Percona Server and MariaDB ● Training www.fromdual.com