MySQL Cluster: HA als StorageEngine

Similar documents
MySQL Cluster New Features. Johan Andersson MySQL Cluster Consulting johan.andersson@sun.com

MySQL Cluster Deployment Best Practices

High Availability Solutions for the MariaDB and MySQL Database

SCALABLE DATA SERVICES

stub (Private Switch) Solaris 11 Operating Environment In the Solaris 11 Operating Environment, four zones are created namely:

Tushar Joshi Turtle Networks Ltd

White Paper. Optimizing the Performance Of MySQL Cluster

Architectures Haute-Dispo Joffrey MICHAÏE Consultant MySQL

Synchronous multi-master clusters with MySQL: an introduction to Galera

SQL 2014 CTP1. Hekaton & CSI Version 2 unter der Lupe. Sascha Götz Karlsruhe, 03. Dezember 2013


Database Administration with MySQL

MySQL High-Availability and Scale-Out architectures

Identity as a Service Powered by NetIQ Services Director Installation Guide

Microsoft Nano Server «Tuva» Rinon Belegu

Using MySQL for Big Data Advantage Integrate for Insight Sastry Vedantam

Partitioning under the hood in MySQL 5.5

S W I S S O R A C L E U S E R G R O U P. N e w s l e t t e r 3 / J u l i with MySQL 5.5. Spotlight on the SQL Tuning

DBA Tutorial Kai Voigt Senior MySQL Instructor Sun Microsystems Santa Clara, April 12, 2010

MySQL Storage Engines

High Availability Solutions with MySQL

Tier Architectures. Kathleen Durant CS 3200

MySQL és Hadoop mint Big Data platform (SQL + NoSQL = MySQL Cluster?!)

New Features in MySQL 5.0, 5.1, and Beyond

How to choose High Availability solutions for MySQL MySQL UC 2010 Yves Trudeau Read by Peter Zaitsev. Percona Inc MySQLPerformanceBlog.

CommVault Simpana 7.0 Software Suite. und ORACLE Momentaufnahme. Robert Romanski Channel SE

High-availability with Galera Cluster for MySQL

High Availability and Scalability for Online Applications with MySQL

Percona Server features for OpenStack and Trove Ops

Recovery Principles in MySQL Cluster 5.1

PASS Deutschland e.v. Regionalgruppe Köln/Bonn/Düsseldorf

Quantum BACKUP. RECOVERY. ARCHIVE. IT S WHAT WE DO.

ida.com excellence in dependable automation

Future-Proofing MySQL for the Worldwide Data Revolution

Welcome to Virtual Developer Day MySQL!

MySQL always-up with Galera Cluster

Part 3. MySQL DBA I Exam

MySQL 5.0. Kai Voigt MySQL AB Kiel, 17. Februar 2006

Oracle DBA Course Contents

MySQL 6.0 Backup. Replication and Backup Team. Dr. Lars Thalmann Dr. Charles A. Bell Rafal Somla. Presented by, MySQL & O Reilly Media, Inc.

SQL Databases Course. by Applied Technology Research Center. This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases.

MariaDB Cassandra interoperability

Full Text Search in MySQL 5.1 New Features and HowTo

Update to V10. Automic Support: Best Practices Josef Scharl. Please ask your questions here Event code 6262

How To Monitor Mysql With Zabbix

Best Practices for Using MySQL in the Cloud

db4o Teching Software-Engineering Great stuff! 20 years with Relational Databases PostgreSQL, SQLite, Oracle...

Ninja Webtechnologies. Eray Basar, 9elements

MySQL High Availability Solutions. Lenz Grimmer OpenSQL Camp St. Augustin Germany

MySQL Reference Architectures for Massively Scalable Web Infrastructure

Cassandra vs MySQL. SQL vs NoSQL database comparison

General DBA Best Practices

news from Tom Bacon about Monday's lecture

Real-time reporting at 10,000 inserts per second. Wesley Biggs CTO 25 October 2011 Percona Live

A Shared-nothing cluster system: Postgres-XC

