SlideShare a Scribd company logo
1 of 54
Download to read offline
MySQL Fabric:

Easy Management of MySQL Servers
Mats Kindahl (mats.kindahl@oracle.com)
Alfranio Correia (alfranio.correia@oracle.com)
Narayanan Venkateswaran (v.narayanan@oracle.com)

1Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
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.

2

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Presentation Outline
 Introducing MySQL Fabric
 High-Availability
 Scaling
 Managing
 Connecting

3

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric
An extensible and easy-to-use
framework for managing a farm
of MySQL server supporting
high-availability and sharding

4

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Insert Picture Here
MySQL Fabric: What is it?

“Farm” Management System
●

●

●

Written in Python

●

●

Early alpha

Distributed Framework

Procedure Execution
●

●

Farm Management
●

●

Extensible
●
●
●

●
●
●

●

5

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Open Source
●

Extensions are first-class
High-Availability Groups
“Semi-Automatic” Sharding

Long road ahead
You can participate
Suggest features
Report bugs
Contribute patches

MySQL 5.6 is focus
MySQL Fabric: Goals & Features
●

Connector API Extensions
●
●

●

●
●

●

Read-Write Split
Distribute transactions

Global Updates
●
●

6

●

Global tables
Schema updates

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

●

●

Using same key

Sharding Functions
●

Reducing network load

Load Balancing

Shard Multiple Tables
●

Decision logic in connector
●

●

Support Transactions
Support full SQL

●

Range
(Consistent) Hash

Shard Operations
●
●
●

Using built-in executor
Shard move
Shard split
Transaction Handling
Hmm... looks like
a read transaction

Sharding key?

Ah, there it is!
Session state?

BEGIN;
SELECT salary INTO @s FROM salaries WHERE emp_no = 20101;
SET @s = 1.1 * @s;
What does this
INSERT INTO salaries VALUES (20101, @s);
procedure update?
COMMIT;
Oops.. it was a
BEGIN;
write transaction!
CALL update_salary(20202, @s); 
COMMIT;
Transaction done!

Clear session state?
What about connection pools?
New transaction! Different connection?
Application error?
What about the session state?
7

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Transaction Handling

●

Routing Transactions
●
●
●

●

Pre-declare properties of transactions
Detecting transaction boundaries
Push as much as possible to server

What about
crashes?

Managing Session State
●

●

8

Where do I store
the session state?

Move session state between servers
– Easy to use
– Expensive and error prone
Reset state after each transaction
– Transactions start with default session state

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

What Session
State Change?
Routing Transactions
Contain decision logic
for routing queries
QUERY
KEY

Shard #2
Switch
SHARD#

QUERY

KEY

Contain information
about location of shards

State
Store
9

Shard #1

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Shard #3

Executor
Deployment for Routing Transactions
Network hop!
Performance?
Protocol?

Single Points
of Failure!

Shard #1

Shard #2
Switch
Shard #3

State
Store
10

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Executor
Deployment for Routing Transactions
Deployed with application
(e.g., inside connector)

Shard #1

Shard #2
Switch
API simple to add
Caches can be
used to avoid
performance impact

11

Shard #3

State
Store

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Executor
Introducing MySQL Fabric
Insert Picture Here

12

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Birds-eye View

Operator

Application

Connector

XML-RPC

Connector

Connector

SQL

MySQL
Fabric
Node

SQL
High Availability Groups
(Shards)
13

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
High-Level Components
Application
●

●

●

In High-Availability Groups
Managing the data

MySQL
Fabric
Node

MySQL Fabric Node
●
●
●

14

Connector

Python, PHP, and Java
Extended Connector API

MySQL Servers
●

●

Connector

Fabric-aware Connectors
●

●

Connector

Maintain Meta-Information
Information Interfaces
Execute Procedures

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

High Availability Group
MySQL Fabric Node Architecture
Protocols
Connector

Connector

?

?

AMQP

MySQL

XML-RPC

Connector

Sh
MySQL Fabric
Framework

Executor

15

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

State Store
(Persister)

Extensions

HA

?

MySQL

Backing
Store
MySQL Fabric: Prerequisites

●

MySQL Servers (version 5.6.10 or later)
●
●

●

Python 2.6 or 2.7
●

●

No support for 3.x yet

MySQL Utilities 1.4.0
●

16

Server for meta-data backing store
Servers being managed

Available at http://labs.mysql.com/

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric: Configuration
●

Backing Store
●
●
●

●

Protocol
●
●

●

Address where node will be
Currently only XML-RPC

Logging
●
●
●

17

MySQL server
Persistent storage for state
Storage engine-agnostic

Chatty: INFO (default)
Moderate: WARNING
URL for rotating log

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

[storage]
address = localhost:3306
user = fabric
password = 
database = fabric
connection_timeout = 6
[protocol.xmlrpc]
address = localhost:8080
threads = 5
[logging]
level = INFO
url = file:///var/log/fabric.log
MySQL Fabric: Setup and Teardown

●

Create the necessary tables in backing store
mysqlfabric manage setup

●

