Die spider speicher-engine-2015-02-25
Transcript of 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
© 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
© MariaDB Corpora,on Ab
Sharding
© 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
© MariaDB Corpora,on Ab
Replika,on oder Sharding?
5
Master Slave
Slave
Slave
Schreiben
© 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
© MariaDB Corpora,on Ab
MariaDB
P3
P2
Par,,onierung oder Sharding?
7
P1 Schreiben
Schreiben
Schreiben
Lesen
Lesen
Lesen
© MariaDB Corpora,on Ab
MariaDB
P3
P2
Par,,onierung oder Sharding?
8
P1 Schreiben
Schreiben
Schreiben
Lesen
Lesen
Lesen
Partition pro Disk
© 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
© 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
© MariaDB Corpora,on Ab
Sharding – Wie?
11
Applikation
Proxy
DB-Server
Shard
© MariaDB Corpora,on Ab
Sharding – Wie?
12
Applikation
Proxy
DB-Server
Shard
© MariaDB Corpora,on Ab
Sharding – Wie?
13
Applikation
Proxy
DB-Server Shard
© MariaDB Corpora,on Ab
Spider Storage Engine
© 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 ...
© 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
© 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
© 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
© 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
© 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
© 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
© 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 |!
© 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)!
© 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%’;!
© 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
© 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;!
© 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"'!
);!
© 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;!
© 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)!
© 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 |!+--------+--------+!
© 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)!
© 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
© 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
© 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
© 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
© 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
© 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
● 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
© 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."