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

2,848 views

Published on

Autor: Jakub Vrána

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,848
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×