Die spider speicher-engine-2015-02-25

39
© MariaDB Corpora,on Ab Die Spider SpeicherEngine Skalierung über mehrere MariaDB oder MySQLInstanzen Ralf Gebhardt, Sales Engineer MariaDB Corpora,on Ab * * 25.02.15 1

Transcript of Die spider speicher-engine-2015-02-25

Page 1: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Die  Spider  Speicher-­‐Engine  Skalierung  über  mehrere  MariaDB-­‐  oder  MySQL-­‐Instanzen  

   

Ralf  Gebhardt,  Sales  Engineer  MariaDB  Corpora,on  Ab  

   

*   *  25.02.15 1

Page 2: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

MariaDB  Corpora,on  

•  Gegründet  vom  MySQL  Kernteam,  wie  Michael  “Monty”  Widenius  und  David  Axmark.  

•  Oktober  2014  wurde  die  Firma  von    SkySQL  in  MariaDB  Corpora,on  umbenannt.  

•  Entwicklungs-­‐Unterstützung  der  MariaDB  Founda,on  •  Innova,ve  Produkte  werten  MariaDB  auf.  •  Enterprise  Services  wie  24/7  Support  für  MariaDB  und  MySQL.  •  Über  400  Jahre  an  MySQL  Erfahrung  bei  MariaDB.  •  Open-­‐Source-­‐  und  Cloud-­‐Management-­‐Team  mit  Hauptsitz  in  Espoo,  Finland.  

2

Page 3: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  

Page 4: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  –  Wann?  

• Große  Datenmengen  •  Engpässe  bezüglich  I/O-­‐  und  CPU-­‐Last  einer  

Server-­‐Instanz  •  Lange  Antwortzeiten  von  Abfragen  •  Auswirkungen  auf  Indizierung,  Sta,s,ken,  

Tabellen-­‐Verwaltung,  ...  

• Wenn  Replika,on  nicht  die  Antwort  ist  • Wenn  Par,,onierung  innerhalb  einer  Instanz  nicht  ausreicht  

4

Page 5: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Replika,on  oder  Sharding?  

5

Master Slave

Slave

Slave

Schreiben

Page 6: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Replika,on  oder  Sharding?  

• Master/Slave-­‐Replika,on  •  Lese-­‐Skalierung  bei  großer  Anzahl  Connec,ons  

und  Abfragen  •  Keine  Lösung  bei  hohen  Antwortzeiten  

einzelner  Abfragen  durch  große  Datenmengen  •  Keine  Skalierung  für  Schreib-­‐Last  

6

Page 7: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

MariaDB

P3

P2

Par,,onierung  oder  Sharding?  

7

P1 Schreiben

Schreiben

Schreiben

Lesen

Lesen

Lesen

Page 8: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

MariaDB

P3

P2

Par,,onierung  oder  Sharding?  

8

P1 Schreiben

Schreiben

Schreiben

Lesen

Lesen

Lesen

Partition pro Disk

Page 9: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Par,,onierung  oder  Sharding?  

• Par,,onierung  ermöglicht  •  Die  Reduzierung  des  Datenbestands  für  gängige  

Abfragen,  wenn  die  Par,,onierungsregel  geeignet  gewählt  werden  kann  

•  Trennung  zwischen  Archivdaten  und  „Working-­‐Set“  

•  Die  Verteilung  von  I/O-­‐Last  auf  mehrere  Disks  • Ressourcen  einer  Instanz  müssen  geteilt  werden  (CPU,  RAM,  Kern-­‐Prozesse,  ...)  

9

Page 10: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  –  Wie?  

• Sharding  ist  Datenbankpar,,onierung  über  mehrere  Serverinstanzen  

• Implemen,erung  von  Sharding  über  •  Anwendungslogik  •  Konnektoren  •  Proxies  (MySQL  Proxy,  MySQL  Fabric,  

MariaDB  MaxScale)  •  Spider  Storage  Engine  •  ...  

10

Page 11: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  –  Wie?  

11

Applikation

Proxy

DB-Server

Shard

Page 12: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  –  Wie?  

12

Applikation