Remove the tables from backing store
mysqlfabric manage teardown

●

Connect to database server in “storage” section
●

18

Ensure that you have the necessary users and privileges

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric: Starting and Stopping

●

Start MySQL Fabric node in foreground – print log to terminal
mysqlfabric manage start

●

Start MySQL Fabric node in background – print log to file
mysqlfabric manage start ­­daemonize 

●

Stop MySQL Fabric node
mysqlfabric manage stop

19

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Architecture for
High-Availability

20

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Insert Picture Here
High-Availability Concepts

●

Redundancy
●

●

Monitoring
●
●

●

Detecting failing components
Monitor load

Procedure
●
●

21

Duplicate critical components

Activate backups
Distribute load

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
High-Availability Group Concept

●

Group of servers
●
●

●

Generic Concept
●
●

●

Implementation-independent
Self-managed or externally managed

Different Types
●
●
●

22

Hardware redundancy
Data redundancy

Primary-Backup (Master-Slave)
Shared or Replicated Storage
MySQL Cluster

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

n
Do

e!
High-Availability Group Concept

●

Abstract Concept
●
●

●

Connector Attributes
●
●
●

●

Connection information
Mode: read-only, read-write, ...
Weight: distribute load

Management Attributes
●

23

Set of servers
Server attributes

State: state/role of the server

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

State:
Mode:
Host:

Primary
Read-Write
server-1.example.com
MySQL Fabric: Create Groups and add Servers

●

Define a group
mysqlfabric group create my_group

●

Add servers to group

User + Password
(Likely to go away)

mysqlfabric group add my_group server1.example.com 
  mats xyzzy
mysqlfabric group add my_group server2.example.com 
  mats xyzzy

24

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric: Create Groups and add Servers

●

Promote one server to be primary
mysqlfabric group promote my_group

●

Tell failure detector to monitor group
mysqlfabric group activate my_group

25

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Connecting to a
MySQL Fabric Farm

26

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Insert Picture Here
Fabric-aware Connector API

●

Connector API Extensions
●
●

●

Reducing network load

●

Read-Write Split
Distribute transactions

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Fabric-aware Connectors
●
●
●

●

●

●

Connector/J
Connector/Python
Connector/PHP

Fabric-aware Frameworks
●

Load Balancing
●

27

Support Transactions
Support full SQL

Decision logic in connector
●

●

●

Doctrine
Hibernate

Focus on Connector/Python
Fabric-aware Connector API

●

Establish a “virtual” connection
●

●

Real server connection established lazily

Provide connection information for the Fabric node
●

Fabric node will provide information about real servers

import mysql.connector.fabric as connector
conn = connector.MySQLFabricConnection(
    fabric={"host": "fabric.example.com", "port" : 8080},
    user='mats', database="employees")

28

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Connector API: Executing a Transaction

●

Provide group name
●
●

Property: group
Fabric will compute candidate
servers

●

Provide transaction type
●
●

Property: type
Fabric will pick server in right
mode

conn.set_property(group='my_group', type=TYPE_READWRITE)
cur = conn.cursor()
cur.execute("INSERT INTO employees VALUES (%s,%s,%s)",
            (emp_no, first_name, last_name))
cur.execute("INSERT INTO titles(emp_no,title,from_date)"
            “ VALUES (%s,%s,CURDATE())",
            (emp_no, 'Intern'));
conn.commit()
Transactions work fine!
29

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Architecture for
Sharding

30

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Insert Picture Here
Benefits of Sharding

●

Write scalability
●

●

Large data set
●
●

●

Database too large
Does not fit on single server

Improved performance
●
●
●

31

Can handle more writes

Smaller index size
Smaller working set
Improve performance

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

UID 10000-20000

UID 20001-40000
MySQL Fabric: Sharding Goals & Features
●

Connector API Extensions
●
●

●

●

Using same key

Global Updates
●
●

32

Reducing network load

Shard Multiple Tables
●

●

Support Transactions
Support full SQL

Decision logic in connector
●

●

Global tables
Schema updates

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Sharding Functions
●
●

●

Range
(Consistent) Hash

Shard Operations
●
●
●

Using built-in executor
Shard move
Shard split
Mapping the Sharding Key

What is a sharding key?
●
●

How is the key transformed?
●
●
●

33

Hash
Range
User-defined

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Compute
Shard#

Shard#

●

Single column
Multi column
– Same table?
– Different tables?

Key

●

(X)
(X,Y,...)

RANGE
HASH
Something else
Sharded Tables

Table
salaries

Foreign keys

Rows
284 404 700

titles

44 330 800

employees

30 002 400

dept_emp

In desperate need
of sharding!

33 160 300

dept_manager
departments

34

2 400
900

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Multi-table Query with Sharded Tables

SELECT first_name, last_name, salary
FROM salaries JOIN employees USING (emp_no)
WHERE emp_no = 21012
AND CURRENT_DATE BETWEEN from_date AND to_date;

●

Referential Integrity Constraint
●
●

●

JOIN normally based on equality
●

35

