Легковесная 
реляционная СУБД 
MySQL 
Павел Пушкарев
Архитектура MySQL 
Архитектура MySQL 
представлена справа ;-) 
Отличительная 
особенность — 
различные хранилища 
данных 
3 
MySQL 
клиенты 
Пул соединений 
Парсер и оптимизатор 
MyISAM InnoDB Memory
О чем пойдет речь 
• Хранилище MyISAM 
• Хранилище InnoDB 
• Резервные копии 
4
Хранилище MyISAM 
Простые файлики
Таблички MyISAM 
CREATE TABLE foo (a INT KEY) ENGINE=MyISAM; 
SHOW VARIABLES LIKE 'key_buffer%'; 
6 
структура: *.frm 
данные: *.MYD 
индексы: *.MYI 
диск 
озу 
буфер ключей 
файловый кэш 
Таблица 
MyISAM
Работа с MyISAM 
MyISAM: 
• Блокируется на каждую 
операцию 
• Возможны 
одновременные чтения 
• Возможна запись в 
конец таблицы 
7
Работа с MyISAM 
MyISAM: 
• Блокируется на каждую 
операцию 
• Возможны 
одновременные чтения 
• Возможна запись в 
конец таблицы 
8 
Потоки 
1 2 ... N W 
время
Хранилище InnoDB 
Транзакции и кислота
Таблички InnoDB 
CREATE TABLE foo (a INT KEY) ENGINE=InnoDB; 
SHOW VARIABLES LIKE 'innodb_buffer%'; 
SHOW VARIABLES LIKE 'innodb_log_buffer%'; 
10 
структура: *.frm 
tablespace: ibdata 
tablespace: *.ibd 
журнал: ib_logfile 
диск 
озу 
буфер InnoDB 
буфер журнала 
Таблица 
InnoDB
Работа с InnoDB 
InnoDB: 
• Полностью 
поддерживает ACID 
• Использует основной 
ключ как кластерный 
индекс 
• Внешние ключи и 
ссылочная целостность 
• MVCC 
11
Работа с InnoDB 
InnoDB: 
• Полностью 
поддерживает ACID 
• Использует основной 
ключ как кластерный 
индекс 
• Внешние ключи и 
ссылочная целостность 
• MVCC 
12 
ОЗУ 
InnoDB buffer pool 
Log buffer pool 
Tablespace 
Диск 
Undo 
Doublewrite 
Transaction log (Redo)
Работа с InnoDB 
InnoDB: 
• Полностью 
поддерживает ACID 
• Использует основной 
ключ как кластерный 
индекс 
• Внешние ключи и 
ссылочная целостность 
• MVCC 
13 
ОЗУ 
InnoDB buffer pool 
Log buffer pool 
Tablespace 
Диск 
Undo 
Transaction log (Redo) 
1 
Doublewrite 
4 
3 
2
Резервные копии 
И восстановление на момент времени
Грустная и скучная теория 
Бэкапы бывают двух видов: 
• Текстовые 
- mysqldump 
• Бинарные 
- mysqlhotcopy 
- xtrabackup 
15 
SELECT * 
cp /var/lib/mysql/*
Журнал изменений 
Binary log: 
• Пишется на все 
изменения в базе 
• Бывает row, 
statement и mixed 
• mysqlbinlog 
помогает читать 
16
Пример адского бэкапа 
innobackupex /var/lib/mysql /var/backups 
innobackupex --apply-log /var/backups/{dirname} 
chown -R mysql /var/backups/{dirname} 
cp -a /var/backups/{dirname} /var/lib/mysql 
mysqlbinlog /var/log/mysql-bin.*  
--stop-position={position} | mysql 
17 
Backup 
Restore
Спасибо за внимание!

Павел Пушкарев - Базы данных: легковесная реляционная высокопроизводительная СУБД MySQL

  • 2.
  • 3.
    Архитектура MySQL АрхитектураMySQL представлена справа ;-) Отличительная особенность — различные хранилища данных 3 MySQL клиенты Пул соединений Парсер и оптимизатор MyISAM InnoDB Memory
  • 4.
    О чем пойдетречь • Хранилище MyISAM • Хранилище InnoDB • Резервные копии 4
  • 5.
  • 6.
    Таблички MyISAM CREATETABLE foo (a INT KEY) ENGINE=MyISAM; SHOW VARIABLES LIKE 'key_buffer%'; 6 структура: *.frm данные: *.MYD индексы: *.MYI диск озу буфер ключей файловый кэш Таблица MyISAM
  • 7.
    Работа с MyISAM MyISAM: • Блокируется на каждую операцию • Возможны одновременные чтения • Возможна запись в конец таблицы 7
  • 8.
    Работа с MyISAM MyISAM: • Блокируется на каждую операцию • Возможны одновременные чтения • Возможна запись в конец таблицы 8 Потоки 1 2 ... N W время
  • 9.
  • 10.
    Таблички InnoDB CREATETABLE foo (a INT KEY) ENGINE=InnoDB; SHOW VARIABLES LIKE 'innodb_buffer%'; SHOW VARIABLES LIKE 'innodb_log_buffer%'; 10 структура: *.frm tablespace: ibdata tablespace: *.ibd журнал: ib_logfile диск озу буфер InnoDB буфер журнала Таблица InnoDB
  • 11.
    Работа с InnoDB InnoDB: • Полностью поддерживает ACID • Использует основной ключ как кластерный индекс • Внешние ключи и ссылочная целостность • MVCC 11
  • 12.
    Работа с InnoDB InnoDB: • Полностью поддерживает ACID • Использует основной ключ как кластерный индекс • Внешние ключи и ссылочная целостность • MVCC 12 ОЗУ InnoDB buffer pool Log buffer pool Tablespace Диск Undo Doublewrite Transaction log (Redo)
  • 13.
    Работа с InnoDB InnoDB: • Полностью поддерживает ACID • Использует основной ключ как кластерный индекс • Внешние ключи и ссылочная целостность • MVCC 13 ОЗУ InnoDB buffer pool Log buffer pool Tablespace Диск Undo Transaction log (Redo) 1 Doublewrite 4 3 2
  • 14.
    Резервные копии Ивосстановление на момент времени
  • 15.
    Грустная и скучнаятеория Бэкапы бывают двух видов: • Текстовые - mysqldump • Бинарные - mysqlhotcopy - xtrabackup 15 SELECT * cp /var/lib/mysql/*
  • 16.
    Журнал изменений Binarylog: • Пишется на все изменения в базе • Бывает row, statement и mixed • mysqlbinlog помогает читать 16
  • 17.
    Пример адского бэкапа innobackupex /var/lib/mysql /var/backups innobackupex --apply-log /var/backups/{dirname} chown -R mysql /var/backups/{dirname} cp -a /var/backups/{dirname} /var/lib/mysql mysqlbinlog /var/log/mysql-bin.* --stop-position={position} | mysql 17 Backup Restore
  • 18.