Académique Documents
Professionnel Documents
Culture Documents
Lenz Grimmer <lenz@grimmer.com> < http://lenzg.net/ | Twitter: @lenzgr 2011-01-26 | San Francisco MySQL Meetup | USA
$ whoami
1998
2002
2008
2010
Agenda
High Availability: Concepts & Considerations MySQL Replication DRBD / Pacemaker MySQL Cluster Other HA tools/applications
SQL (SELECT, INSERT, UPDATE, DELETE) MySQL Storage Engines (InnoDB, MyISAM, PBXT...)
Why HA?
Something can and will fail Service Maintenance Downtime is expensive Adding HA to an existing system is complex
Hard disks Fans Application crashes OOM-Situations, Kernel-Panics Network connections, Cables Power supply
What is HA Clustering?
Redundancy One system or service goes down others take over IP address takeover, service takeover Ensuring data availability & integrity Not designed for high-performance
Prepare for failure Aim to ensure that no important data is lost Keep it simple, stupid (KISS) Complexity is the enemy of reliability Automate it Test your setup frequently!
HA Components
Heartbeat
Checks that services that are monitored, are alive. Can check individual servers, software services, networking etc. Configuration of the services Ensures proper shutdown and startup Allows manual control
HA Monitor
Split-Brain
Communications failures can lead to separated partitions of the cluster If those partitions each try and take control of the cluster, then it's called a split-brain condition If this happens, then bad things will happen Use Fencing or Moderation/Arbitration to avoid it
MySQL Replication
MySQL Replication
Unidirectional Statement- or row-based (MySQL 5.1) Built into MySQL Easy to use and set up One Master, many Slaves Asynchronous Slaves can lag behind New in MySQL 5.5: Semisync Replication
Master maintains Binary logs & index Replication on Slave is single-threaded No automated fail-over No heartbeat, no monitoring New in 5.5: replication heartbeat
http://forge.mysql.com/wiki/ReplicationFeatures/ParallelSlave
Web/App Server
mysqld
I/O Thread
SQL Threa d
Data
Replication mysqld Binlog Data
MySQL Master
MySQL Slave
Statement-based Replication
Pro
Proven (around since MySQL 3.23) Smaller log files Auditing of actual SQL statements No primary key requirement for replicated tables Non-deterministic functions and UDFs LOAD_FILE(), UUID(), CURRENT_USER(), FOUND_ROWS() (but RAND() and NOW() work)
Con
Row-based Replication
Pro
All changes can be replicated Similar technology used by other RDBMSes Fewer locks required for some INSERT, UPDATE or DELETE statements More data to be logged Log file size increases (backup/restore implications) Replicated tables require explicit primary keys Possible different result sets on bulk INSERTs
Con
Replication Topologies
Master > Slave Master > Slaves
Ring (Multi-Master)
Master-Master Replication
Two nodes are both master and slave to each other Useful for easier failover Not suitable for (write) load-balancing Don't write to both masters simultaneously! Use Sharding or Partitioning instead (e.g. MySQL Proxy)
What happens if the Master fails? What happens if the Slave fails? This doesnt sound like High Availability! Yes! Replication is only part of a HA configuration
Pacemaker (Linux-HA)
Supports 2 or more Nodes (v2) Resource monitoring (Apps and HW) Active fencing mechanism (STONITH) Node failure detection in seconds Supports many applications (incl. MySQL) http://clusterlabs.org/
http://www.clusterlabs.org/wiki/Load_Balanced_MySQL_Replicated_Cluster http://www.clusterlabs.org/wiki/DRBD_MySQL_HowTo
Replication & HA
Combined with Pacemaker Virtual IP takeover Slave gets promoted to Master Side benefits: load balancing & backup Can be tricky to fail back No automatic conflict resolution Proper failover needs to be scripted
Disk Replication
DRBD
Distributed Replicated Block Device RAID-1 over network Synchronous/asynchronous block replication Automatic resynchronisation Application-agnostic Can mask local I/O-Errors Active/passive configuration Dual-primary mode (requires cluster file sytem like GFS or OCFS2) http://drbd.org/
DRBD in Detail
DRBD replicates data blocks between to block devices DRBD can be combined with Linux-HA and other HA solutions MySQL runs normally on primary node MySQL is not active on the secondary node DRBD is Linux only
Active Node
Applications
Virtual IP
Passive Node
DRBD
Data Consistency / Integrity Synchronous vs. asynchronous SAN can become the SPOF Cold caches Split brain-Situations SAN/NAS I/O Overhead
MySQL Cluster
Shared-nothing-Architecture Automatic partitioning Distributed fragments Synchronous replication Fast, automatic fail-over of data nodes Automatic resynchronisation Transparent to MySQL applicationen Supports transactions http://mysql.com/products/database/cluster/
MySQL Cluster
In-memory indexes Not suitable for all query patterns (cross-table JOINs, range scans) No support for foreign keys Not suitable for long running transactions Network latency crucial Can be combined with MySQL replication (RBR)
MySQL Cluster
Easy failover from one MySQL node to another Scaling write load using multiple SQL nodes
Asynchronous replication from Cluster to regular MySQL slaves Slaves take read load (InnoDB/MyISAM) Quick setup of new slaves (Cluster Online Backup) Easy failover and fast recovery
http://johanandersson.blogspot.com/2009/05/ha-mysql-write-scaling-using-cluster-to.html
Galera Replication
Patch for InnoDB plus external library Synchronous replication Single- or multi-master Multicast-Replication HA plus load sharing possible Certifikate-based replikation (instead of 2PC)
http://codership.com/products/mysql_galera
MMM
MySQL Master-Master Replication Manager Perl-Script for monitoring, failover and management Master-master replication configuration (one active writable master) Failover by moving virtual IP-Address Also supports read balancing http://mysql-mmm.org/
Database-external solution Asynchronous, Master-Slave, Fan-out & Fan-in Java Log-based Events are stored in the Transaction History Log (THL) Modular architekture (Pipelines, Stages)
http://continuent.com/community/tungsten-replicator
HA and load balancing Supports up to 16 nodes Shared storage Monitors services, file systems and network status Fencing (STONITH) or distributed lock manager Configuration synchronization http://www.redhat.com/cluster_suite/
Provides failover and scalability services Solaris / OpenSolaris (Project Colorado) Kernel-level components plus userland Agents monitor applications Geo Edition to provide Disaster Recovery using Replication Open Source since June 2007
http://hub.opensolaris.org/bin/view/Community+Group+ha-clusters/WebHome
http://hub.opensolaris.org/bin/view/Project+ha-mysql/WebHome
Flipper
Perl Script managing pairs of MySQL servers replicating to each other. Automatic switchover, triggered manually Enables one half of the pair to be taken offline for maintenance work while other half carries on Moves IP addresses based on a role ("readonly", "writable")
http://provenscaling.com/software/flipper/
Q&A
Questions, Comments?
Thank you!