Uberblick Plugin Konzept Spider
Partitionieren uber Rechnergrenzen hinweg
Erkan [email protected]: linsenraum.de/erkules
Xing: www.xing.com/profile/Erkan Yanar
24. November 2011
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Was tun wenn:
Daten ubersteigen die I/O-Kapazitat eines Rechners
Anfragen ubersteigen die CPU-Kapazitat eines Rechners
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Was tun wenn:
Daten ubersteigen die I/O-Kapazitat eines Rechners
Anfragen ubersteigen die CPU-Kapazitat eines Rechners
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Gangige Losung:
SHARDING Teilen der Daten
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Reflex:Sharding
Daten auf mehrere Rechner
Disjunkter Datensatz
Rechner fur einen Teil derAnfragen/Daten verantwortlich
Applikation anpassen
Keine Joins
Keine Transaktionen uberShards
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Neue Losung: Spider
Kentoku Shiba
Storage Engine
Partitionierung und Federated(X)
Nicht Bestandteil von MySQL (und Branches)
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Neue Losung: Spider
Kentoku Shiba
Storage Engine
Partitionierung und Federated(X)
Nicht Bestandteil von MySQL (und Branches)
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
STORAGE ENGINE PLUGIN
Partitionierung
RANGE
LIST
HASH
KEY
BILD VON BEIL
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
STORAGE ENGINE PLUGIN
CREATE TABLE tbl a(col a int,col b int,PRIMARY KEY(col a))ENGINE = FEDERATEDCONNECTION
’mysql://ich:[email protected]/db/tbl a’;
Federated(X)
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Also: Spider
Kentoku Shiba
Storage Engine
Partitionierung und Federated(X)
Nicht Bestandteil von MySQL (und Branches)
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Was haben wir nun von Spider?
Joins verschiedener Knoten
Transparent zur Applikation
XA-Transaktionen
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
ABER
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Plugins?!
Spider ist ein MySQL Plugin
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Break it
Plugins konnen zurLaufzeit geladen werden
Kein Neukompilieren
Kein Neustart
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
PluginTypen
PluginTypen (MySQL5.5/Maria 5.2)
Daemon
Information Schema
Full Text Parser
StorageEngine
Authentication
Replication
Audit
Services
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
PluginTypen
PluginTypen (MySQL5.5/Maria 5.2)
Daemon
Information Schema
Full Text Parser
StorageEngine
Authentication
Replication
Audit
Services
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Plugins konnen auch zur Laufzeit eingebunden werden
INSTALL PLUGIN pluginname SONAME ’plugin.so’
UNINSTALL PLUGIN pluginname
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Wo waren wir stehen geblieben? Spider!
Kentoku Shiba
Storage Engine
Partitionierung und Federated(X)
Nicht Bestandteil von MySQL (und Branches)
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Syntax
Optionen (Auszug)
port
database
default file
host
password
read only mode
socket
user
table
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Beispiele
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Transparenter Zugriff auf nicht lokale Tabellen
Engine Condition Pushdown
Engine Condition Pushdown
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Transparenter Zugriff auf nicht lokale Tabellen
Engine Condition Pushdown
Engine Condition Pushdown
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Transparenter Zugriff auf nicht lokale Tabellen
Engine Condition Pushdown
Engine Condition Pushdown
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Transparentes Sharding
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Transparentes Sharding
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
transparentes Sharding HA
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Parallele Replikation
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Parallele Replikation
MySQL Repl.
Single Threaded
Serialisiert
Spider parallelisiert
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Synchrone Replikation
MySQL Replikation selbst ist a/semi-synchron.Ein Trigger ist synchron.
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Kaskadierte Partitionierung
MySQL kann Partition/SubpartitionLIST,RANGE:[HASH,KEY] → LIST,RANGE:[HASH,KEY]
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Idee DWH
read only
packed MyISAM/Aria oder PBXT
Via Spider partitionieren :)
Goodie?
QCache
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
udf
Spider bringt eigene Funktionen mit
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
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 uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
HA
Keine Doku
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
VP
Partitionieren von Spalten
ONLINE ALTER TABLE
. . .
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
Conclusion
Transparentes Sharding
XA-Transaction
Condition Push Down
Limits der Partitionierung
Not widly testet
Not included
uvm.
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg
Uberblick Plugin Konzept Spider
Beispiele
ENDE
Erkan Yanar : Partitionieren uber Rechnergrenzen hinweg