Example query joining salaries and employees
Same key, same shard: co-locate rows for same user
Using non-equality defeats purpose of foreign key

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Global Tables

Table
salaries

Rows
284 404 700

titles

44 330 800

employees

30 002 400

dept_emp

33 160 300

dept_manager
departments

2 400
900
Do not really need
to be sharded

36

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Multi-table Query with Global Tables

SELECT first_name, last_name, GROUP_CONCAT(dept_name)
FROM employees JOIN dept_emp USING (emp_no)
JOIN departments USING (dept_no)
WHERE emp_no = 21012 GROUP BY emp_no;

●

JOIN with departments table
●
●

●

37

Has no employee number, hence no sharding key
Table need to be present on all shards

How do we update global tables?

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Sharding Architecture
MySQL
Fabric Node

Global
Group
Global Updates
Connector

Replication

Connector

Application
Connector

Shard
Updates

Shards

38

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Support global update
for off-line shards
MySQL Fabric: Sharding Setup

●

Set up some groups
●
●
●

●

Create a shard mapping
●
●
●

●

39

my_global – for global updates
my_group.* – for the shards
Add servers to the groups
A “distributed database”
Mapping keys to shards
Give information on what tables are sharded

Add shards

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric: Set up Shard Mapping
Per-mapping Global Group
(Likely to go away)
●

Define shard mapping

Will show the shard map
identifier (a number)

mysqlfabric sharding define hash my_global
●

Add tables that should be sharded
mysqlfabric sharding add_mapping 1 
  employees.employees emp_no
mysqlfabric sharding add_mapping 1 
  employees.salaries emp_no

●

40

Tables not added are global

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Shard map identifier
MySQL Fabric: Add Shards

●

Add shards to shard mapping

Shard map identifier

mysqlfabric sharding add_shard 1 my_group.1 enabled
    .
    .
    .
mysqlfabric sharding add_shard 1 my_group.N enabled

41

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
MySQL Fabric: Moving and Splitting Shards

●

Moving a shard from one group to another
mysqlfabric sharding move 5 my_group.5

●

Splitting a shard into two pieces (hash)
mysqlfabric sharding split 5 my_group.6

42

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Shard ID
Digression: Computing Shards

●

●

●

Compute
Shard#

Extra properties passed out-of-band

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

Shard#

Tables + sharding key

Extended Connector API
●

43

Which mapping to use?
Application don't care
… but know tables in transaction
Currently only one mapping

Computing shard requires
●

●

Key

Multiple Mappings
●

●

Compute
Map#

Map#

Tables
Connector API: Shard Specific Query

●

Provide tables in query
●
●

Property: tables
Fabric will compute map

●

Provide sharding key
●
●

Property: key
Fabric will compute shard

conn.set_property(tables=['employees.employees', 'employees.titles'],
                  key=emp_no)
cur = conn.cursor()
cur.execute("INSERT INTO employees VALUES (%s,%s,%s)",
            (emp_no, first_name, last_name))
cur.execute("INSERT INTO titles(emp_no, title, from_date)"
            “ VALUES (%s, %s, CURDATE())",
            (emp_no, 'Intern'));
conn.commit()
Transactions work fine!
44

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Connector API: Shard Specific Query

●

Provide tables in query
●
●

Property: tables
Fabric will compute map

●

Provide sharding key
●
●

Property: key
Fabric will compute shard

conn.set_property(tables=['employees.employees', 'employees.titles'],
                  key=emp_no)
cur = conn.cursor()
Join queries are sent to correct
cur.execute(
    "SELECT first_name, last_name, title"
shard and executed there
    "  FROM employees JOIN titles USING (emp_no)"
    " WHERE emp_no = %d", (emp_no,))
for row in cur:
    print row[0], row[1], “,“, row[2]

45

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Connector API: Global Update

●

Provide tables in query
●
●
●

Property: tables
Fabric will compute map
(Likely to not be needed)

●

Set global scope
●
●

Property: scope
Query goes to global group

conn.set_property(tables=['employees.titles'], scope='GLOBAL')
cur = conn.cursor()
cur.execute("ALTER TABLE employees.titles ADD nickname VARCHAR(64)")

46

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Closing Remarks
Insert Picture Here

47

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
What do we have now?
●

MySQL Farm Management
●
●

●

Enhanced Connectors
●

High-Availability
Sharding

●
●

●

High-Availability
●
●
●

Group Concept
Simple failure detector
Slave promotion

●

Sharding
●
●
●

●

Connector APIs
●
●

48

Transaction properties
“Logical” connection
management

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

●

Connector/Python
Connector/PHP
Connector/J
Range and hash sharding
Shard move and shard split
Global tables and updates

Command-line Interface
●
●

Easy setup and management
XML-RPC Interfaces
Thoughts for the Future

●

Connector multi-cast
●
●
●

●

●

●

●

Improving usability
Focus on ease-of-use

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

MySQL-RPC Protocol?
AMQP?

●

More frameworks?

●

More HA group types
●
●

Command-line interface
●

49

Improve extension support
Improve procedures support

More protocols
●

Internal interfaces
●

●

