Slide 1

Slide 1 text

MySQL Fabric MySQL Global Business Unit Sales Consulting Manager, JAPAC 梶山 隆輔 / Ryusuke Kajiyama

Slide 2

Slide 2 text

Copyright Oracle Corporation 2014 2 Safe Harbour 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 decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Slide 3

Slide 3 text

Copyright Oracle Corporation 2014 3 COMPONENTS MySQL: Next Generation Web Applications On-Premises, in the Cloud, Distributed Applications

Slide 4

Slide 4 text

Copyright Oracle Corporation 2014 4 MySQL 5.5 MySQL Enterprise Monitor 2.3 & 3.0 MySQL Enterprise Backup Security Scalability HA Audit MySQL 5.6 MySQL Workbench 6.1 M y S Q L U t i l i t i e s MySQL Applier for Hadoop MySQL Workbench 5.2 & 6.0 M y S Q L E n t e r p r i s e O r a c l e C e r t i f i c a t i o n s MySQL@Oracle: 4 Years of MySQL Innovation M y S Q L C l u s t e r M a n a g e r Windows installer & Tools MySQL Cluster 7.2 MySQL Cluster 7.1 MySQL Migration Wizard MySQL 5.7 MySQL Cluster 7.4 MySQL Fabric MySQL Cluster 7.3

Slide 5

Slide 5 text

Copyright Oracle Corporation 2014 5 MySQL 5.7: DMR 4 §  InnoDB for better transactional throughput, availability, IO §  Replication for better scalability and availability §  Utilities for dev/ops automation §  Performance Schema for better performance metrics §  Optimizer for better EXPLAINing, query performance, enhanced buffering and partition optimization §  Connecting at higher rates, improve session efficiency Available Now! Get it here: dev.mysql.com/downloads/mysql/ MySQL 5.7 builds on MySQL 5.6 by improving:

Slide 6

Slide 6 text

Copyright Oracle Corporation 2014 6 MySQL 5.7 Sysbench Benchmark Sysbench Point Select Intel(R) Xeon(R) CPU X7560 x86_64 5 sockets x 8 cores-HT (80 CPU threads) 2.27GHz, 256G RAM Oracle Linux 6.5 2X Faster than MySQL 5.6 Over 3X Faster than MySQL 5.5 630,000 QPS

Slide 7

Slide 7 text

Copyright Oracle Corporation 2014 7 MySQL 5.7: InnoDB Memcached Intel(R) Xeon(R) CPU X7560 x86_64 8 sockets x 6 cores-HT (96 CPU threads) 2000Mhz, 256G RAM Oracle Linux 6.2 6x Faster than MySQL 5.6 1,150,000 QPS 0 200000 400000 600000 800000 1000000 1200000 1400000 8 16 32 64 128 256 512 1024 Queries per Second Concurrent User Sessions 5.7.3 5.6

Slide 8

Slide 8 text

Copyright Oracle Corporation 2014 8 http://dimitrik.free.fr/blog/archives/2014/04/mysql-57-just-rocks.html

Slide 9

Slide 9 text

Copyright Oracle Corporation 2014 9 MySQL Workbench 6.1 Performance and Status Dashboards Analyze hotspots, costly SQL statements, wait times, locks, InnoDB stats, and more Network, Server, InnoDB

Slide 10

Slide 10 text

Copyright Oracle Corporation 2014 10 MySQL Cluster 7.4 §  Performance gain over 7.3 –  47% (Read-Only) –  38% (Read-Write) Better performance and operational simplicity labs.mysql.com §  Faster node restarts –  Recovering nodes rejoin the cluster faster 0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 9000" 10000" 64" 128" 256" 512" Transac'on)per)second) Threads) Sysbench)RO) 7.4.0" 7.3.5" 7.2.16" 0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 9000" 64" 128" 256" 512" Transac'ons)per)second) Threads) Sysbench)R/W) 7.4.0" 7.3.5" 7.2.16"

Slide 11

Slide 11 text

Copyright Oracle Corporation 2014 11 MySQL Utilities 1.4 §  Automate common Dev/Ops tasks –  Replication: provisioning, testing, monitoring and failover –  Database comparisons: consistency checking –  Database administration: users, connections, tables –  Auditing §  Python scripts –  Now standalone or launched from MySQL Workbench –  Extensible to include custom scripting; Python library for extensibility Powerful DevOps Management tools for MySQL

Slide 12

Slide 12 text

