18

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

  • Upload
    yandex

  • View
    88

  • Download
    2

Embed Size (px)

Citation preview

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

Легковесная реляционная СУБД MySQL

Павел Пушкарев

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

Архитектура MySQL

Архитектура MySQL представлена справа ;-)

Отличительная особенность — различные хранилища данных

3

MyISAM InnoDB Memory

MySQL

Парсер и оптимизатор

Пул соединений

клиенты

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

О чем пойдет речь

• Хранилище MyISAM • Хранилище InnoDB • Резервные копии

4

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

Хранилище MyISAM

Простые файлики

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

Таблички MyISAM

CREATE TABLE foo (a INT KEY) ENGINE=MyISAM; SHOW VARIABLES LIKE 'key_buffer%';

6

структура: *.frm

данные: *.MYD

индексы: *.MYI

диск

озубуфер ключей

файловый кэш

Таблица MyISAM

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

Работа с MyISAM

MyISAM: • Блокируется на каждую

операцию • Возможны

одновременные чтения • Возможна запись в

конец таблицы

7

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

Работа с MyISAM

MyISAM: • Блокируется на каждую

операцию • Возможны

одновременные чтения • Возможна запись в

конец таблицы

8

Потоки

1 2 N... W

время

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

Хранилище InnoDB

Транзакции и кислота

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

Таблички 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

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

Работа с InnoDB

InnoDB: • Полностью

поддерживает ACID • Использует основной

ключ как кластерный индекс

• Внешние ключи и ссылочная целостность

• MVCC

11

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

Работа с InnoDB

InnoDB: • Полностью

поддерживает ACID • Использует основной

ключ как кластерный индекс

• Внешние ключи и ссылочная целостность

• MVCC

12

Tablespace

Transaction log (Redo)

Undo

InnoDB buffer pool

Log buffer pool

ОЗУ

Диск

Doublewrite

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

Работа с InnoDB

InnoDB: • Полностью

поддерживает ACID • Использует основной

ключ как кластерный индекс

• Внешние ключи и ссылочная целостность

• MVCC

13

Tablespace

Transaction log (Redo)

Undo

InnoDB buffer pool

Log buffer pool

ОЗУ

Диск

1

Doublewrite

2

3

4

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

Резервные копии

И восстановление на момент времени

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

Бэкапы бывают двух видов: • Текстовые

- mysqldump • Бинарные

- mysqlhotcopy - xtrabackup

Грустная и скучная теория

15

SELECT *

cp /var/lib/mysql/*

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

Журнал измененийBinary log: • Пишется на все

изменения в базе • Бывает row,

statement и mixed • mysqlbinlog

помогает читать

16

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

Пример адского бэкапа

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

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

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