Scatter-gather
UNION of result sets
More complex operations?

●

●

DRBD
MySQL Cluster

Fabric-unaware connectors?
Thoughts for the Future

●

“More transparent” sharding
●
●

●

Independent tables

Multi-way shard split
●
●

50

Single-query transactions
Cross-shard join is a problem

Efficient initial sharding
Better use of resources

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

High-availability executor
●
●
●

Multiple shard mappings
●

●

●

●

Node failure stop execution
Replicated State Machine
Fail over to other Fabric node

Distributed failure detector
●
●

Connectors report failures
Custom failure detectors
Want to contribute?

●

Check it
… and send us use-case and feature suggestions

●

Test it
… and send comments to the forum

●

Break it
… and send in bugs to http://bugs.mysql.com

51

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Reading for the Interested

●

MySQL Forum: Fabric, Sharding, HA, Utilities
http://forums.mysql.com/list.php?144

●

A Brief Introduction to MySQL Fabric

http://mysqlmusings.blogspot.com/2013/09/brief-introduction-to-mysql-fabric.html

●

MySQL Fabric – Sharding – Introduction

http://vnwrites.blogspot.com/2013/09/mysqlfabric-sharding-introduction.html

●

Writing a Fault-tolerant Database Application using MySQL Fabric

http://alfranio-distributed.blogspot.se/2013/09/writing-fault-tolerant-database.html

52

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Keeping in Touch

Mats Kindahl

Twitter: @mkindahl
Blog: http://mysqlmusings.blogspot.com

Alfranio Correia

Twitter: @alfranio
Blog: http://alfranio-distributed.blogspot.com

Narayanan Venkateswaran

Twitter: @vn_tweets
Blog: http://vnwrites.blogspot.com

53

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
Thank you!

54

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |

More Related Content

What's hot

MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMatt Lord
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 UpdatesDave Stokes
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability MattersMatt Lord
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)Mario Beck
 
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
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONMario Beck
 
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterMySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterOlivier DASINI
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015Mario Beck
 
MySQL 5.7 Replication News
MySQL 5.7 Replication News MySQL 5.7 Replication News
MySQL 5.7 Replication News Ted Wennmark
 
MySQL Cluster performance best practices
MySQL Cluster performance best practicesMySQL Cluster performance best practices
MySQL Cluster performance best practicesMat Keep
 
Mysql cluster introduction
Mysql cluster introductionMysql cluster introduction
Mysql cluster introductionAndrew Morgan
 
MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMario Beck
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQLTed Wennmark
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014Dave Stokes
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document StoreMario Beck
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility SolutionsMark Swarbrick
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014Dave Stokes
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesSven Sandberg
 

What's hot (20)

MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB Clusters
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 Updates
 
My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability Matters
 
MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)MySQL for Software-as-a-Service (SaaS)
MySQL for Software-as-a-Service (SaaS)
 
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
 
NoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSONNoSQL and MySQL: News about JSON
NoSQL and MySQL: News about JSON
 
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterMySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015
 
MySQL 5.7 Replication News
MySQL 5.7 Replication News MySQL 5.7 Replication News
MySQL 5.7 Replication News
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 
MySQL Cluster performance best practices
MySQL Cluster performance best practicesMySQL Cluster performance best practices
MySQL Cluster performance best practices
 
Mysql cluster introduction
Mysql cluster introductionMysql cluster introduction
Mysql cluster introduction
 
MySQL 5.7: Focus on Replication
MySQL 5.7: Focus on ReplicationMySQL 5.7: Focus on Replication
MySQL 5.7: Focus on Replication
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014
 
MySQL Document Store
MySQL Document StoreMySQL Document Store
MySQL Document Store
 
MySQL High Availibility Solutions
MySQL High Availibility SolutionsMySQL High Availibility Solutions
MySQL High Availibility Solutions
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
 

Viewers also liked

Sharding and scale out
Sharding and scale outSharding and scale out
Sharding and scale outOmar Eisa
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
MySQL Fabricつらい
MySQL FabricつらいMySQL Fabricつらい
MySQL Fabricつらいyoku0825
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワyoku0825
 
MySQL 5.7 Fabric: Introduction to High Availability and Sharding
MySQL 5.7 Fabric: Introduction to High Availability and Sharding MySQL 5.7 Fabric: Introduction to High Availability and Sharding
MySQL 5.7 Fabric: Introduction to High Availability and Sharding Ulf Wendel
 
Autoscaling Cloud Foundry with BOSH
Autoscaling Cloud Foundry with BOSHAutoscaling Cloud Foundry with BOSH
Autoscaling Cloud Foundry with BOSHi_yudai
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなしyoku0825
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはyoku0825
 

Viewers also liked (8)

Sharding and scale out
Sharding and scale outSharding and scale out
Sharding and scale out
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
MySQL Fabricつらい
MySQL FabricつらいMySQL Fabricつらい
MySQL Fabricつらい
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
MySQL 5.7 Fabric: Introduction to High Availability and Sharding
MySQL 5.7 Fabric: Introduction to High Availability and Sharding MySQL 5.7 Fabric: Introduction to High Availability and Sharding
MySQL 5.7 Fabric: Introduction to High Availability and Sharding
 