Copyright Oracle Corporation 2014 12 MySQL Utilities $ mysqluc -e "help utilities" Launching console ... Utility Description ---------------- --------------------------------------------------------- mysqlauditadmin audit log maintenance utility mysqlauditgrep audit log search utility mysqldbcompare compare databases for consistency mysqldbcopy copy databases from one server to another mysqldbexport export metadata and data from databases mysqldbimport import metadata and data from files mysqldiff compare object definitions among objects where the difference is how db1.obj1 differs from db2.obj2 mysqldiskusage show disk usage for databases mysqlfailover automatic replication health monitoring and failover mysqlfrm show CREATE TABLE from .frm files ...

Slide 13

Slide 13 text

Copyright Oracle Corporation 2014 13 MySQL Utilities ... mysqlindexcheck check for duplicate or redundant indexes mysqlmetagrep search metadata mysqlprocgrep search process information mysqlreplicate establish replication with a master mysqlrpladmin administration utility for MySQL replication mysqlrplcheck check replication mysqlrplms establish multi-source replication mysqlrplshow show slaves attached to a master mysqlrplsync replication synchronization checker utility mysqlserverclone start another instance of a running server mysqlserverinfo show server information mysqluserclone clone a MySQL user account to one or more new users

Slide 14

Slide 14 text

Copyright Oracle Corporation 2014 14 An extensible and easy-to-use framework for managing a farm of MySQL server supporting high-availability and sharding MySQL Fabric

Slide 15

Slide 15 text

Copyright Oracle Corporation 2014 15 MySQL Fabric 1.4 §  High Availability: –  Server monitoring with auto-promotion and transparent application failover §  Fabric-aware connectors rather than proxy: Python, Java & PHP §  Optionally scale-out through sharding –  Application provides shard key –  Range or Hash –  Tools for resharding –  Global updates & tables §  Available in MySQL Utilities 1.4 High Availability + Sharding-Based Scale-out MySQL Fabric Connector Application Read-slaves mappings SQL Master group Read-slaves Master group

Slide 16

Slide 16 text

Copyright Oracle Corporation 2014 16 MySQL Fabric Framework Shard 2 Primary Secondary Extra Read Replicas MySQL Fabric Node SQL Queries State & Routing Info HA Group Coordination and Control

Slide 17

Slide 17 text

Copyright Oracle Corporation 2014 17 MySQL Fabric: Prerequisites ●  MySQL Servers (version 5.6.10 or later) ●  Backing store database server ●  Application database servers ●  Python 2.6 or 2.7 ●  No support for 3.x yet ●  Connector/Python 1.2.1 or later ●  MySQL Utilities 1.4 ●  Available at https://dev.mysql.com/downloads/tools/utilities

Slide 18

Slide 18 text

Copyright Oracle Corporation 2014 18 Copyright © 2014, Oracle and/or its affiliates. All rights reserved.| Percona Live | April 3, 2014 | 9 High-Level Components ● Fabric-aware Connectors ● Python, PHP, and Java ● Enhanced Connector API ● MySQL Fabric Node ● Manage information about farm ● Provide status information ● Execute procedures ● MySQL Servers ● Organized in High-Availability Groups ● Handling application data High Availability Group Application Connector Connector Connector MySQL Fabric Node High-Level Components ●  Fabric-aware Connectors ●  Python, PHP, and Java ●  Enhanced Connector API ●  MySQL Fabric Node ●  Manage information about farm ●  Provide status information ●  Execute procedures ●  MySQL Servers ●  Organized in High-Availability Groups ●  Handling application data

Slide 19

Slide 19 text

Copyright Oracle Corporation 2014 19 MySQL Replication & MySQL Fabric HA §  MySQL Replication is the initial implementation used in HA Groups –  PRIMARY = Replication Master & receives all writes §  Failover –  MySQL Fabric detects failure of PRIMARY/Master –  Selects a SECONDARY/Slave and promotes it –  Updates State Store –  Pushes state change to Fabric-aware connectors & how this effects failover

Slide 20

Slide 20 text

Copyright Oracle Corporation 2014 20 MySQL Fabric: Configuration ●  Backing Store ●  MySQL server ●  Persistent storage for state ●  Storage engine-agnostic ●  Protocol ●  Address where node will be ●  Currently only XML-RPC ●  Logging ●  Chatty: INFO (default) ●  Moderate: WARNING ●  URL for rotating log [storage] address = localhost:3306 user = fabric password = database = fabric [servers] user = fabric password = [protocol.xmlrpc] address = localhost:32274 threads = 5 disable_authentication = yes [logging] level = INFO url = file:///var/log/fabric.log