F1: A Distributed SQL Database That Scales. Presentation by: Alex Degtiar (adegtiar@cmu.edu) /21/2013

Erste Schritte mit mysql. Der Umgang mit einer relationalen Datenbank

Quanqing XU YuruBackup: A Highly Scalable and Space-Efficient Incremental Backup System in the Cloud

Microsoft SQL Database Administrator Certification

Online Schema Changes for Maximizing Uptime. David Turner - Dropbox Ben Black - Tango

Availability Digest. MySQL Clusters Go Active/Active. December 2006

Testen mit Produktionsdaten Fluch oder Segen?

Sivakumar Software Engg, Zagro Singapore Pte Ltd .

Vergleich der Versionen von Kapitel 1 des EU-GMP-Leitfaden (Oktober 2012) 01 July November Januar 2013 Kommentar Maas & Peither

MongoDB Developer and Administrator Certification Course Agenda

Search Engines Chapter 2 Architecture Felix Naumann

TIn 1: Lecture 3: Lernziele. Lecture 3 The Belly of the Architect. Basic internal components of the Pointers and data storage in memory

Overview of Databases On MacOS. Karl Kuehn Automation Engineer RethinkDB

Configuring and Administering Hyper-V in Windows Server 2012 MOC 55021

QAS DEBUG - User und Computer

Databases and SQL. Homework. Matthias Danner. June 11, Matthias Danner Databases and SQL June 11, / 16

Monitoring MySQL. Geert Vanderkelen MySQL Senior Support Engineer Sun Microsystems

MySQL synchronous replication in practice with Galera

MySQL Technical Overview

Monitoreo de Bases de Datos

High Availability Solutions for MySQL. Lenz Grimmer DrupalCon 2008, Szeged, Hungary

Cloud Computing Is In Your Future

Encrypting MySQL data at Google. Jonas Oreland and Jeremy Cole

Safe Harbor Statement

Dave Stokes MySQL Community Manager

A programming model in Cloud: MapReduce

How to evaluate which MySQL High Availability solution best suits you

FOR TEACHERS ONLY The University of the State of New York

Preparing for the Big Oops! Disaster Recovery Sites for MySQL. Robert Hodges, CEO, Continuent MySQL Conference 2011

Top 10 Reasons why MySQL Experts Switch to SchoonerSQL - Solving the common problems users face with MySQL

Database Replication with MySQL and PostgreSQL

Software / FileMaker / Plug-Ins Mailit 6 for FileMaker 10-13

Flash Databases: High Performance and High Availability

A SURVEY OF POPULAR CLUSTERING TECHNOLOGIES

Oracle Database: SQL and PL/SQL Fundamentals NEW

Information Systems 2

Physical Data Organization

MySQL Cluster Delivering Scalable & Highly Available Session Management

MySQL: Cloud vs Bare Metal, Performance and Reliability

estos uacsta Server for SIP Phones

Network Attached Storage. Jinfeng Yang Oct/19/2015

Transcription:

MySQL Cluster: HA als StorageEngine Erkan Yanar linsenraum.de 25. April 2012 Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 1 / 34

What About Hochverfügbarkeit mit MySQL Topic Wir wollen Hochverfügbarkeit Daten Service Und wie erreichen? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 2 / 34

Datenredundanz/Verfügbarkeit Replication Lösungsmöglichkeiten: HA auf Basis von Replikation Replikation Datenredundanz Slave read only (Scaleout) HA Daten redundant? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 3 / 34

Datenredundanz/Verfügbarkeit Replication Lösungsmöglichkeiten: HA auf Basis von Replikation Replikation Datenredundanz Slave read only (Scaleout) HA Daten redundant? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 3 / 34

Datenredundanz/Verfügbarkeit Replication Lösungsmöglichkeiten: HA auf Basis von Replikation Replikation Datenredundanz Slave read only (Scaleout) HA Daten redundant? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 3 / 34

Datenredundanz/Verfügbarkeit Replication Lösungsmöglichkeiten: HA auf Basis von Replikation Replikation Datenredundanz Slave read only (Scaleout) HA Daten redundant? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 3 / 34