Proxy

DB-Server

Shard

Page 13: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  –  Wie?  

13

Applikation

Proxy

DB-Server Shard

Page 14: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  

Page 15: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Storage  Engine  Architektur  

15

OPERATING SYSTEM / FILE SYSTEM

Applikation KONNEKTOREN C

INTERNALS REPLICATION PLUG-INS

STORAGE ENGINE API

XtraDB InnoDB Connect Cassandra TokuDB Spider ...

Para

llel S

lave

GTI

D

Mul

ti-So

urce

Connection Pool

SQL Interface

Parser

Optimiser

Cache/Buffer BinL

og A

PI

Performance NoSQL / Interoperabioity Standard

MariaDB

Authentication

Auditing

HandlerSocket

JDBC ODBC ...

Page 16: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Die  Spider  Storage  Engine  

•  Entwickelt  von  Kentoku  Shiba  •  Storage  Engine  par,,oniert  große  Tabellen  über  mehrere  Datenbankserver-­‐Instanzen.  

•  Basiert  auf  Par,,onierung  mit  integriertem  Sharding  •  Virtuelle  Sicht  auf  Tabellen  verschiedener  Instanzen  

•  Unterstützt  XA  Transak,onen  •  Transak,onale  Storage  Engine  •  Ermöglicht  Scale-­‐Out  in  Kombina,on  mit  HA  

16

Applikation

Kunde

A-H I-P Q-Z

Spider

Kunde

A-H

Shard 1

Kunde

I-P

Shard 2

Kunde

Q-Z

Shard 3

Page 17: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Grundidee  der  Spider  Engine    

• Applika,on  mit  Verbindung  zum  Spider  Proxy-­‐Knoten  

• CREATE  TABLE  spider  (...  )    ENGINE=SPIDER  ...  

•  „Spider-­‐Proxy“  hält  keine  Daten  

• CREATE  TABLE  spider  (...  )  ENGINE=INNODB  ...  

•  Backend  hält  Daten  17

Applikation

Spider Proxy-Knoten

Backend-Knoten

dfdf

Page 18: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Backend 1

Spider  als  „Federa,on“  Ohne  und  mit  HA  

18

Applikation

Spider

Tabelle 1

Applikation

Tabelle1

Backend

Tabelle 1

Spider

Tabelle 1

Tabelle 1

Backend 2

Tabelle 1

Page 19: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  mit  Spider  

19

Backend 2

Applikation

Spider

Backend 3

T1 P1 P2 P3

T1 P2 T1 P3

Backend 1

T1 P1

XA 2 PC

Page 20: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Sharding  mit  Spider  und  HA  

20

Backend 2

Applikation

Spider

Backend 3

T1 P1 P2 P3

T1 P2 T1 P3

Backend 1

T1 P1

XA 2 PC

P2 P3

P1

Page 21: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Installa,on  

• Ab  Version  10.0.4  in  MariaDB  enthalten  •  Spider  3.0  •  Spider  3.2.11  in  MariaDB  10.0.14  

• Spider  mit  MySQL  Server    •  hlp://spiderformysql.com/download_spider.html  •  INSTALL  PLUGIN  spider  SONAME  'ha_spider.so';  

 

21

Page 22: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Installa,on  

• Zur  Installa,on  

• Spider  sollte  als  ak,ve  Storage  Engine  angezeigt  werden  

22

mysql -uroot -p < /usr/share/mysql/install_spider.sql!

SELECT engine, support, transactions, xa FROM information_schema.engines;!+--------------------+---------+--------------+------+!| engine | support | transactions | xa |!+--------------------+---------+--------------+------+!| SPIDER | YES | YES | YES |!| CSV | YES | NO | NO |!

Page 23: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Installa,on  

• Spider  erstellt  Tabellen  in  Schema  „mysql“  

23

MariaDB> show tables like 'spider%';!+---------------------------+!| Tables_in_mysql (spider%) |!+---------------------------+!| spider_link_failed_log |!| spider_link_mon_servers |!| spider_tables |!| spider_xa |!| spider_xa_failed_log |!| spider_xa_member |!+---------------------------+!6 rows in set (0.00 sec)!