Slide 21

Slide 21 text

Copyright Oracle Corporation 2014 21 MySQL Replication & MySQL Fabric HA §  MySQL Replication is the initial implementation used in HA Groups –  PRIMARY = Replication Master & receives all writes §  Failover –  MySQL Fabric detects failure of PRIMARY/Master –  Selects a SECONDARY/Slave and promotes it –  Updates State Store –  Pushes state change to Fabric-aware connectors & how this effects failover

Slide 22

Slide 22 text

Copyright Oracle Corporation 2014 22 High-Availability Group Concept §  Abstract Concept –  Set of servers –  Server attributes §  Connector Attributes –  Connection information –  Mode: read-only, read-write, ... –  Weight: distribute load §  Management Attributes –  State: state/role of the server State: Primary Mode: Read-Write Host: server-1.example.com

Slide 23

Slide 23 text

Copyright Oracle Corporation 2014 23 Create HA Groups and add Servers §  Define a group mysqlfabric group create my_group §  Add servers to group mysqlfabric group add my_group server1.example.com \ mats xyzzy mysqlfabric group add my_group server2.example.com \ mats xyzzy

Slide 24

Slide 24 text

Copyright Oracle Corporation 2014 24 Create HA 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

Slide 25

Slide 25 text

Copyright Oracle Corporation 2014 25 Scaling on dense, multi-core, multi-thread servers •  10s - 100GBs RAM •  SSDs Scale across cores within a single instance You can get a long way with MySQL 5.6! The Path to Scalability Scaling-Up can take you a long way

Slide 26

Slide 26 text

Copyright Oracle Corporation 2014 26 Benefits of Sharding §  Write scalability –  Can handle more writes §  Large data set –  Database too large –  Does not fit on single server §  Improved performance –  Smaller index size –  Smaller working set –  Improve performance UID 10000-20000 UID 20001-40000

Slide 27

Slide 27 text

Copyright Oracle Corporation 2014 27 MySQL Fabric Features §  Connector API Extensions –  Support Transactions –  Support full SQL §  Decision logic in connector –  Reducing network load §  Shard Multiple Tables –  Using same key §  Global Updates –  Global tables –  Schema updates §  Sharding Functions –  Range –  (Consistent) Hash §  Shard Operations –  Shard move –  Shard split

Slide 28

Slide 28 text

Copyright Oracle Corporation 2014 28 Sharding Architecture Shards MySQL Fabric Node Application Global Group Global Updates Shard Updates Replication

Slide 29

Slide 29 text

Copyright Oracle Corporation 2014 29 MySQL Fabric Framework Global Data Primary Secondary Shard 1 Primary Secondary Shard 2 Primary Secondary MySQL Fabric Node SQL Queries Server/Shard State & Mapping Master Group HA Group Coordination and Control HA Group Extra Read Replicas Extra Read Replicas Extra Read Replicas

Slide 30

Slide 30 text

Copyright Oracle Corporation 2014 30 Routing Transactions Shard #2 Shard #1 Shard #3 Executor App Server Connector Cache State Store

Slide 31

Slide 31 text

Copyright Oracle Corporation 2014 31 Routing Transactions Shard #2 Shard #1 Shard #3 Executor App Server Connector Cache State Store App Server Connector Cache

Slide 32

Slide 32 text

Copyright Oracle Corporation 2014 32 MySQL Fabric: Sharding Setup §  Set up some groups –  my_global – for global updates –  my_group.N – for the shards –  Add servers to the groups §  Create a shard mapping –  A “distributed database” –  Mapping keys to shards –  Give information on what tables are sharded §  Add shards

Slide 33

Slide 33 text

Copyright Oracle Corporation 2014 33 MySQL Fabric: Moving and Splitting Shards §  Moving a shard from one group to another mysqlfabric sharding move 5 my_group.8 §  Splitting a shard into two pieces (hash) mysqlfabric sharding split 5 my_group.6

Slide 34

Slide 34 text

Copyright Oracle Corporation 2014 34 Connector API: Shard Specific Query §  Provide tables in query –  Property: tables –  Fabric will compute map 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() §  Provide sharding key –  Property: key –  Fabric will compute shard

Slide 35

Slide 35 text