Datenredundanz/Verfügbarkeit Replication Sicherheit semisync vs. Performance async Failover Daten Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 4 / 34

Datenredundanz/Verfügbarkeit Blocklevel Blocklevel 2 Nodes Limit Nur ein Rechner Failover Daten Recoverydowntime Keine Skalierung Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 5 / 34

Datenredundanz/Verfügbarkeit Blocklevel Blocklevel 2 Nodes Limit Nur ein Rechner Failover Daten Recoverydowntime Keine Skalierung Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 5 / 34

Datenredundanz/Verfügbarkeit StorageEngines Modulares MySQL Storage Engine Authentication INFORMATION SCHEMA General Replication Audit... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 6 / 34

Datenredundanz/Verfügbarkeit StorageEngines Modulares MySQL Storage Engine Authentication INFORMATION SCHEMA General Replication Audit... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 6 / 34

Local Storage Engine Datenredundanz/Verfügbarkeit StorageEngines CREATE TABLE tablename (...) ENGINE=... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 7 / 34

Datenredundanz/Verfügbarkeit StorageEngines Storage Engines CREATE TABLE tablename (...) ENGINE=... Local Storage INNODB/XtraDB MYISAM Aria PBXT OQGraph... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 8 / 34

Weite Welt Datenredundanz/Verfügbarkeit StorageEngines CREATE TABLE tablename (...) ENGINE=... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 9 / 34

Datenredundanz/Verfügbarkeit StorageEngines Network Storage FedratedX SpiderSE NDB (Network Database) CREATE TABLE tbl a( col a int, col b int, PRIMARY KEY(col a) ) ENGINE = FEDERATED CONNECTION mysql://ich:auch@10.10.10.24/db/tbl a ; Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 10 / 34

Datenredundanz/Verfügbarkeit StorageEngines Network Storage FedratedX SpiderSE NDB (Network Database) CREATE TABLE tbl a( col a int, col b int, PRIMARY KEY(col a)) ENGINE = SPIDER CONNECTION table tbl a, user ich, password auch PARTITION BY RANGE( col a ) ( PARTITION p1 VALUES LESS THAN (1000) COMMENT host 192.168.178.25, PARTITION p2 VALUES LESS THAN (2000) COMMENT host 192.168.178.26, PARTITION p3 VALUES LESS THAN (MAXVALUE) COMMENT host 192.168.178.27 ); Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 10 / 34

Datenredundanz/Verfügbarkeit StorageEngines Network Storage FedratedX SpiderSE NDB (Network Database) CREATE TABLE imha (... ) ENGINE=NDB; Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 10 / 34

MySQL Cluster Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 11 / 34

MySQL Cluster Network Storage Speicher Engine Shared Nothing HA: 99,999% ACID READ COMMITTED Row Locking Two Phase Commit Keine FK Key/Value Applikation! ALTER TABLE... ENGINE=NDB Hash-Partitionierung/Sharding Durchsatz, Parallelität Scaleout Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 12 / 34

MySQL Cluster Komponenten Komponenten ndb(mt)d mgmd MySQL/API Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 13 / 34

MySQL Cluster Komponenten Komponenten ndb(mt)d mgmd MySQL/API Datenknoten Partitionierung/Redundanz 2-Phase-Commit Failover max. 48 Nodes Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 13 / 34

MySQL Cluster Komponenten Komponenten ndb(mt)d mgmd MySQL/API Managementdeamon/knoten: Konfiguration Logging Arbitrator Managementinterface Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 13 / 34

MySQL Cluster Komponenten Komponenten ndb(mt)d mgmd MySQL/API API Kommunikation via ndb-api ENGINE=NDB Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 13 / 34

MySQL Cluster NoOfReplicas Implementing HA ndb(mt)d NoOfReplicas Primary lead Failover Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 14 / 34

MySQL Cluster 2PC Impelenting HA: 2PC Datenkonsitenz a la 2PC TransactionCoordinator Prepare Commit Latenz Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 15 / 34

MySQL Cluster 2PC Impelenting HA: 2PC 100.000 Inserts: InnoDB NDB 0m7.911s 1m47.806s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 15 / 34

