Upload
yandex
View
88
Download
2
Embed Size (px)
Citation preview
Легковесная реляционная СУБД MySQL
Павел Пушкарев
Архитектура MySQL
Архитектура MySQL представлена справа ;-)
Отличительная особенность — различные хранилища данных
3
MyISAM InnoDB Memory
MySQL
Парсер и оптимизатор
Пул соединений
клиенты
О чем пойдет речь
• Хранилище 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
Транзакции и кислота
Таблички InnoDBCREATE TABLE foo (a INT KEY) ENGINE=InnoDB; SHOW VARIABLES LIKE 'innodb_buffer%'; SHOW VARIABLES LIKE 'innodb_log_buffer%';
10
tablespace: ibdata
tablespace: *.ibd
журнал: ib_logfile
диск
озубуфер InnoDB
буфер журнала
структура: *.frm
Таблица InnoDB
Работа с InnoDB
InnoDB: • Полностью
поддерживает ACID • Использует основной
ключ как кластерный индекс
• Внешние ключи и ссылочная целостность
• MVCC
11
Работа с InnoDB
InnoDB: • Полностью
поддерживает ACID • Использует основной
ключ как кластерный индекс
• Внешние ключи и ссылочная целостность
• MVCC
12
Tablespace
Transaction log (Redo)
Undo
InnoDB buffer pool
Log buffer pool
ОЗУ
Диск
Doublewrite
Работа с InnoDB
InnoDB: • Полностью
поддерживает ACID • Использует основной
ключ как кластерный индекс
• Внешние ключи и ссылочная целостность
• MVCC
13
Tablespace
Transaction log (Redo)
Undo
InnoDB buffer pool
Log buffer pool
ОЗУ
Диск
1
Doublewrite
2
3
4
Резервные копии
И восстановление на момент времени
Бэкапы бывают двух видов: • Текстовые
- 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
Спасибо за внимание!