Škálování, optimalizace a zálohování databáze MySQL Jakub Vrána
Rozsah databázové aplikace Část serveru Jeden server Více serverů
Data na jednom serveru
Rozdělení dat
Rozdělení dat Data spolu nesmí nijak souviset Ne vždy lze zajistit Noví uživatelé bývají aktivnější 20 % uživatelů vytváří 80 % provozu Je potřeba zajistit zálohování a redundanci
Replikace slave master slave kopie zápis čtení
Replikace Automatická asynchronní kopie dat Hlídat funkčnost Dotazy  INSERT INTO   db . table  se nereplikují Zápis na  slave  s konfliktem primárního klíče Na  slave  zapisuje pouze jedno vlákno SHOW MASTER STATUS MASTER_POS_WAIT ()
Master-master replikace master /slave master /slave kopie zápis čtení
Master-master replikace Čtení i zápis lze provádět kdekoliv Slave  nereplikuje jím vytvořená data Prakticky možné od MySQL 5 auto_increment_increment auto_increment_offset
MySQL Cluster NDB NDB NDB zápis čtení
MySQL Cluster Čeká se na zápis dat na všech uzlech Nový uzel se nedá přidat on-line Úložiště  NDB Není k dispozici pro Windows Data jen v paměti (v 5.1 alespoň indexovaná) Není podporován typ  varchar  (před 5.1) Transakce ano, cizí klíče ne
Zálohování On-line záloha Replikace ( mysqlbinlog ) Off-line záloha mysqldump mysqlhotcopy  (MyISAM) InnoDB Hot Backup (390 € / rok) Zastavit server a zkopírovat soubory
Konfigurace serveru Úložiště MyISAM key_buffer_size Úložiště InnoDB innodb_buffer_pool_size innodb_flush_logs_at_trx_commit Query cache query_cache_size
Optimalizace aplikace Nejdůležitější jsou indexy –  EXPLAIN Přizpůsobení struktury databáze Hierarchické struktury Jazykové verze Dopočítávané sloupce – triggery Spojování tabulek místo více dotazů Vázání proměnných obvykle zdržuje S persistentním připojením jsou problémy
Kontakt Školení Jakuba Vrány 1.12.2008:  Návrh a používání MySQL databáze 9.12.2008:  Výkonnost webových aplikací PHP triky:  http://php.vrana.cz E-mail:  [email_address]

Škálování, optimalizaci a zálohování databáze MySQL

  • 1.
    Škálování, optimalizace azálohování databáze MySQL Jakub Vrána
  • 2.
    Rozsah databázové aplikaceČást serveru Jeden server Více serverů
  • 3.
  • 4.
  • 5.
    Rozdělení dat Dataspolu nesmí nijak souviset Ne vždy lze zajistit Noví uživatelé bývají aktivnější 20 % uživatelů vytváří 80 % provozu Je potřeba zajistit zálohování a redundanci
  • 6.
    Replikace slave masterslave kopie zápis čtení
  • 7.
    Replikace Automatická asynchronníkopie dat Hlídat funkčnost Dotazy INSERT INTO db . table se nereplikují Zápis na slave s konfliktem primárního klíče Na slave zapisuje pouze jedno vlákno SHOW MASTER STATUS MASTER_POS_WAIT ()
  • 8.
    Master-master replikace master/slave master /slave kopie zápis čtení
  • 9.
    Master-master replikace Čteníi zápis lze provádět kdekoliv Slave nereplikuje jím vytvořená data Prakticky možné od MySQL 5 auto_increment_increment auto_increment_offset
  • 10.
    MySQL Cluster NDBNDB NDB zápis čtení
  • 11.
    MySQL Cluster Čekáse na zápis dat na všech uzlech Nový uzel se nedá přidat on-line Úložiště NDB Není k dispozici pro Windows Data jen v paměti (v 5.1 alespoň indexovaná) Není podporován typ varchar (před 5.1) Transakce ano, cizí klíče ne
  • 12.
    Zálohování On-line zálohaReplikace ( mysqlbinlog ) Off-line záloha mysqldump mysqlhotcopy (MyISAM) InnoDB Hot Backup (390 € / rok) Zastavit server a zkopírovat soubory
  • 13.
    Konfigurace serveru ÚložištěMyISAM key_buffer_size Úložiště InnoDB innodb_buffer_pool_size innodb_flush_logs_at_trx_commit Query cache query_cache_size
  • 14.
    Optimalizace aplikace Nejdůležitějšíjsou indexy – EXPLAIN Přizpůsobení struktury databáze Hierarchické struktury Jazykové verze Dopočítávané sloupce – triggery Spojování tabulek místo více dotazů Vázání proměnných obvykle zdržuje S persistentním připojením jsou problémy
  • 15.
    Kontakt Školení JakubaVrány 1.12.2008: Návrh a používání MySQL databáze 9.12.2008: Výkonnost webových aplikací PHP triky: http://php.vrana.cz E-mail: [email_address]