MySQL Cluster Changing Data INSERT/UPDATE Changing Data Parallel Inserts Parallel Updates Multi Data-Nodes Multi Api-Nodes! Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 16 / 34

MySQL Cluster SELECTs SELECT NDB SELECTs Key Lookups Nested Loop Join Push-Down-Join (SPJ) Parallel Scans Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 17 / 34

MySQL Cluster SELECTs a SELECT id2 FROM a WHERE id=@a; 100.000 x uniform Query InnoDB 5.5.20 ndb 7.1.0 ndb 7.2.5 a 8.526s 29.290s 29.290s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 18 / 34

MySQL Cluster SELECTs a SELECT id2 FROM a WHERE id=@a; 100.000 x uniform b SELECT COUNT(*) FROM a JOIN b using (id); Query InnoDB 5.5.20 ndb 7.1.0 ndb 7.2.5 a 8.526s 29.290s 29.290s b 0.130s 16.290s SPJ 0.750s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 18 / 34

MySQL Cluster SELECTs a SELECT id2 FROM a WHERE id=@a; 100.000 x uniform b SELECT COUNT(*) FROM a JOIN b using (id); c SELECT COUNT(*) FROM a JOIN b using (id) where a.id=100; 100.000x Query InnoDB 5.5.20 ndb 7.1.0 ndb 7.2.5 a 8.526s 29.290s 29.290s b 0.130s 16.290s 0.750s c 8.131s 40.285s 44.043s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 18 / 34

MySQL Cluster SELECTs a SELECT id2 FROM a WHERE id=@a; 100.000 x uniform b SELECT COUNT(*) FROM a JOIN b using (id); c SELECT COUNT(*) FROM a JOIN b using (id) where a.id=100; 100.000x d SELECT COUNT(id2) FROM a JOIN b using (id2) where a.id=1000; Query InnoDB 5.5.20 ndb 7.1.0 ndb 7.2.5 a 8.526s 29.290s 29.290s b 0.130s 16.290s 0.750s c 8.131s 40.285s 44.043s d 34.844s 560.717s 559.317s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 18 / 34

MySQL Cluster SELECTs a SELECT id2 FROM a WHERE id=@a; 100.000 x uniform b SELECT COUNT(*) FROM a JOIN b using (id); c SELECT COUNT(*) FROM a JOIN b using (id) where a.id=100; 100.000x d SELECT COUNT(id2) FROM a JOIN b using (id2) where a.id=1000; Query InnoDB 5.5.20 ndb 7.1.0 ndb 7.2.5 a 8.526s 29.290s 29.290s b 0.130s 16.290s 0.750s c 8.131s 40.285s 44.043s d 34.844s 560.717s 559.317s Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 18 / 34

MySQL Cluster Making the whole Cluster HA Begrenztes HA HA der MySQLd? Loadbalancer Connectoren Pacemaker Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 19 / 34

NDB best used for: UseCases Viele kleine Trans. Key/Value Lookups HA Hoher Durchsatz Telco Gaming... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 20 / 34

Memory Memory Only NDB Speicheraufteilung IndexMemory DataMemory Hard Limit UNIQUE/PK Indices Indices und Data Pages stick to table Kein Auslagern Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 21 / 34

Memory Memory Only NDB Speicheraufteilung IndexMemory DataMemory Hard Limit UNIQUE/PK Indices Indices und Data Pages stick to table Kein Auslagern Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 21 / 34

Memory Memory Only NDB Speicheraufteilung IndexMemory DataMemory Hard Limit UNIQUE/PK Indices Indices und Data Pages stick to table Kein Auslagern Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 21 / 34

Memory Fixed Arrays Fröhliches Konfigurieren IndexMemory PK, UNIQUE DataMemory Data, (Ordered) Indices, StringMemory MaxNoOfOrderedIndexes MaxNoOfAttributes MaxNoOfUniqueHashIndexes MaxNoOfConcurrentOperations ndb config -f: -q Id,MaxNoOfConcurrentOperations Out of string memory,...permanent error: Schema error Maximale Zahl der Ordered Indices Max. Tabellen, Indices, Columns etc. Max. Unique Indices die nicht PK sind. Operation Records in TC1KB Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 22 / 34

