Павел Пушкарев - Базы данных: легковесная реляционная...

Post on 22-Jun-2015

88 views 2 download

Transcript of Павел Пушкарев - Базы данных: легковесная реляционная...

Легковесная реляционная СУБД 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

Спасибо за внимание!