Page 24: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Installa,on  

• 93  Spider  System-­‐Variablen  werden  hinzugefügt  

• 4  Spider  Status-­‐Werte  werden  hinzugefügt  

• Weitere  Spider-­‐Variablen  für  Tabellen  stehen  über  CREATE  TABLE  zur  Verfügung  

•  In  MariaDB  über  COMMENT  •  In  MySQL  über  CONNECTION  

24

MariaDB> show global variables like 'spider%’;!

MariaDB> show global status like 'spider%’;!

Page 25: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Installa,on  

• Spider  UDFs  werden  hinzugefügt  •  SPIDER_DIRECT_SQL  

•  Ausführen  von  SQL  direkt  auf  Backend-­‐Server  •  SPIDER_BG_DIRECT_SQL  

•  Ausführen  von  SQL  direkt  auf  Backend-­‐Server  •  SPIDER_COPY_TABLES  •  SPIDER_FLUSH_TABLE_MON_CACHE  

•  Zurücksetzen  von  Spider-­‐Monitoring-­‐Informa,on  

25

Page 26: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  ohne  Sharding  

•  Tabellendefini,on  Spider  Proxy-­‐Knoten  

•  Tabellendefini,on  Backend-­‐Knoten  

 

26

CREATE TABLE spiderfederation(id INT NOT NULL, code VARCHAR(10), PRIMARY KEY(id))!ENGINE=SPIDER !COMMENT 'host "192.168.56.21", user "backend", password "backend", port "3306"';!

CREATE TABLE spiderfederation(id INT NOT NULL, code VARCHAR(10), PRIMARY KEY(id))!ENGINE=INNODB;!

Page 27: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  mit  Sharding  

•  Tabellendefini,on  Spider  Proxy-­‐Knoten    

27

CREATE TABLE sharding(id INT NOT NULL, code VARCHAR(10), PRIMARY KEY(id))!ENGINE=SPIDER COMMENT='user "backend", password "backend", port "3306", table "sharding"'!PARTITION BY RANGE(id)!(!

!PARTITION p1 VALUES LESS THAN (100000)!!COMMENT 'host "192.168.56.21"',!!PARTITION p2 VALUES LESS THAN (200000) !!COMMENT 'host "192.168.56.22"',!!PARTITION p3 VALUES LESS THAN MAXVALUE!!COMMENT 'host "192.168.56.23"'!

);!

Page 28: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  mit  Sharding  

•  Tabellendefini,on  der  Backend-­‐Knoten  

 

28

CREATE TABLE sharding( id INT NOT NULL, code VARCHAR(10), PRIMARY KEY(id) )ENGINE=INNODB;!

Page 29: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  mit  Sharding  

•  Insert  Proxy  

•  Shard  1  

 

29

MariaDB> insert into sharding values (90002,"shard1"),(100100,"shard2"),(200050,"shard3");!Query OK, 3 rows affected (0.04 sec)!Records: 3 Duplicates: 0 Warnings: 0!

MariaDB> select * from sharding;!+-------+--------+!| id | code |!+-------+--------+!| 90001 | shard1 |!| 90002 | shard1 |!+-------+--------+!2 rows in set (0.00 sec)!

Page 30: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  mit  Sharding  

•  Shard  2  

 

•  Shard  3  

 

30

MariaDB> select * from sharding;!+--------+--------+!| id | code |!+--------+--------+!| 100050 | shard2 |!| 100100 | shard2 |!+--------+--------+!2 rows in set (0.00 sec)!

MariaDB> select * from sharding;!+--------+--------+!| id | code |!+--------+--------+!| 200000 | shard3 |!| 200050 | shard3 |!+--------+--------+!

Page 31: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Storage  Engine  Beispiel  mit  Sharding  

•  ACHTUNG  –  Kein  automa,sches  Rollback!  

 

 

31