Autoscaling Cloud Foundry with BOSH
Autoscaling Cloud Foundry with BOSHAutoscaling Cloud Foundry with BOSH
Autoscaling Cloud Foundry with BOSH
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
 

Similar to MySQL Fabric: Easy Management of MySQL Servers

My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1Ricky Setyawan
 
My sql fabric webinar tw2
My sql fabric webinar tw2My sql fabric webinar tw2
My sql fabric webinar tw2Ivan Tu
 
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013Andrew Morgan
 
Replicate data between environments
Replicate data between environmentsReplicate data between environments
Replicate data between environmentsDLT Solutions
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesBobby Curtis
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microserviceMojtaba Khandan
 
206450 primavera gateway
206450 primavera gateway206450 primavera gateway
206450 primavera gatewayp6academy
 
Con8833 access at scale for hundreds of millions of users final
Con8833 access at scale for hundreds of millions of users   finalCon8833 access at scale for hundreds of millions of users   final
Con8833 access at scale for hundreds of millions of users finalOracleIDM
 
OpenStack Toronto: Juno Community Update
OpenStack Toronto: Juno Community UpdateOpenStack Toronto: Juno Community Update
OpenStack Toronto: Juno Community UpdateStephen Gordon
 
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015Dave Stokes
 
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]Markus Michalewicz
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Dave Stokes
 
Oracle Fusion Middleware Infrastructure Best Practices
Oracle Fusion Middleware Infrastructure Best PracticesOracle Fusion Middleware Infrastructure Best Practices
Oracle Fusion Middleware Infrastructure Best PracticesRevelation Technologies
 
Ukoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaUkoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaorablue11
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Dave Stokes
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksDave Stokes
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Fran Navarro
 
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMark Swarbrick
 
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4Frazer Clement
 

Similar to MySQL Fabric: Easy Management of MySQL Servers (20)

My sql fabric webinar v1.1
My sql fabric webinar v1.1My sql fabric webinar v1.1
My sql fabric webinar v1.1
 
My sql fabric webinar tw2
My sql fabric webinar tw2My sql fabric webinar tw2
My sql fabric webinar tw2
 
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013
NoSQL & SQL - Best of both worlds - BarCamp Berkshire 2013
 
Replicate data between environments
Replicate data between environmentsReplicate data between environments
Replicate data between environments
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
 
Oracle goldegate microservice
Oracle goldegate microserviceOracle goldegate microservice
Oracle goldegate microservice
 
206450 primavera gateway
206450 primavera gateway206450 primavera gateway
206450 primavera gateway
 
Con8833 access at scale for hundreds of millions of users final
Con8833 access at scale for hundreds of millions of users   finalCon8833 access at scale for hundreds of millions of users   final
Con8833 access at scale for hundreds of millions of users final
 
OpenStack Toronto: Juno Community Update
OpenStack Toronto: Juno Community UpdateOpenStack Toronto: Juno Community Update
OpenStack Toronto: Juno Community Update
 
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015MySQL's NoSQL  -- Texas Linuxfest August 22nd 2015
MySQL's NoSQL -- Texas Linuxfest August 22nd 2015
 
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]
Oracle RAC 12c Practical Performance Management and Tuning OOW13 [CON8825]
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
 
Oracle Fusion Middleware Infrastructure Best Practices
Oracle Fusion Middleware Infrastructure Best PracticesOracle Fusion Middleware Infrastructure Best Practices
Oracle Fusion Middleware Infrastructure Best Practices
 
Ukoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaUkoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dba
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disks
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster
 
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisationMySQL Webinar 2/4 Performance tuning, hardware, optimisation
MySQL Webinar 2/4 Performance tuning, hardware, optimisation
 
Cloud based database
Cloud based databaseCloud based database
Cloud based database
 
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
200 million qps on commodity hardware : Getting started with MySQL Cluster 7.4
 

More from 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
 

More from 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
 

Recently uploaded

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
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
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
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
 