Copyright Oracle Corporation 2014 35 Connector API: Shard Specific Query §  Provide tables in query –  Property: tables –  Fabric will compute map conn.set_property(tables=['employees.employees', 'employees.titles'], key=emp_no) cur = conn.cursor() cur.execute( "SELECT first_name, last_name, title" " FROM employees JOIN titles USING (emp_no)" " WHERE emp_no = %d", (emp_no,)) for row in cur: print row[0], row[1], “,“, row[2] §  Provide sharding key –  Property: key –  Fabric will compute shard

Slide 36

Slide 36 text

Copyright Oracle Corporation 2014 36 Connector API: Global Update §  Provide tables in query –  Property: tables –  Fabric will compute map –  (Likely to not be needed) conn.set_property(tables=['employees.titles'], scope='GLOBAL') cur = conn.cursor() cur.execute("ALTER TABLE employees.titles ADD nickname VARCHAR(64)") §  Set global scope –  Property: scope –  Query goes to global group

Slide 37

Slide 37 text

Copyright Oracle Corporation 2014 37 MySQL Fabric Node MySQL MySQL Fabric Framework Executor State Store (Persister) Sh HA MySQL AMQP XML-RPC ? ? Protocols Extensions Backing Store Extensible Architecture

Slide 38

Slide 38 text

Copyright Oracle Corporation 2014 38 MySQL Fabric: Goals & Features §  Connector API Extensions –  Support Transactions –  Support full SQL §  Fabric-Aware Connectors at GA: –  PHP + Doctrine, Python, Java + Hibernate §  Decision logic in connector –  Reducing network load §  Load Balancing –  Read-Write Split –  Distribute transactions §  Global Updates –  Global tables –  Schema updates §  Shard Multiple Tables –  Using same key §  Sharding Functions –  Range –  (Consistent) Hash §  Shard Operations –  Shard move –  Shard split

Slide 39

Slide 39 text

Copyright Oracle Corporation 2014 39 MySQL Fabric – Current Limitations §  Routing is dependent on Fabric- aware connectors –  Currently Java (+ Hibernate), PHP (+ Doctrine) & Python §  MySQL Fabric node is a single (non- redundant process) –  HA Maintained as connectors continue to route using local caches §  Establishes asynchronous replication –  Manual steps to switch to semisynchronous §  Sharding not transparent to application (must provide shard key) §  No cross-shard joins or other queries §  Management in through CLI or XML/RPC API –  No GUI

Slide 40

Slide 40 text

Copyright Oracle Corporation 2014 40 Oracle MySQL HA & Scaling Solutions MySQL Replication MySQL Fabric Oracle VM Template Solaris Cluster Windows Cluster DRBD MySQL Cluster App Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔ Data Layer Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔ Zero Data Loss MySQL 5.7 ✔ ✔ ✔ ✔ ✔ ✔ Platform Support All All Linux Solaris Windows Linux All Clustering Mode Master + Slaves Master + Slaves Active/ Passive Active/ Passive Active/ Passive Active/ Passive Multi- Master Failover Time N/A Secs Secs + Secs + Secs + Secs + < 1 Sec Scale-out Reads ✔ ✖ ✖ ✖ ✖ ✔ Cross-shard operations N/A ✖ N/A N/A N/A N/A ✔ Transparent routing ✖ For HA ✔ ✔ ✔ ✔ ✔ Shared Nothing ✔ ✔ ✖ ✖ ✖ ✔ ✔ Storage Engine InnoDB+ InnoDB+ InnoDB+ InnoDB+ InnoDB+ InnoDB+ NDB Single Vendor Support ✔ ✔ ✔ ✔ ✖ ✔ ✔

Slide 41

Slide 41 text

Copyright Oracle Corporation 2014 41 MySQL Fabric Resources §  Download and try http://dev.mysql.com/downloads/fabric/ §  Documentation http://dev.mysql.com/doc/mysql-utilities/1.4/en/fabric.html §  Forum (MySQL Fabric, Sharding, HA, Utilities) http://forums.mysql.com/list.php?144 §  Tutorial: MySQL Fabric - adding High Availability and Scaling to MySQL http://www.clusterdb.com/mysql-fabric/mysql-fabric-adding-high-availability-and-scaling-to-mysql §  White Paper: MySQL Fabric - A Guide to Managing MySQL High Availability and Scaling Out http://www.mysql.com/why-mysql/white-papers/mysql-fabric-product-guide §  Webinar Replays http://www.mysql.com/news-and-events/on-demand-webinars/#en-20-41

Slide 42

Slide 42 text

Copyright Oracle Corporation 2014 42