Partitionieren über Rechnergrenzen hinweg

Werbung
Ü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
Herunterladen