SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
High Availability using MySQL Fabric:
Managing Farms of Servers
Mats Kindahl
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2
The following is intended to outline our general product direction. It is intended
for information purposes only, and may not be incorporated into any contract.
It is not a commitment to deliver any material, code, or functionality, and
should not be relied upon in making purchasing decision. The development,
release, and timing of any features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
Safe Harbor Statement
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3
Program Agenda
 Building reliable systems
 MySQL Fabric overview
 Managing redundancy
 Procedure automation and the Executor
 Failure detection and failure handling
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4
Program Agenda
 Using Fabric with existing high-availability setups
 Making Fabric highly available
 Thoughts for the future
 Closing remarks
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5
Insert Picture Here
Building Reliable Systems
Insert Picture Here
Copyright © 20135 Oracle and/or its affiliates. All rights reserved.6
Insert Picture Here
High-availability is an
integral part of designing a
reliable system
Building for reliability
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7
What causes downtime?
●
System failures
●
Hardware faults
●
Software bugs
●
Disasters
●
Maintenance
●
User errors
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
High-availability concepts
●
Redundancy
●
Duplicate critical components
●
Monitoring
●
Detecting failing components
●
Monitor load
●
Procedures
●
Activate replacements
●
Distribute load
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9
High-availability solutions
●
Primary-seconday approach
●
MySQL Replication
●
Shared-nothing clusters
●
MySQL Cluster
●
MySQL Group Replication (not
GA)
●
Tightly coupled clusters
●
DRBD
●
WSFC
●
Solaris Clustering
●
Oracle Clusterware
●
Oracle VM High Availability
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10
Insert Picture Here
MySQL Fabric Overview
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11
What is MySQL Fabric?
An extensible and easy-to-use
framework for managing a farm of
MySQL servers supporting high-
availability and sharding.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12
What does it mean?
●
Management system
●
Manages a MySQL Farm
●
Distributed framework
●
Framework
●
Procedure execution
●
State store
●
Transaction Routing
●
Extensible
●
High-availability groups
●
Sharding
●
Cloud support
●
Written in Python
●
MySQL 5.6 (or later)
●
Open Source
●
You can participate
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13
Birds-eye view
MySQL
Fabric Node
Application
Operator
High-Availability Groups
(Shards)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14
MySQL Fabric Components
●
Fabric-aware connectors
●
Enhanced Connector API
●
Python, PHP, Java, .NET, C
●
MySQL Fabric controller
●
Manage farm meta-data
●
Provide status information
●
Execute Procedures
●
MySQL servers
●
Organized in high-availability groups
●
Handle application data
MySQL Fabric
controller node
High-availability
group
Application with
Fabric-aware connectors
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15
MySQL Fabric Controller Architecture
XML-RPC
MySQL-RPC
AMQP
Protocol Server
XML-RPC
MySQL-RPC
AMQP
Protocol Server
Sharding
Master-Slave
Providers
Extensions
State
Store
XML-RPC
MySQL-RPC
AMQP
Protocol Server
Executor
Model
Persistance
Fabric Core
Requests
Events
Results
Eample only!
Eample only!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16
Insert Picture Here
Managing Redudancy
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17
High-Availability Group Concept
● Group of servers
● Hardware redundancy
● Data redundancy
● Generic Concept
● Implementation-independent
● Self-managed or externally managed
● Different Types
● Primary-Backup (Master-Slave)
● Shared or Replicated Storage
● MySQL Cluster
DRBD
ndbdndbd
ndbd ndbd
Default
Eamples Only
Not Implemented
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18
●
Create a logical group for the servers
●
Empty initially
mysqlfabric group create my_group
--description='My Group'
Creating a high-availability group
Create an empty group
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19
●
Add servers to group
●
Group will have no master
●
All servers are secondaries (!)
Creating a high-availability group
Adding servers to the group
mysqlfabric group add my_group server1.example.com
mysqlfabric group add my_group server2.example.com
mysqlfabric group add my_group server3.example.com
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20
●
Promote one secondary to primary
●
Selects secondary at random
●
Specific secondary can be selected
Creating a high-availability group
Promote a primary
mysqlfabric group promote my_group
mysqlfabric group promote my_group
--slave_id='server1.example.com'
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21
●
Enable built-in failure detector
●
Monitor servers in group
Creating a high-availability group
Enable failure detector
mysqlfabric group activate my_group
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22
●
On primary failure
●
Mark primary as faulty
●
Trigger fail-over
●
On secondary failure
●
Mark secondary as faulty
Creating a high-availability group
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23
Insert Picture Here
Procedure Automation and
the Executor
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24
●
Management Procedures
●
Fail-over
●
Slave promotion
●
Shard split
●
Triggered on events
●
Crashing server
●
Administrative decision
●
Increasing load
●
Resilient execution
●
Controller node can crash
●
Recover partially executed procedure
Automating management of a farm
Find
Candidate
Check
Candidate
Disable
Read-only
Process
Backlog
Re-direct
Slaves
SLAVE_PROMOTED
SERVER_LOST
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25
MySQL Fabric executor
●
Event driven executor
●
Events will trigger execution of procedures
●
Procedures can trigger events themselves
●
Each step of a procedure is called a job
●
Procedures
●
Written in Python
●
Interacts with servers
●
Write state changes into backing store
●
Lock manager for conflict resolution
– Conservative 2PL
– Avoid deadlocks
Queue
Backing
Store
Events
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26
Example: keep high-availability profile
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27
●
Register job for event
●
@on_event decorator
●
Register job with event
●
Fetch group of lost server
●
Fetch new server from provider
●
Add server to group
@on_event(SERVER_LOST)
def _add_server(group_id, server_uuid):
group = Group.fetch(group_id)
machines = PROV.create_machines(
parameters
)
server = MySQLServer(
server_uuid, address
)
MySQLServer.add(server)
group.add(server)
_configure_as_slave(server)
Automating adding a server
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28
●
Before starting a job:
●
Aquire the necessary locks
●
Checkpoint execution state in backing store
●
Start a transaction on the backing store
●
When executing job:
●
Updates to backing store inside transaction
●
Interact with servers
●
After executing a job:
●
Mark job completed in internal log
●
Commit transaction on backing store
What about crashes?
Queue
Backing
Store
Events
MySQL Fabric execution flow
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29
●
Two types of jobs:
●
Idempotent: Restart the job
●
Not idempotent: Execute compensation
●
Recovery procedure
●
Start the executor
●
Collect unfinished checkpoints
●
Execute compensation actions
… if there are any
●
Re-schedule each job in checkpoint
Queue
Backing
Store
Events
MySQL Fabric executor recovery
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30
Insert Picture Here
Failure detection and
failure handling
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31
●
Group level detection
●
Fabric node ping servers in group
●
Servers need to be managed by Fabric
●
On primary failure
●
Mark primary as faulty
●
Trigger fail-over of connectors and slaves
●
On secondary failure
●
Mark secondary as faulty
Built-in failure detector
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32
Built-in failure detector
Configuration
● Detections
● Number of failed pings before
marked as faulty
● Detection Interval
● Interval between server ping,
in seconds
● Detection Timeout
● Timeout for ping, in seconds
[failure_tracking]
detections = 3
detection_interval = 6
detection_timeout = 1
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33
●
External failure detectors
●
Connectors
●
Custom failure detectors
●
Reporting API
●
Error: suspected server failure
●
Failure: server is known to have failed
●
Reporting server error
●
Trigger fail-over if threshold is exceeded
●
Reporting server failure
●
Trigger immediate fail-over
External failure detectors
?
!
MySQL Fabric
controller node
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34
External failure detectors
Configuration
● Notifications
● Error threshold
● Notification clients
● Threshold for number of
unique clients
● Notification interval
● Notification window
[failure_tracking]
notifications = 300
notification_clients = 50
notification_interval = 60
failover_interval = 0
prune_time = 3600
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35
External failure detectors
Configuration
● Failover interval
● Minimum interval between
failovers
● Used to prevent flapping
● Prune time
● Size of error log (in seconds)
to keep
[failure_tracking]
notifications = 300
notification_clients = 50
notification_interval = 60
failover_interval = 0
prune_time = 3600
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36
Connector as external failure detector
● Error reporting from connector
● Depends on connector support
● Report suspected failures
● Enabling error reporting
● Error reporting off by default
● Avoid a thundering herd
● Do not enable error reporting
for all connectors!
● Failing server will cause all
connectors to report failure
fabric_config = {
…
'report_errors': True,
…
}
cnx = connect(
…
fabric=fabric_config
…
)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37
Connector as external failure detector
Error reporting
● Default errors reported
● Extra errors can be added
● extra_failure_report
CR_SERVER_LOST
CR_SERVER_GONE_ERROR
CR_CONN_HOST_ERROR
CR_CONNECTION_ERROR
CR_IPSOCK_ERROR
from mysql.connector.fabric import extra_failure_report
extra_failure_report([error1, error2, …, errorn])
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38
Connector as external failure detector
Cache invalidation
● Cache invalidation by default on
● Server Lost (CR_SERVER_LOST)
● Server read-only (ER_OPTION_PREVENTS_STATEMENT)
from mysql.connector.fabric import RESET_CACHE_ON_ERROR
RESET_CACHE_ON_ERROR.append(error)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39
Insert Picture Here
Using Fabric with Existing
High-availability Setups
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40
Using Fabric with Existing Solution
● Servers already managed
● Group Based Solutions
● Virtual IP-based solutions
● Fabric as lookup server
● Connectors can route transactions
● Application can retrieve information from Fabric
● Update state store only
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41
Example: An existing setup
● DRBD for redundancy
● Disk replicated
● Pacemaker for fail-over
● Heartbeat detect failure
● Resource agent handle
fail-over
● Fabric as lookup server
● Fabric for routing
transactions
Secondary
Node
Primary
Node
DRBD Replication
Pacemaker Pacemaker
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42
Example: An existing setup
Create a group
● Create a group
● Add server to group
● Fabric should only update state store
● “Promote” the DRBD primary to be primary in group
mysqlfabric group create my_group
mysqlfabric group add my_group server1.example.com --update_only
mysqlfabric group promote my_group --update_only
--slave_id=...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43
Example: An existing setup
Update resource agent
● Change resource agent script
● On Ubuntu: /usr/lib/ocf/resource.d/heartbeat/mysql
● Update resource agent actions to inform Fabric
● Remove old server
● Only update the state store
mysqlfabric group demote --update_only
--slave_id=7bcb0804-...
mysqlfabric group remove --update_only
7bcb0804-...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44
Example: An existing setup
Update resource agent
● Change resource agent script
● On Ubuntu: /usr/lib/ocf/resource.d/heartbeat/mysql
● Update resource agent actions to inform Fabric
● Add standby server
● Only update the state store
mysqlfabric group add --update_only standby.example.com
mysqlfabric group promote --update_only
8308b0c4-...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45
Insert Picture Here
Making Fabric highly
available
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46
Making Fabric highly available
● Standard deployment
● Fabric node and state store on
same machine
● Need to use TCP
– Socket connection not
available yet (Bug#71946)
● Three things can fail:
● State store
● Fabric node
● Machine
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47
Making Fabric highly available
Handling state store failure
● If state store connection is lost:
● Fabric retry until state store
becomes available
● Ongoing transactions fail
● Fabric report error if
connection not recovered
“quickly enough”
● Solution: restart state store
● MySQL handle recovery
● Fabric re-connect
automatically
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48
Making Fabric highly available
Handling state store failure
● Connection timeout
● Timeout (in seconds) for
connection attempt
● Connection attempts
● Number of attempts before
reporting state store failed
● Connection interval
● Delay (in seconds) between
connection attempts
[storage]
connection_timeout = 6
connection_attempts = 6
connection_interval = 1
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49
Making Fabric highly available
Handling Fabric controller node failure
● If Fabric node is lost:
● Ongoing jobs fail
● Execution state checkpointed
● On Fabric node restart:
● Execution state recovered
● Solution: restart Fabric node
● Detect failure
– Local ping script
● Restart Fabric node
– init.d script
● Neither distributed with Fabric
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50
Making Fabric Highly Available
Handling machine failures
● If the machine fails:
● State store is lost
● Fabric node is lost
● Catastrophic failures can
prevent machine recovery
● Solution:
● Replicate meta-data
● Detect machine failure
● Activate duplicate deployment
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51
Making Fabric Highly Available
Replicate meta-data
● Replicate state store
● DRBD
● MySQL Cluster
● MySQL Replication
● Configure DRBD
● Version 8.3 or later
● Replicate block device
● Configure MySQL Servers
● Data directory on replicated
device
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52
Making Fabric Highly Available
Replicate meta-data
● Active node
● MySQL Fabric
● MySQL Server
● DRBD primary
● Passive node
● DRBD secondary
● Server and Fabric started on
fail-over
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56
Making Fabric Highly Available
Detect machine failure & activate replacement
● Detecting machine failure
● Corosync
● Version 2.0 or later
● Activate Replacement
● Pacemaker
● Version 1.1 or later
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57
Making Fabric Highly Available
Detect machine failure & activate replacement
● Configure MySQL Fabric
● State store in DRBD volume
● Configure Corosync
● Set no-quorum-policy to
'ignore'
– Prevent remaining node to
shut down
● Turn off STONITH
– Node will commit suicide
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58
Making Fabric Highly Available
Detect machine failure & activate replacement
● Configure Pacemaker
● Add MySQL Fabric resource
agent
● Colocate Fabric, DRBD, and
MySQL and order them
● Avoiding split-brain
● Reliably detect network
partition
● Ping reliable resource
– Example: Router
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61
Insert Picture Here
Closing Remarks &
Ideas for the Future
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62
Multi-Node Fabric
Replicated State Machine
● Multiple Fabric Nodes
● Built-in support
● Fail-over
● Local read instance
● Distributed execution
● Replicated State Machine
● Coordinate procedure execution
● Automatic fail-over
● Paxos or Raft-like implementation
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63
More Flexibility
● Server Providers
● Amazon AWS
● Kubernetes?
● Built-in high-availability group types
● DRBD
● MySQL Cluster
● Amazon RDS?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.64
MySQL Fabric Resources
Useful links
● Download and try
● http://dev.mysql.com/downloads/utilities/
● MySQL Fabric Documentation
● http://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.html
● Forum (MySQL Fabric, Sharding, HA, Utilities)
● http://forums.mysql.com/list.php?144
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65
MySQL Fabric Resources
Blogs
● MySQL High-Availability
● http://mysqlhighavailability.com
● Mats Kindahl
● http://mysqlmusings.blogspot.
com
● Alfranio Correia
● http://alfranio-distributed.blog
spot.com
● Narayanan Venkateswaran
● http://vnwrites.blogspot.com
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66
Thank You!

Mais conteúdo relacionado

Mais procurados

High Availability with MariaDB Enterprise
High Availability with MariaDB EnterpriseHigh Availability with MariaDB Enterprise
High Availability with MariaDB EnterpriseMariaDB Corporation
 
MySQL Fabric Tutorial, October 2014
MySQL Fabric Tutorial, October 2014MySQL Fabric Tutorial, October 2014
MySQL Fabric Tutorial, October 2014Lars Thalmann
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!Vitor Oliveira
 
Conference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance TuningConference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance TuningSeveralnines
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10Kenny Gryp
 
Elastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStackElastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStackMats Kindahl
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterKenny Gryp
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11Kenny Gryp
 
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMatt Lord
 
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsMix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsPedro Gomes
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialKenny Gryp
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesKenny Gryp
 
MySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMario Beck
 
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyMySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyContinuent
 
Making MySQL highly available using Oracle Grid Infrastructure
Making MySQL highly available using Oracle Grid InfrastructureMaking MySQL highly available using Oracle Grid Infrastructure
Making MySQL highly available using Oracle Grid InfrastructureIlmar Kerm
 
Welcome to MySQL
Welcome to MySQLWelcome to MySQL
Welcome to MySQLGrigale LTD
 
MySQL Multi Master Replication
MySQL Multi Master ReplicationMySQL Multi Master Replication
MySQL Multi Master ReplicationMoshe Kaplan
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability MattersMatt Lord
 

Mais procurados (20)

High Availability with MariaDB Enterprise
High Availability with MariaDB EnterpriseHigh Availability with MariaDB Enterprise
High Availability with MariaDB Enterprise
 
MySQL Fabric Tutorial, October 2014
MySQL Fabric Tutorial, October 2014MySQL Fabric Tutorial, October 2014
MySQL Fabric Tutorial, October 2014
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!
 
Conference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance TuningConference slides: MySQL Cluster Performance Tuning
Conference slides: MySQL Cluster Performance Tuning
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10
 
Elastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStackElastic Scalability in MySQL Fabric Using OpenStack
Elastic Scalability in MySQL Fabric Using OpenStack
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB Clusters
 
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsMix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
 
MySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB Cluster
 
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyMySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
 
Making MySQL highly available using Oracle Grid Infrastructure
Making MySQL highly available using Oracle Grid InfrastructureMaking MySQL highly available using Oracle Grid Infrastructure
Making MySQL highly available using Oracle Grid Infrastructure
 
Welcome to MySQL
Welcome to MySQLWelcome to MySQL
Welcome to MySQL
 
MySQL Multi Master Replication
MySQL Multi Master ReplicationMySQL Multi Master Replication
MySQL Multi Master Replication
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability Matters
 

Semelhante a High-Availability using MySQL Fabric

My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1Ricky Setyawan
 
Oracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterOracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterBenedita Paúl Vasconcelos
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em StartupsMySQL Brasil
 
Oracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQLOracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQLMario Beck
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQLMySQL Brasil
 
MySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinarMySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinarAndrew Morgan
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...GeneXus
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMiguel Araújo
 
Hkosc group replication-lecture_lab07
Hkosc group replication-lecture_lab07Hkosc group replication-lecture_lab07
Hkosc group replication-lecture_lab07Ivan Ma
 
Using MySQL in Automated Testing
Using MySQL in Automated TestingUsing MySQL in Automated Testing
Using MySQL in Automated TestingMorgan Tocker
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0Ståle Deraas
 
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!Miguel Araújo
 
MySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL FabricMySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL FabricMark Swarbrick
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility SolutionsMark Swarbrick
 
Rapid private cloud with oracle vm and oracle openstack for oracle linux
Rapid private cloud with oracle vm and oracle openstack for oracle linuxRapid private cloud with oracle vm and oracle openstack for oracle linux
Rapid private cloud with oracle vm and oracle openstack for oracle linuxOTN Systems Hub
 
MySQL High Availability - Managing Farms of Distributed Servers
MySQL High Availability - Managing Farms of Distributed ServersMySQL High Availability - Managing Farms of Distributed Servers
MySQL High Availability - Managing Farms of Distributed ServersNarayanan Venkateswaran
 
What's new in MySQL Cluster 7.4 webinar charts
What's new in MySQL Cluster 7.4 webinar chartsWhat's new in MySQL Cluster 7.4 webinar charts
What's new in MySQL Cluster 7.4 webinar chartsAndrew Morgan
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL Brasil
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance TuningMark Swarbrick
 

Semelhante a High-Availability using MySQL Fabric (20)

My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1
 
Oracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterOracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL Cluster
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
Oracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQLOracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQL
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
 
MySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinarMySQL High Availability Solutions - Feb 2015 webinar
MySQL High Availability Solutions - Feb 2015 webinar
 
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
MySQL 20 años: pasado, presente y futuro; conoce las nuevas características d...
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB Clusters
 
Hkosc group replication-lecture_lab07
Hkosc group replication-lecture_lab07Hkosc group replication-lecture_lab07
Hkosc group replication-lecture_lab07
 
Using MySQL in Automated Testing
Using MySQL in Automated TestingUsing MySQL in Automated Testing
Using MySQL in Automated Testing
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0
 
My sql8 innodb_cluster
My sql8 innodb_clusterMy sql8 innodb_cluster
My sql8 innodb_cluster
 
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
MySQL Shell/AdminAPI - MySQL Architectures Made Easy For All!
 
MySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL FabricMySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL Fabric
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility Solutions
 
Rapid private cloud with oracle vm and oracle openstack for oracle linux
Rapid private cloud with oracle vm and oracle openstack for oracle linuxRapid private cloud with oracle vm and oracle openstack for oracle linux
Rapid private cloud with oracle vm and oracle openstack for oracle linux
 
MySQL High Availability - Managing Farms of Distributed Servers
MySQL High Availability - Managing Farms of Distributed ServersMySQL High Availability - Managing Farms of Distributed Servers
MySQL High Availability - Managing Farms of Distributed Servers
 
What's new in MySQL Cluster 7.4 webinar charts
What's new in MySQL Cluster 7.4 webinar chartsWhat's new in MySQL Cluster 7.4 webinar charts
What's new in MySQL Cluster 7.4 webinar charts
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance Tuning
 

Mais de Mats Kindahl

MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFSMySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFSMats Kindahl
 
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal ScalingMySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal ScalingMats Kindahl
 
Replication Tips & Trick for SMUG
Replication Tips & Trick for SMUGReplication Tips & Trick for SMUG
Replication Tips & Trick for SMUGMats Kindahl
 
Sharding using MySQL and PHP
Sharding using MySQL and PHPSharding using MySQL and PHP
Sharding using MySQL and PHPMats Kindahl
 
Replication Tips & Tricks
Replication Tips & TricksReplication Tips & Tricks
Replication Tips & TricksMats Kindahl
 
MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011Mats Kindahl
 
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesPython Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesMats Kindahl
 
Mysteries of the binary log
Mysteries of the binary logMysteries of the binary log
Mysteries of the binary logMats Kindahl
 

Mais de Mats Kindahl (9)

Why rust?
Why rust?Why rust?
Why rust?
 
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFSMySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
MySQL Applier for Apache Hadoop: Real-Time Event Streaming to HDFS
 
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal ScalingMySQL Sharding: Tools and Best Practices for Horizontal Scaling
MySQL Sharding: Tools and Best Practices for Horizontal Scaling
 
Replication Tips & Trick for SMUG
Replication Tips & Trick for SMUGReplication Tips & Trick for SMUG
Replication Tips & Trick for SMUG
 
Sharding using MySQL and PHP
Sharding using MySQL and PHPSharding using MySQL and PHP
Sharding using MySQL and PHP
 
Replication Tips & Tricks
Replication Tips & TricksReplication Tips & Tricks
Replication Tips & Tricks
 
MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011MySQL Binary Log API Presentation - OSCON 2011
MySQL Binary Log API Presentation - OSCON 2011
 
Python Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL DatabasesPython Utilities for Managing MySQL Databases
Python Utilities for Managing MySQL Databases
 
Mysteries of the binary log
Mysteries of the binary logMysteries of the binary log
Mysteries of the binary log
 

Último

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Último (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

High-Availability using MySQL Fabric

  • 1. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | High Availability using MySQL Fabric: Managing Farms of Servers Mats Kindahl Copyright © 2015, Oracle and/or its affiliates. All rights reserved.
  • 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decision. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Safe Harbor Statement
  • 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3 Program Agenda  Building reliable systems  MySQL Fabric overview  Managing redundancy  Procedure automation and the Executor  Failure detection and failure handling
  • 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4 Program Agenda  Using Fabric with existing high-availability setups  Making Fabric highly available  Thoughts for the future  Closing remarks
  • 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Insert Picture Here Building Reliable Systems Insert Picture Here
  • 6. Copyright © 20135 Oracle and/or its affiliates. All rights reserved.6 Insert Picture Here High-availability is an integral part of designing a reliable system Building for reliability
  • 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 What causes downtime? ● System failures ● Hardware faults ● Software bugs ● Disasters ● Maintenance ● User errors
  • 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8 High-availability concepts ● Redundancy ● Duplicate critical components ● Monitoring ● Detecting failing components ● Monitor load ● Procedures ● Activate replacements ● Distribute load
  • 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9 High-availability solutions ● Primary-seconday approach ● MySQL Replication ● Shared-nothing clusters ● MySQL Cluster ● MySQL Group Replication (not GA) ● Tightly coupled clusters ● DRBD ● WSFC ● Solaris Clustering ● Oracle Clusterware ● Oracle VM High Availability
  • 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 Insert Picture Here MySQL Fabric Overview
  • 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11 What is MySQL Fabric? An extensible and easy-to-use framework for managing a farm of MySQL servers supporting high- availability and sharding.
  • 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12 What does it mean? ● Management system ● Manages a MySQL Farm ● Distributed framework ● Framework ● Procedure execution ● State store ● Transaction Routing ● Extensible ● High-availability groups ● Sharding ● Cloud support ● Written in Python ● MySQL 5.6 (or later) ● Open Source ● You can participate
  • 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13 Birds-eye view MySQL Fabric Node Application Operator High-Availability Groups (Shards)
  • 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14 MySQL Fabric Components ● Fabric-aware connectors ● Enhanced Connector API ● Python, PHP, Java, .NET, C ● MySQL Fabric controller ● Manage farm meta-data ● Provide status information ● Execute Procedures ● MySQL servers ● Organized in high-availability groups ● Handle application data MySQL Fabric controller node High-availability group Application with Fabric-aware connectors
  • 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15 MySQL Fabric Controller Architecture XML-RPC MySQL-RPC AMQP Protocol Server XML-RPC MySQL-RPC AMQP Protocol Server Sharding Master-Slave Providers Extensions State Store XML-RPC MySQL-RPC AMQP Protocol Server Executor Model Persistance Fabric Core Requests Events Results Eample only! Eample only!
  • 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16 Insert Picture Here Managing Redudancy
  • 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17 High-Availability Group Concept ● Group of servers ● Hardware redundancy ● Data redundancy ● Generic Concept ● Implementation-independent ● Self-managed or externally managed ● Different Types ● Primary-Backup (Master-Slave) ● Shared or Replicated Storage ● MySQL Cluster DRBD ndbdndbd ndbd ndbd Default Eamples Only Not Implemented
  • 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 ● Create a logical group for the servers ● Empty initially mysqlfabric group create my_group --description='My Group' Creating a high-availability group Create an empty group
  • 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19 ● Add servers to group ● Group will have no master ● All servers are secondaries (!) Creating a high-availability group Adding servers to the group mysqlfabric group add my_group server1.example.com mysqlfabric group add my_group server2.example.com mysqlfabric group add my_group server3.example.com
  • 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20 ● Promote one secondary to primary ● Selects secondary at random ● Specific secondary can be selected Creating a high-availability group Promote a primary mysqlfabric group promote my_group mysqlfabric group promote my_group --slave_id='server1.example.com'
  • 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 ● Enable built-in failure detector ● Monitor servers in group Creating a high-availability group Enable failure detector mysqlfabric group activate my_group
  • 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 ● On primary failure ● Mark primary as faulty ● Trigger fail-over ● On secondary failure ● Mark secondary as faulty Creating a high-availability group
  • 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23 Insert Picture Here Procedure Automation and the Executor
  • 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24 ● Management Procedures ● Fail-over ● Slave promotion ● Shard split ● Triggered on events ● Crashing server ● Administrative decision ● Increasing load ● Resilient execution ● Controller node can crash ● Recover partially executed procedure Automating management of a farm Find Candidate Check Candidate Disable Read-only Process Backlog Re-direct Slaves SLAVE_PROMOTED SERVER_LOST
  • 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25 MySQL Fabric executor ● Event driven executor ● Events will trigger execution of procedures ● Procedures can trigger events themselves ● Each step of a procedure is called a job ● Procedures ● Written in Python ● Interacts with servers ● Write state changes into backing store ● Lock manager for conflict resolution – Conservative 2PL – Avoid deadlocks Queue Backing Store Events
  • 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26 Example: keep high-availability profile
  • 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27 ● Register job for event ● @on_event decorator ● Register job with event ● Fetch group of lost server ● Fetch new server from provider ● Add server to group @on_event(SERVER_LOST) def _add_server(group_id, server_uuid): group = Group.fetch(group_id) machines = PROV.create_machines( parameters ) server = MySQLServer( server_uuid, address ) MySQLServer.add(server) group.add(server) _configure_as_slave(server) Automating adding a server
  • 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28 ● Before starting a job: ● Aquire the necessary locks ● Checkpoint execution state in backing store ● Start a transaction on the backing store ● When executing job: ● Updates to backing store inside transaction ● Interact with servers ● After executing a job: ● Mark job completed in internal log ● Commit transaction on backing store What about crashes? Queue Backing Store Events MySQL Fabric execution flow
  • 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29 ● Two types of jobs: ● Idempotent: Restart the job ● Not idempotent: Execute compensation ● Recovery procedure ● Start the executor ● Collect unfinished checkpoints ● Execute compensation actions … if there are any ● Re-schedule each job in checkpoint Queue Backing Store Events MySQL Fabric executor recovery
  • 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30 Insert Picture Here Failure detection and failure handling
  • 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31 ● Group level detection ● Fabric node ping servers in group ● Servers need to be managed by Fabric ● On primary failure ● Mark primary as faulty ● Trigger fail-over of connectors and slaves ● On secondary failure ● Mark secondary as faulty Built-in failure detector
  • 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32 Built-in failure detector Configuration ● Detections ● Number of failed pings before marked as faulty ● Detection Interval ● Interval between server ping, in seconds ● Detection Timeout ● Timeout for ping, in seconds [failure_tracking] detections = 3 detection_interval = 6 detection_timeout = 1
  • 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33 ● External failure detectors ● Connectors ● Custom failure detectors ● Reporting API ● Error: suspected server failure ● Failure: server is known to have failed ● Reporting server error ● Trigger fail-over if threshold is exceeded ● Reporting server failure ● Trigger immediate fail-over External failure detectors ? ! MySQL Fabric controller node
  • 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34 External failure detectors Configuration ● Notifications ● Error threshold ● Notification clients ● Threshold for number of unique clients ● Notification interval ● Notification window [failure_tracking] notifications = 300 notification_clients = 50 notification_interval = 60 failover_interval = 0 prune_time = 3600
  • 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35 External failure detectors Configuration ● Failover interval ● Minimum interval between failovers ● Used to prevent flapping ● Prune time ● Size of error log (in seconds) to keep [failure_tracking] notifications = 300 notification_clients = 50 notification_interval = 60 failover_interval = 0 prune_time = 3600
  • 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36 Connector as external failure detector ● Error reporting from connector ● Depends on connector support ● Report suspected failures ● Enabling error reporting ● Error reporting off by default ● Avoid a thundering herd ● Do not enable error reporting for all connectors! ● Failing server will cause all connectors to report failure fabric_config = { … 'report_errors': True, … } cnx = connect( … fabric=fabric_config … )
  • 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37 Connector as external failure detector Error reporting ● Default errors reported ● Extra errors can be added ● extra_failure_report CR_SERVER_LOST CR_SERVER_GONE_ERROR CR_CONN_HOST_ERROR CR_CONNECTION_ERROR CR_IPSOCK_ERROR from mysql.connector.fabric import extra_failure_report extra_failure_report([error1, error2, …, errorn])
  • 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38 Connector as external failure detector Cache invalidation ● Cache invalidation by default on ● Server Lost (CR_SERVER_LOST) ● Server read-only (ER_OPTION_PREVENTS_STATEMENT) from mysql.connector.fabric import RESET_CACHE_ON_ERROR RESET_CACHE_ON_ERROR.append(error)
  • 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39 Insert Picture Here Using Fabric with Existing High-availability Setups
  • 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40 Using Fabric with Existing Solution ● Servers already managed ● Group Based Solutions ● Virtual IP-based solutions ● Fabric as lookup server ● Connectors can route transactions ● Application can retrieve information from Fabric ● Update state store only
  • 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41 Example: An existing setup ● DRBD for redundancy ● Disk replicated ● Pacemaker for fail-over ● Heartbeat detect failure ● Resource agent handle fail-over ● Fabric as lookup server ● Fabric for routing transactions Secondary Node Primary Node DRBD Replication Pacemaker Pacemaker
  • 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42 Example: An existing setup Create a group ● Create a group ● Add server to group ● Fabric should only update state store ● “Promote” the DRBD primary to be primary in group mysqlfabric group create my_group mysqlfabric group add my_group server1.example.com --update_only mysqlfabric group promote my_group --update_only --slave_id=...
  • 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43 Example: An existing setup Update resource agent ● Change resource agent script ● On Ubuntu: /usr/lib/ocf/resource.d/heartbeat/mysql ● Update resource agent actions to inform Fabric ● Remove old server ● Only update the state store mysqlfabric group demote --update_only --slave_id=7bcb0804-... mysqlfabric group remove --update_only 7bcb0804-...
  • 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44 Example: An existing setup Update resource agent ● Change resource agent script ● On Ubuntu: /usr/lib/ocf/resource.d/heartbeat/mysql ● Update resource agent actions to inform Fabric ● Add standby server ● Only update the state store mysqlfabric group add --update_only standby.example.com mysqlfabric group promote --update_only 8308b0c4-...
  • 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 Insert Picture Here Making Fabric highly available
  • 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46 Making Fabric highly available ● Standard deployment ● Fabric node and state store on same machine ● Need to use TCP – Socket connection not available yet (Bug#71946) ● Three things can fail: ● State store ● Fabric node ● Machine
  • 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47 Making Fabric highly available Handling state store failure ● If state store connection is lost: ● Fabric retry until state store becomes available ● Ongoing transactions fail ● Fabric report error if connection not recovered “quickly enough” ● Solution: restart state store ● MySQL handle recovery ● Fabric re-connect automatically
  • 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48 Making Fabric highly available Handling state store failure ● Connection timeout ● Timeout (in seconds) for connection attempt ● Connection attempts ● Number of attempts before reporting state store failed ● Connection interval ● Delay (in seconds) between connection attempts [storage] connection_timeout = 6 connection_attempts = 6 connection_interval = 1
  • 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49 Making Fabric highly available Handling Fabric controller node failure ● If Fabric node is lost: ● Ongoing jobs fail ● Execution state checkpointed ● On Fabric node restart: ● Execution state recovered ● Solution: restart Fabric node ● Detect failure – Local ping script ● Restart Fabric node – init.d script ● Neither distributed with Fabric
  • 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 Making Fabric Highly Available Handling machine failures ● If the machine fails: ● State store is lost ● Fabric node is lost ● Catastrophic failures can prevent machine recovery ● Solution: ● Replicate meta-data ● Detect machine failure ● Activate duplicate deployment
  • 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51 Making Fabric Highly Available Replicate meta-data ● Replicate state store ● DRBD ● MySQL Cluster ● MySQL Replication ● Configure DRBD ● Version 8.3 or later ● Replicate block device ● Configure MySQL Servers ● Data directory on replicated device
  • 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52 Making Fabric Highly Available Replicate meta-data ● Active node ● MySQL Fabric ● MySQL Server ● DRBD primary ● Passive node ● DRBD secondary ● Server and Fabric started on fail-over
  • 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56 Making Fabric Highly Available Detect machine failure & activate replacement ● Detecting machine failure ● Corosync ● Version 2.0 or later ● Activate Replacement ● Pacemaker ● Version 1.1 or later
  • 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57 Making Fabric Highly Available Detect machine failure & activate replacement ● Configure MySQL Fabric ● State store in DRBD volume ● Configure Corosync ● Set no-quorum-policy to 'ignore' – Prevent remaining node to shut down ● Turn off STONITH – Node will commit suicide
  • 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58 Making Fabric Highly Available Detect machine failure & activate replacement ● Configure Pacemaker ● Add MySQL Fabric resource agent ● Colocate Fabric, DRBD, and MySQL and order them ● Avoiding split-brain ● Reliably detect network partition ● Ping reliable resource – Example: Router
  • 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61 Insert Picture Here Closing Remarks & Ideas for the Future
  • 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62 Multi-Node Fabric Replicated State Machine ● Multiple Fabric Nodes ● Built-in support ● Fail-over ● Local read instance ● Distributed execution ● Replicated State Machine ● Coordinate procedure execution ● Automatic fail-over ● Paxos or Raft-like implementation
  • 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63 More Flexibility ● Server Providers ● Amazon AWS ● Kubernetes? ● Built-in high-availability group types ● DRBD ● MySQL Cluster ● Amazon RDS?
  • 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.64 MySQL Fabric Resources Useful links ● Download and try ● http://dev.mysql.com/downloads/utilities/ ● MySQL Fabric Documentation ● http://dev.mysql.com/doc/mysql-utilities/1.5/en/fabric.html ● Forum (MySQL Fabric, Sharding, HA, Utilities) ● http://forums.mysql.com/list.php?144
  • 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65 MySQL Fabric Resources Blogs ● MySQL High-Availability ● http://mysqlhighavailability.com ● Mats Kindahl ● http://mysqlmusings.blogspot. com ● Alfranio Correia ● http://alfranio-distributed.blog spot.com ● Narayanan Venkateswaran ● http://vnwrites.blogspot.com
  • 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66 Thank You!