Recently uploaded (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
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
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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
 
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
 

MySQL Fabric: Easy Management of MySQL Servers

  • 1. MySQL Fabric: Easy Management of MySQL Servers Mats Kindahl (mats.kindahl@oracle.com) Alfranio Correia (alfranio.correia@oracle.com) Narayanan Venkateswaran (v.narayanan@oracle.com) 1Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 2. Safe Harbor Statement 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. 2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 3. Presentation Outline  Introducing MySQL Fabric  High-Availability  Scaling  Managing  Connecting 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 4. MySQL Fabric An extensible and easy-to-use framework for managing a farm of MySQL server supporting high-availability and sharding 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Insert Picture Here
  • 5. MySQL Fabric: What is it? “Farm” Management System ● ● ● Written in Python ● ● Early alpha Distributed Framework Procedure Execution ● ● Farm Management ● ● Extensible ● ● ● ● ● ● ● 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Open Source ● Extensions are first-class High-Availability Groups “Semi-Automatic” Sharding Long road ahead You can participate Suggest features Report bugs Contribute patches MySQL 5.6 is focus
  • 6. MySQL Fabric: Goals & Features ● Connector API Extensions ● ● ● ● ● ● Read-Write Split Distribute transactions Global Updates ● ● 6 ● Global tables Schema updates Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | ● ● Using same key Sharding Functions ● Reducing network load Load Balancing Shard Multiple Tables ● Decision logic in connector ● ● Support Transactions Support full SQL ● Range (Consistent) Hash Shard Operations ● ● ● Using built-in executor Shard move Shard split
  • 7. Transaction Handling Hmm... looks like a read transaction Sharding key? Ah, there it is! Session state? BEGIN; SELECT salary INTO @s FROM salaries WHERE emp_no = 20101; SET @s = 1.1 * @s; What does this INSERT INTO salaries VALUES (20101, @s); procedure update? COMMIT; Oops.. it was a BEGIN; write transaction! CALL update_salary(20202, @s);  COMMIT; Transaction done! Clear session state? What about connection pools? New transaction! Different connection? Application error? What about the session state? 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 8. Transaction Handling ● Routing Transactions ● ● ● ● Pre-declare properties of transactions Detecting transaction boundaries Push as much as possible to server What about crashes? Managing Session State ● ● 8 Where do I store the session state? Move session state between servers – Easy to use – Expensive and error prone Reset state after each transaction – Transactions start with default session state Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | What Session State Change?
  • 9. Routing Transactions Contain decision logic for routing queries QUERY KEY Shard #2 Switch SHARD# QUERY KEY Contain information about location of shards State Store 9 Shard #1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Shard #3 Executor
  • 10. Deployment for Routing Transactions Network hop! Performance? Protocol? Single Points of Failure! Shard #1 Shard #2 Switch Shard #3 State Store 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Executor
  • 11. Deployment for Routing Transactions Deployed with application (e.g., inside connector) Shard #1 Shard #2 Switch API simple to add Caches can be used to avoid performance impact 11 Shard #3 State Store Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Executor
  • 12. Introducing MySQL Fabric Insert Picture Here 12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 13. Birds-eye View Operator Application Connector XML-RPC Connector Connector SQL MySQL Fabric Node SQL High Availability Groups (Shards) 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 14. High-Level Components Application ● ● ● In High-Availability Groups Managing the data MySQL Fabric Node MySQL Fabric Node ● ● ● 14 Connector Python, PHP, and Java Extended Connector API MySQL Servers ● ● Connector Fabric-aware Connectors ● ● Connector Maintain Meta-Information Information Interfaces Execute Procedures Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | High Availability Group
  • 15. MySQL Fabric Node Architecture Protocols Connector Connector ? ? AMQP MySQL XML-RPC Connector Sh MySQL Fabric Framework Executor 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | State Store (Persister) Extensions HA ? MySQL Backing Store
  • 16. MySQL Fabric: Prerequisites ● MySQL Servers (version 5.6.10 or later) ● ● ● Python 2.6 or 2.7 ● ● No support for 3.x yet MySQL Utilities 1.4.0 ● 16 Server for meta-data backing store Servers being managed Available at http://labs.mysql.com/ Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 17. MySQL Fabric: Configuration ● Backing Store ● ● ● ● Protocol ● ● ● Address where node will be Currently only XML-RPC Logging ● ● ● 17 MySQL server Persistent storage for state Storage engine-agnostic Chatty: INFO (default) Moderate: WARNING URL for rotating log Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | [storage] address = localhost:3306 user = fabric password =  database = fabric connection_timeout = 6 [protocol.xmlrpc] address = localhost:8080 threads = 5 [logging] level = INFO url = file:///var/log/fabric.log
  • 18. MySQL Fabric: Setup and Teardown ● Create the necessary tables in backing store mysqlfabric manage setup ● Remove the tables from backing store mysqlfabric manage teardown ● Connect to database server in “storage” section ● 18 Ensure that you have the necessary users and privileges Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 19. MySQL Fabric: Starting and Stopping ● Start MySQL Fabric node in foreground – print log to terminal mysqlfabric manage start ● Start MySQL Fabric node in background – print log to file mysqlfabric manage start ­­daemonize  ● Stop MySQL Fabric node mysqlfabric manage stop 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 20. Architecture for High-Availability 20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Insert Picture Here
  • 21. High-Availability Concepts ● Redundancy ● ● Monitoring ● ● ● Detecting failing components Monitor load Procedure ● ● 21 Duplicate critical components Activate backups Distribute load Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 22. High-Availability Group Concept ● Group of servers ● ● ● Generic Concept ● ● ● Implementation-independent Self-managed or externally managed Different Types ● ● ● 22 Hardware redundancy Data redundancy Primary-Backup (Master-Slave) Shared or Replicated Storage MySQL Cluster Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | n Do e!
  • 23. High-Availability Group Concept ● Abstract Concept ● ● ● Connector Attributes ● ● ● ● Connection information Mode: read-only, read-write, ... Weight: distribute load Management Attributes ● 23 Set of servers Server attributes State: state/role of the server Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | State: Mode: Host: Primary Read-Write server-1.example.com
  • 24. MySQL Fabric: Create Groups and add Servers ● Define a group mysqlfabric group create my_group ● Add servers to group User + Password (Likely to go away) mysqlfabric group add my_group server1.example.com    mats xyzzy mysqlfabric group add my_group server2.example.com    mats xyzzy 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 25. MySQL Fabric: Create Groups and add Servers ● Promote one server to be primary mysqlfabric group promote my_group ● Tell failure detector to monitor group mysqlfabric group activate my_group 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 26. Connecting to a MySQL Fabric Farm 26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Insert Picture Here
  • 27. Fabric-aware Connector API ● Connector API Extensions ● ● ● Reducing network load ● Read-Write Split Distribute transactions Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Fabric-aware Connectors ● ● ● ● ● ● Connector/J Connector/Python Connector/PHP Fabric-aware Frameworks ● Load Balancing ● 27 Support Transactions Support full SQL Decision logic in connector ● ● ● Doctrine Hibernate Focus on Connector/Python
  • 28. Fabric-aware Connector API ● Establish a “virtual” connection ● ● Real server connection established lazily Provide connection information for the Fabric node ● Fabric node will provide information about real servers import mysql.connector.fabric as connector conn = connector.MySQLFabricConnection(     fabric={"host": "fabric.example.com", "port" : 8080},     user='mats', database="employees") 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 29. Connector API: Executing a Transaction ● Provide group name ● ● Property: group Fabric will compute candidate servers ● Provide transaction type ● ● Property: type Fabric will pick server in right mode conn.set_property(group='my_group', type=TYPE_READWRITE) cur = conn.cursor() cur.execute("INSERT INTO employees VALUES (%s,%s,%s)",             (emp_no, first_name, last_name)) cur.execute("INSERT INTO titles(emp_no,title,from_date)"             “ VALUES (%s,%s,CURDATE())",             (emp_no, 'Intern')); conn.commit() Transactions work fine! 29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 30. Architecture for Sharding 30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Insert Picture Here
  • 31. Benefits of Sharding ● Write scalability ● ● Large data set ● ● ● Database too large Does not fit on single server Improved performance ● ● ● 31 Can handle more writes Smaller index size Smaller working set Improve performance Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | UID 10000-20000 UID 20001-40000
  • 32. MySQL Fabric: Sharding Goals & Features ● Connector API Extensions ● ● ● ● Using same key Global Updates ● ● 32 Reducing network load Shard Multiple Tables ● ● Support Transactions Support full SQL Decision logic in connector ● ● Global tables Schema updates Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Sharding Functions ● ● ● Range (Consistent) Hash Shard Operations ● ● ● Using built-in executor Shard move Shard split
  • 33. Mapping the Sharding Key What is a sharding key? ● ● How is the key transformed? ● ● ● 33 Hash Range User-defined Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Compute Shard# Shard# ● Single column Multi column – Same table? – Different tables? Key ● (X) (X,Y,...) RANGE HASH Something else
  • 34. Sharded Tables Table salaries Foreign keys Rows 284 404 700 titles 44 330 800 employees 30 002 400 dept_emp In desperate need of sharding! 33 160 300 dept_manager departments 34 2 400 900 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 35. Multi-table Query with Sharded Tables SELECT first_name, last_name, salary FROM salaries JOIN employees USING (emp_no) WHERE emp_no = 21012 AND CURRENT_DATE BETWEEN from_date AND to_date; ● Referential Integrity Constraint ● ● ● JOIN normally based on equality ● 35 Example query joining salaries and employees Same key, same shard: co-locate rows for same user Using non-equality defeats purpose of foreign key Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 36. Global Tables Table salaries Rows 284 404 700 titles 44 330 800 employees 30 002 400 dept_emp 33 160 300 dept_manager departments 2 400 900 Do not really need to be sharded 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 37. Multi-table Query with Global Tables SELECT first_name, last_name, GROUP_CONCAT(dept_name) FROM employees JOIN dept_emp USING (emp_no) JOIN departments USING (dept_no) WHERE emp_no = 21012 GROUP BY emp_no; ● JOIN with departments table ● ● ● 37 Has no employee number, hence no sharding key Table need to be present on all shards How do we update global tables? Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 38. Sharding Architecture MySQL Fabric Node Global Group Global Updates Connector Replication Connector Application Connector Shard Updates Shards 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Support global update for off-line shards
  • 39. MySQL Fabric: Sharding Setup ● Set up some groups ● ● ● ● Create a shard mapping ● ● ● ● 39 my_global – for global updates my_group.* – for the shards Add servers to the groups A “distributed database” Mapping keys to shards Give information on what tables are sharded Add shards Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 40. MySQL Fabric: Set up Shard Mapping Per-mapping Global Group (Likely to go away) ● Define shard mapping Will show the shard map identifier (a number) mysqlfabric sharding define hash my_global ● Add tables that should be sharded mysqlfabric sharding add_mapping 1    employees.employees emp_no mysqlfabric sharding add_mapping 1    employees.salaries emp_no ● 40 Tables not added are global Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Shard map identifier
  • 41. MySQL Fabric: Add Shards ● Add shards to shard mapping Shard map identifier mysqlfabric sharding add_shard 1 my_group.1 enabled     .     .     . mysqlfabric sharding add_shard 1 my_group.N enabled 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 42. MySQL Fabric: Moving and Splitting Shards ● Moving a shard from one group to another mysqlfabric sharding move 5 my_group.5 ● Splitting a shard into two pieces (hash) mysqlfabric sharding split 5 my_group.6 42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Shard ID
  • 43. Digression: Computing Shards ● ● ● Compute Shard# Extra properties passed out-of-band Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | Shard# Tables + sharding key Extended Connector API ● 43 Which mapping to use? Application don't care … but know tables in transaction Currently only one mapping Computing shard requires ● ● Key Multiple Mappings ● ● Compute Map# Map# Tables
  • 44. Connector API: Shard Specific Query ● Provide tables in query ● ● Property: tables Fabric will compute map ● Provide sharding key ● ● Property: key Fabric will compute shard conn.set_property(tables=['employees.employees', 'employees.titles'],                   key=emp_no) cur = conn.cursor() cur.execute("INSERT INTO employees VALUES (%s,%s,%s)",             (emp_no, first_name, last_name)) cur.execute("INSERT INTO titles(emp_no, title, from_date)"             “ VALUES (%s, %s, CURDATE())",             (emp_no, 'Intern')); conn.commit() Transactions work fine! 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 45. Connector API: Shard Specific Query ● Provide tables in query ● ● Property: tables Fabric will compute map ● Provide sharding key ● ● Property: key Fabric will compute shard conn.set_property(tables=['employees.employees', 'employees.titles'],                   key=emp_no) cur = conn.cursor() Join queries are sent to correct cur.execute(     "SELECT first_name, last_name, title" shard and executed there     "  FROM employees JOIN titles USING (emp_no)"     " WHERE emp_no = %d", (emp_no,)) for row in cur:     print row[0], row[1], “,“, row[2] 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 46. Connector API: Global Update ● Provide tables in query ● ● ● Property: tables Fabric will compute map (Likely to not be needed) ● Set global scope ● ● Property: scope Query goes to global group conn.set_property(tables=['employees.titles'], scope='GLOBAL') cur = conn.cursor() cur.execute("ALTER TABLE employees.titles ADD nickname VARCHAR(64)") 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 47. Closing Remarks Insert Picture Here 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 48. What do we have now? ● MySQL Farm Management ● ● ● Enhanced Connectors ● High-Availability Sharding ● ● ● High-Availability ● ● ● Group Concept Simple failure detector Slave promotion ● Sharding ● ● ● ● Connector APIs ● ● 48 Transaction properties “Logical” connection management Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | ● Connector/Python Connector/PHP Connector/J Range and hash sharding Shard move and shard split Global tables and updates Command-line Interface ● ● Easy setup and management XML-RPC Interfaces
  • 49. Thoughts for the Future ● Connector multi-cast ● ● ● ● ● ● ● Improving usability Focus on ease-of-use Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | MySQL-RPC Protocol? AMQP? ● More frameworks? ● More HA group types ● ● Command-line interface ● 49 Improve extension support Improve procedures support More protocols ● Internal interfaces ● ● Scatter-gather UNION of result sets More complex operations? ● ● DRBD MySQL Cluster Fabric-unaware connectors?
  • 50. Thoughts for the Future ● “More transparent” sharding ● ● ● Independent tables Multi-way shard split ● ● 50 Single-query transactions Cross-shard join is a problem Efficient initial sharding Better use of resources Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 | High-availability executor ● ● ● Multiple shard mappings ● ● ● ● Node failure stop execution Replicated State Machine Fail over to other Fabric node Distributed failure detector ● ● Connectors report failures Custom failure detectors
  • 51. Want to contribute? ● Check it … and send us use-case and feature suggestions ● Test it … and send comments to the forum ● Break it … and send in bugs to http://bugs.mysql.com 51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 52. Reading for the Interested ● MySQL Forum: Fabric, Sharding, HA, Utilities http://forums.mysql.com/list.php?144 ● A Brief Introduction to MySQL Fabric http://mysqlmusings.blogspot.com/2013/09/brief-introduction-to-mysql-fabric.html ● MySQL Fabric – Sharding – Introduction http://vnwrites.blogspot.com/2013/09/mysqlfabric-sharding-introduction.html ● Writing a Fault-tolerant Database Application using MySQL Fabric http://alfranio-distributed.blogspot.se/2013/09/writing-fault-tolerant-database.html 52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 53. Keeping in Touch Mats Kindahl Twitter: @mkindahl Blog: http://mysqlmusings.blogspot.com Alfranio Correia Twitter: @alfranio Blog: http://alfranio-distributed.blogspot.com Narayanan Venkateswaran Twitter: @vn_tweets Blog: http://vnwrites.blogspot.com 53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |
  • 54. Thank you! 54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.| Percona Live | London, UK, November 12th 2013 |