Überblick Plugin Konzept Partitionieren über Rechnergrenzen hinweg Erkan Yanar [email protected] Blog: linsenraum.de/erkules Xing: www.xing.com/profile/Erkan Yanar 24. November 2011 Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Was tun wenn: Daten übersteigen die I/O-Kapazität eines Rechners Anfragen übersteigen die CPU-Kapazität eines Rechners Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Was tun wenn: Daten übersteigen die I/O-Kapazität eines Rechners Anfragen übersteigen die CPU-Kapazität eines Rechners Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Gängige Lösung: SHARDING Teilen der Daten Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Reflex:Sharding Daten auf mehrere Rechner Disjunkter Datensatz Rechner für einen Teil der Anfragen/Daten verantwortlich Applikation anpassen Keine Joins Keine Transaktionen über Shards Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Neue Lösung: Spider Kentoku Shiba Storage Engine Partitionierung und Federated(X) Nicht Bestandteil von MySQL (und Branches) Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Neue Lösung: Spider Kentoku Shiba Storage Engine Partitionierung und Federated(X) Nicht Bestandteil von MySQL (und Branches) Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept STORAGE ENGINE PLUGIN Partitionierung RANGE LIST BILD VON BEIL HASH KEY CREATE TABLE tbl a( col a int PRIMARY KEY, col b int ) PARTITION BY RANGE( col a ) ( PARTITION p1 VALUES LESS THAN (1000) , PARTITION p2 VALUES LESS THAN (2000) , PARTITION p3 VALUES LESS THAN (MAXVALUE) ); Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept STORAGE ENGINE PLUGIN CREATE TABLE tbl a( col a int, col b int, PRIMARY KEY(col a) ) ENGINE = FEDERATED CONNECTION ’mysql://ich:[email protected]/db/tbl a’; Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Federated(X) Spider Überblick Plugin Konzept Also: Spider Kentoku Shiba Storage Engine Partitionierung und Federated(X) Nicht Bestandteil von MySQL (und Branches) Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Was haben wir nun von Spider? Joins verschiedener Knoten Transparent zur Applikation XA-Transaktionen Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick ABER Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugins?! Spider ist ein MySQL Plugin Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugin Konzept Break it Plugins können zur Laufzeit geladen werden Kein Neukompilieren Kein Neustart Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept PluginTypen PluginTypen (MySQL 5.5/Maria 5.2) Daemon Information Schema Full Text Parser StorageEngine Authentication Replication Audit Services Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept PluginTypen PluginTypen (MySQL 5.5/Maria 5.2) Daemon Information Schema Full Text Parser StorageEngine Authentication Replication Audit Services Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Plugins können auch zur Laufzeit eingebunden werden INSTALL PLUGIN pluginname SONAME ’plugin.so’ UNINSTALL PLUGIN pluginname Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Wo waren wir stehen geblieben? Spider! Kentoku Shiba Storage Engine Partitionierung und Federated(X) Nicht Bestandteil von MySQL (und Branches) Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept mysql> INSTALL PLUGIN spider SONAME ’ha_spider.so’; .. mysql> SELECT Engine,Transactions,XA,savepoints FROM INFORMATION_SCHEMA.ENGINES; +--------------------+--------------+------+------------+ | Engine | Transactions | XA | savepoints | +--------------------+--------------+------+------------+ | SPIDER | YES | YES | NO | | InnoDB | YES | YES | YES | | MRG_MYISAM | NO | NO | NO | | PERFORMANCE_SCHEMA | NO | NO | NO | | CSV | NO | NO | NO | | MEMORY | NO | NO | NO | | MyISAM | NO | NO | NO | +--------------------+--------------+------+------------+ 7 rows in set (0.00 sec) Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Syntax CREATE TABLE tbl_a( col_a int, col_b int, PRIMARY KEY(col_a) ) ENGINE = SPIDER CONNECTION ’host "192.168.178.25", table "tbl_a", user "ich", password "auch"’ ; Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Syntax 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", port "3307"’ ); Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Spider Plugin Konzept Syntax Optionen (Auszug) port database default file host Erkan Yanar : Partitionieren über Rechnergrenzen hinweg password read only mode socket user table Überblick Beispiele Beispiele Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugin Konzept Beispiele Transparenter Zugriff auf nicht lokale Tabellen Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Transparenter Zugriff auf nicht lokale Tabellen Engine Condition Pushdown Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Transparenter Zugriff auf nicht lokale Tabellen Engine Condition Pushdown Engine Condition Pushdown Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Beispiele Transparentes Sharding Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Beispiele Transparentes Sharding Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugin Konzept Beispiele transparentes Sharding HA Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Beispiele Parallele Replikation Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugin Konzept Beispiele Parallele Replikation MySQL Repl. Single Threaded Serialisiert Spider parallelisiert Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Synchrone Replikation MySQL Replikation selbst ist a/semi-synchron. Ein Trigger ist synchron. Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Kaskadierte Partitionierung MySQL kann Partition/Subpartition LIST,RANGE:[HASH,KEY] → LIST,RANGE:[HASH,KEY] Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Idee DWH read only packed MyISAM/Aria oder PBXT Via Spider partitionieren :) Goodie? QCache Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele udf Spider bringt eigene Funktionen mit Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele mysql> select * from mysql.func; +------------------------------+-----+--------------+-----------+ | name | ret | dl | type | +------------------------------+-----+--------------+-----------+ | spider_direct_sql | 2 | ha_spider.so | function | | spider_bg_direct_sql | 2 | ha_spider.so | aggregate | | spider_ping_table | 2 | ha_spider.so | function | | spider_copy_tables | 2 | ha_spider.so | function | | spider_flush_table_mon_cache | 2 | ha_spider.so | function | +------------------------------+-----+--------------+-----------+ Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele mysql> do(spider_direct_sql (’CREATE TABLE direct (id int PRIMARY KEY)’, ’’, ’database "spider_slave", host "10.10.10.4", user "user"’) ); Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Beispiele HA Keine Doku Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider Überblick Plugin Konzept Beispiele VP Partitionieren von Spalten ONLINE ALTER TABLE ... Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Plugin Konzept Beispiele Conclusion Transparentes Sharding XA-Transaction Condition Push Down Limits der Partitionierung Not widly testet Not included uvm. Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Spider Überblick Beispiele ENDE Erkan Yanar : Partitionieren über Rechnergrenzen hinweg Plugin Konzept Spider