MariaDB> begin;!Query OK, 0 rows affected (0.00 sec)!!MariaDB> insert into sharding values (90003,"shard1");!Query OK, 1 row affected (0.01 sec)!!MariaDB> insert into sharding values (100101,"shard2");!Query OK, 1 row affected (0.00 sec)!!MariaDB> insert into sharding values (200051,"shard3");!ERROR 1429 (HY000): Unable to connect to foreign data source: 192.168.56.23!MariaDB> commit;!Query OK, 0 rows affected (0.01 sec)!

Page 32: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Backup  und  Repor,ng  

32

Backend 2

Applikation

Spider

Backend 3

T1 P1 P2 P3

T1 P2 T1 P3

Backend 1

T1 P1

Slave

T1 P1 P2 P3

Replikation

•  Replika,on  von  Spider  Proxy  zu  Slave  mit  z.B.  InnoDB  

•  Spider  Proxy  Binary  Log  enthält  die  Transak,onen  

•  Auf  Backend-­‐Tabellen  darf  nicht  direkt  geschrieben  werden  

Page 33: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Backup  und  Repor,ng  

33

Backend 2

Applikation

Spider

Backend 3

T1

T2 T3

Backend 1

T1

Slave

•  Replika,on  von  Backends  mit  Mul,-­‐Source  Replika,on  

•  Bei  Federa,on-­‐Setup,  wenn  auf  Backend  direkt  geschrieben  wird  

Replikation

T2 T3

T1 T2 T2

Applikation

Page 34: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Funk,onen  

• Komplele  Liste  unter  hlps://mariadb.com/kb/en/mariadb/documenta,on/storage-­‐engines/spider/spider-­‐feature-­‐matrix/  

• Clustering  und  Hochverfügbarkeit  •  Commit  und  Rollback  auf  mehreren  Backends  •  Mul,plexing  zu  Repliken  mit  2PC  •  Split-­‐Brain-­‐Resolu,on  basierend  auf  Quorum  

34

Page 35: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Spider  Funk,onen  

• Performance  •  Index  Condi,on  Pushdown  (ab  MariaDB  10  RC)  •  Engine  Condi,on  Pushdown  für  Federated  •  Engine  Condi,on  Pushdown  für  Shards                (MariaDB  10  RC)    •  Batched  Key  Access  •  Support  für  Handler  Socket  •  Map  Reduced  für  ORDER  BY  ...  LIMIT  

35

Page 36: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Zu  Beachten  

• DDL  Statements  werden  nicht  synchronisiert  • Effek,vität  von  Sharding  entspricht  der  gewählten  Par,,onierung  

•  Sub-­‐Par,,onen  für  Backends  möglich  

• Pro-­‐Instanz  Funk,onalität  beachten  •  Query  Cache  sollte  deak,viert  werden  •  Log-­‐Files  pro  Instanz  •  Audit-­‐Plugin  –  u.U.  zentrales  Syslog  nutzen  •  Benutzer-­‐Verwaltung  -­‐  Authen,ca,on  Plugin?  

• Spider  Storage  Engine  ist  noch  GAMMA  36

Page 37: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Für  mehr  Informa,on  ...  

• hlps://mariadb.com/kb/en/mariadb/documenta,on/storage-­‐engines/spider/  

• hlps://mariadb.org  • hlp://spiderformysql.com/    • [email protected]    

37

Page 38: Die spider speicher-engine-2015-02-25

●  CeBIT: Open-Source-Park, Halle 6, Stand 412Hannover, 16. – 20. März ○  Spider-Vortrag: 17. März

Halle 6, Open Source Forum ○  MariaDB und POWER8 Vortrag: 17. März

Halle 2, IBM-Stand – Bitte anmelden: http://bit.ly/1BbTLx1

●  MariaDB Roadshow mit IBM: ○  Düsseldorf, 16. April ○  München, 20. April ○  Wien: 22. April ○  Zürich: 29. April

https://mariadb.com/events/roadshows

Veranstaltungshinweise

Page 39: Die spider speicher-engine-2015-02-25

©  MariaDB  Corpora,on  Ab  

Vielen  Dank!  

mariadb.com  

"MySQL is a registered trademark of Oracle and/or its affiliates. Other names may be trademarks of their respective owners SkySQL is not affiliated with MySQL."