Memory Memory hitting Disk Und was ist mit Disk? Disk IO! MySQL Cluster schreibt in DiskCheckpointSpeed DataMemory (als LCP) mit TimeBetweenLocalCheckpoints Abstand auf die Disk. Das Redo Log (NoOfFragmentLoges * FragmentLogFileSize) muss groß genug sein, um die Änderungen während 2x LCP zu speichern. Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 23 / 34

Konfiguration MySQL Cluster: Konfiguration config.ini Verwaltet vom mgmd Definiert Mitglieder Konfiguriert Teilnehmer Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 24 / 34

StartUp Konfiguration host1# ndb_mgmd [--initial] --config-file=/tmp/config.ini host2# ndbd [--initial] --ndb-connectstring=host1 host3# ndbd [--initial] --ndb-connectstring=host1 host4# mysqld --ndb-connectstring=host1 Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 25 / 34

config.ini Konfiguration [NDB_MGMD] HostName = 10.10.10.23 NodeID = 1 [NDBD DEFAULT] NoOfReplicas = 2 DataDir = /data/cluster IndexMemory = 20M DataMemory = 100M [NDBD] NodeID = 21 HostName = 10.10.10.21 [NDBD] NodeID = 22 HostName = 10.10.10.22 [mysqld] NodeID = 60 HostName = 10.10.10.20 [mysqld] NodeID = 61 HostName = 10.10.10.24 Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 26 / 34

config.ini Konfiguration [NDB_MGMD] HostName = 10.10.10.23 NodeID = 1 [NDBD DEFAULT] NoOfReplicas = 2 DataDir = /data/cluster IndexMemory = 20M DataMemory = 100M NoOfFragmentLogFiles = 32 # 32 * (16M*4) TimeBetweenLocalCheckpoints = 20 # 20=4MB,21=8MB,22=16MB TimeBetweenGlobalCheckpoints = 2000 #ndbmtd: MaxNoOfExecutionThreads # cores value # 2 2 -> 1LQH # 4 4 -> 2LQH # 8 8 -> 4LQH # Partitionen= 8*LQH # Partition = 46.137.488 Rows [NDBD] NodeID = 21 HostName = 10.10.10.21 [NDBD] NodeID = 22 HostName = 10.10.10.22 [mysqld] NodeID = 60 HostName = 10.10.10.20 Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 27 / 34

Prozesskonfig in my.cnf Konfiguration [mysqld] ndbcluster ndb-cluster-connection-pool = 1 [mysql_cluster] ndb-connectstring = 10.10.10.23 [ndb_mgmd] configdir = /data/cluster Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 28 / 34

Maintenance Rolling Restart Rolling Restarts/Upgrades Cluster muss oft restartet werden :( Service soll HA sein. auch bei Upgrades! Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 29 / 34

Maintenance Rolling Restart Rolling Restarts/Upgrades Cluster muss oft restartet werden :( Service soll HA sein. auch bei Upgrades! Solution: Rolling Rolling Rolling... Rolling Restart hält die Datennodes hochverfügbar. Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 29 / 34

Maintenance Rolling Restart Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 30 / 34

Maintenance Rolling Restart Online Operations ROLLING RESTART ADD INDEX DROP INDEX ADD COLUMN BACKUP ADD/CREATE NODEGROUP REORGANIZE PARTITION SW-UPGRADE Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 31 / 34

Ignored Lost TableSpace (WAN) Replication memcached-api mod ndb... Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 32 / 34

Maintenance Wofür kann man die Lösung gut gebrauchen? Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 33 / 34

Maintenance Ende Gelände Morgen Galera Cluster: (fast) alles besser! Erkan Yanar erkan.yanar@linsenraum.de... linsenraum.de/erkules www.xing.com/profile/erkan Yanar Erkan Yanar (linsenraum.de) MySQL Cluster: HA als StorageEngine 25. April 2012 34 / 34