Резервное копирование MySQL в экстремальных условиях

51
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1 Safe Harbour Statement THE FOLLOWING IS INTENDED TO OUTLINE OUR GENERAL PRODUCT DIRECTION. IT IS INTENDED FOR INFORMATION PURPOSES ONLY, AND MAY NOT BE INCORPORATED INTO ANY CONTRACT. IT IS NOT A COMMITMENT TO DELIVER ANY MATERIAL, CODE, OR FUNCTIONALITY, AND SHOULD NOT BE RELIED UPON IN MAKING PURCHASING DECISIONS. THE DEVELOPMENT, RELEASE, AND TIMING OF ANY FEATURES O FUNCTIONALITY DESCRIBED FOR ORACLE’S PRODUCTS REMAINS AT THE SOLE DISCRETION OF ORACLE.

description

Мастер-класс для DevConf 2014

Transcript of Резервное копирование MySQL в экстремальных условиях

Page 1: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

1

Safe Harbour Statement

THE FOLLOWING IS INTENDED TO OUTLINE OUR GENERAL PRODUCT DIRECTION. IT IS INTENDED FOR INFORMATION PURPOSES ONLY, AND MAY NOT BE INCORPORATED INTO ANY CONTRACT. IT IS NOT A COMMITMENT TO DELIVER ANY MATERIAL, CODE, OR FUNCTIONALITY, AND SHOULD NOT BE RELIED UPON IN MAKING PURCHASING DECISIONS. THE DEVELOPMENT, RELEASE, AND TIMING OF ANY FEATURES O FUNCTIONALITY DESCRIBED FOR ORACLE’S PRODUCTS REMAINS AT THE SOLE DISCRETION OF ORACLE.

Page 2: Резервное копирование MySQL в экстремальных условиях

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

2

Insert Picture Here

Резервное копирование MySQL в экстремальных условияхСвета СмирноваВедущий инженер технической поддержки

Слайды подготовлены при участииMatt Lord, MySQL Product Manager

Page 3: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

3

Содержание

Введение Что мы будем обсуждать Копирование при:

• Недостатке места• Нехватке времени• Ограниченных системных ресурсах

Как минимизировать влияние блокировок Что делать при повреждении данных

Page 4: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

4

Insert Picture Here

Введение

Page 5: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

5

О себе

Света Смирнова

Инженер технической поддержки MySQL

Представитель поддержки в команде MySQL Enterprise Backup (MEB)

Постоянно работаю со сложными случаями при резервном копировании

• Большинству клиентов стандартные рекомендации не подходят

• Паттерны для сложных проблем

Page 6: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

6

Зачем нужны бэкапы?

1. Это ваша страховка на случай: Поломки оборудования Ошибки пользователя Программной ошибки

2. Вы можете их использовать, чтобы создать новые инсталляции

3. Клонировать MySQL сервера для репликации

4. Данные -это наиболее важная часть вашей интеллектуальной собственности. Вы должны их защищать от потерь.

Page 7: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

7

Головоломка бэкапа

1. Инструменты, осуществляющие бэкап, гарантируют надёжность при помощи:

Табличных блокировок Долговременных транзакций Глобальных блокировок

2. Операции экспорта создают дополнительную нагрузку

3. Они требуют много свободного места на диске

Качественно, быстро и дёшево не бывает

Page 8: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

8

Головоломка бэкапа

Как же осуществлять экспорт данных с рабочей системы, где

Сервера постоянно выполняют критичные бизнес-операции Приложение нельзя остановить ни на секунду Любое замедление неприемлемо Данных настолько много, что сложно найти ещё столько же для бэкапа

?

Page 9: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

9

Итак, как же осуществлять бэкап...

при недостатке места на локальном диске?

с минимальными ресурсозатратами?

с минимальным влиянием на MySQL сервер, с которого нужно скопировать данные?

когда нет времени?

без блокировки таблиц и всего MySQL сервера?

когда данные уже повреждены?

Page 10: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

10

О чём я не буду рассказывать

Полные бэкапы

Частичные бэкапы

Инкрементные бэкапы

Автоматизация бэкапов

Обычные приёмы оптимизации бэкапов

Всё описано в официальной документации и white papers

Существуют стандартные best practices

Я уже рассказывала об этом

На прошлой Devconf

http://2013.devconf.ru/offers/12

Page 11: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

11

Инструменты

Только те, которые я сама использую

Основной инструмент: MySQL Enterprise Backup

• Бинарный горячий бэкап

• Коммерческий, доступен как часть подписки MySQL Enterprise

Можно заменить open source аналогом Percona Xtrabackup

• Но я с ним не работаю!

Поэтому я всегда буду использовать MEB, а вы можете взять любой из этих двух инструментов

Я упомяну, если возможность недоступна для Xtrabackup

Все остальные инструменты бесплатны

Только MEB!

Только MEB!

Page 12: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

12

Insert Picture Here

Нехватка места на диске

Page 13: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

13

Когда мало места на диске

При очень большом размере data директории

Когда осталось мало места на локальном диске

Вы можете использовать mysqldump, но он слишком медленный.

Можно просто скопировать файлы, но придётся остановить mysqld Процесс MEB должен быть запущен на той же машине, что и MySQL

сервер!

shell# mysqldump –host=remote.host.com –port=3306 –single-transaction \–master-data=1 –all-databases >backup.sql

shell# mysqldump –host=remote.host.com –port=3306 –single-transaction \–master-data=1 –all-databases >backup.sql

Page 14: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

14

Опции экспорта

Сжатые бэкапы: --compress, --compress-level=LEVEL, --compress-method=ALGORITHM

Стриминг при помощи SSH

Бэкап на ленту, при использовании интерфейса SBT

Частичные бэкапы:

• --include-tables, --exclude-tables, --with-tts

• --include, --databases

Инкрементные бэкапы

Не копируйте пустые и неиспользуемые страницы: --skip-unused-pages

Только MEB!

Только MEB!

Только MEB!

Page 15: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

15

Опции экспорта: XtraBackup аналоги

Частичные бэкапы:

• --include, --databases, --tables-file

Не копируйте secondary индексы: --compact

TTS support

• Поддерживает на уровне restore: --apply-log + --export

• Вам придётся вручную импортировать таблицу при помощи ALTER TABLE DISCARD TABLESPACE, с последующим копированием файлов и ALTER TABLE IMPORT TABLESPACE

Page 16: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

16

Опции экспорта: сжатие Возможность сжатия до 80% и больше!

shell# mysqlbackup --backup-dir=/opt/mysql/backups/uncompressed \> backup 2>/dev/null && du -csh /opt/mysql/backups/uncompressed334M /opt/mysql/backups/uncompressed334M total

shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed \> --compress --compress-level=9 backup 2>/dev/null && du –csh \> /opt/mysql/backups/compressed81M /opt/mysql/backups/compressed81M total

shell# mysqlbackup --backup-dir=/opt/mysql/backups/uncompressed \> backup 2>/dev/null && du -csh /opt/mysql/backups/uncompressed334M /opt/mysql/backups/uncompressed334M total

shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed \> --compress --compress-level=9 backup 2>/dev/null && du –csh \> /opt/mysql/backups/compressed81M /opt/mysql/backups/compressed81M total

Page 17: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

17

Опции экспорта: сжатие● Три алгоритма

● LZ4● Самый быстрый● По умолчанию

● LZMA● Самый эффективный

● ZLIB● По умолчанию <= 3.9

● Девять уровней● Только ZLIB и LZMA

Только MEB!

XtraBackup использует алгоритмquicklz

Page 18: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

18

Опции экспорта: стриминг

Можно полностью отказаться от локального хранения

Просто укажите директорию для временных файлов на время бэкапа

Поддерживаются частичные бэкапы

Должна быть достаточно большой, чтобы сохранить все изменеия, случившиеся во время экспорта

Но не нужно дополнительного места для данных

shell# mysqlbackup --backup-image=- --backup-dir=/tmp/backup \> --disable-manifest backup-to-image 2>/dev/null | ssh matt@solo \> "cat > /tmp/backup.img“

shell# ssh matt@solo "ls -lh /tmp/backup.img"-rw-r--r-- 1 matt staff 333M Sep 10 15:54 /tmp/backup.img

shell# mysqlbackup --backup-image=- --backup-dir=/tmp/backup \> --disable-manifest backup-to-image 2>/dev/null | ssh matt@solo \> "cat > /tmp/backup.img“

shell# ssh matt@solo "ls -lh /tmp/backup.img"-rw-r--r-- 1 matt staff 333M Sep 10 15:54 /tmp/backup.img

Page 19: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

19

Опции экспорта: интерфейс SBT Можно полностью отказаться от локального хранения

Просто передавайте бэкап MMS, что использует ваша компания

– Oracle Secure Backup (полностью поддерживается)– IBM Tivoli Storage Manager– Symantec NetBackup– EMC NetWorker

shell-osb# mysqlbackup --backup-image=sbt:backup-mattprod-2013-09-08 \> --backup-dir=/tmp/backup backup-to-image

shell-tsm# mysqlbackup --backup-image=sbt:my-tsm–backup \> --sbt-lib-path=/usr/lib/libobk.so \> --sbt-environment=“TDPO_OPTFILE=/opt/ibm/tsm/tdpo.opt” \> --backup-dir=/tmp/backup backup-to-image

shell-osb# mysqlbackup --backup-image=sbt:backup-mattprod-2013-09-08 \> --backup-dir=/tmp/backup backup-to-image

shell-tsm# mysqlbackup --backup-image=sbt:my-tsm–backup \> --sbt-lib-path=/usr/lib/libobk.so \> --sbt-environment=“TDPO_OPTFILE=/opt/ibm/tsm/tdpo.opt” \> --backup-dir=/tmp/backup backup-to-image

Только MEB!

Page 20: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

20

Опции экспорта: частичный бэкап

Копируйте только важные базы и таблицы

MEB поддерживает InnoDB transportable tablespaces во время бэкапа

shell# mysqlbackup --include=sakila.* --only-innodb-with-frm=related \> --backup-dir=/opt/mysql/backups backup

shell# mysqlbackup --use-tts=with-minimum-locking \> --include=employees.* --backup-dir=/opt/mysql/backups backup

shell# mysqlbackup --include=sakila.* --only-innodb-with-frm=related \> --backup-dir=/opt/mysql/backups backup

shell# mysqlbackup --use-tts=with-minimum-locking \> --include=employees.* --backup-dir=/opt/mysql/backups backup

Только MEB!

Page 21: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

21

Опции экспорта: инкрементный бэкап Копируйте только то, что изменилось с момента последнего

бэкапа

shell# mysqlbackup --incremental \> --incremental-base=dir:/opt/mysql/backup/monday \> --incremental-backup-dir=/opt/mysql/backup/tuesday backup

shell# mysqlbackup --incremental \> --incremental-base=history:last_backup --with-timestamp \> --incremental-backup-dir=/opt/mysql/backup backup

shell# mysqlbackup --incremental \> --incremental-base=dir:/opt/mysql/backup/monday \> --incremental-backup-dir=/opt/mysql/backup/tuesday backup

shell# mysqlbackup --incremental \> --incremental-base=history:last_backup --with-timestamp \> --incremental-backup-dir=/opt/mysql/backup backup

Page 22: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

22

Опции экспорта: не копируйте пустые и неиспользуемые страницы

Укажите, что вы не хотитет копировать пустые и неиспользуемые страницы

Используйте эту опцию в сочетании с компрессией для большей эффективности

shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed \> --compress --compress-level=9 --skip-unused-pages backup

shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed \> --compress --compress-level=9 --skip-unused-pages backup

Только MEB!

Page 23: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

23

Опции восстановления

В MEB 3.9+ возможно восстановление за один шаг

– Даже для сжатого бэкапа и бэкапа в виде файла

Эта возможность позволяет избежать ненужного дублирования данных во время восстановления

shell# ssh matt@solo "cat /opt/mysql/backups/backup.img" | mysqlbackup \> --backup-dir=/tmp/backup --uncompress --backup-image=- \> --datadir=/var/lib/mysql --innodb_log_group_home_dir=. \> --innodb_log_files_in_group=4 --innodb_log_file_size=2G \> --innodb_data_file_path="ibdata1:1G:autoextend"> copy-back-and-apply-log

shell# ssh matt@solo "cat /opt/mysql/backups/backup.img" | mysqlbackup \> --backup-dir=/tmp/backup --uncompress --backup-image=- \> --datadir=/var/lib/mysql --innodb_log_group_home_dir=. \> --innodb_log_files_in_group=4 --innodb_log_file_size=2G \> --innodb_data_file_path="ibdata1:1G:autoextend"> copy-back-and-apply-log

Только MEB!

Page 24: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

24

Insert Picture Here

Недостаток времени

Page 25: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

25

Мне нужен бэкап сию минуту!

Невозможно установить время для проведения административных работ более 30 минут или даже меньшего срока

Бэкап может срочно потребоваться для установки дополнительного сервера

Требуется срочно переместить на другой сервер одну или несколько баз данных

Page 26: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

26

Методы экспорта

Бэкап файловой системы

– Требует полностью остановить mysqld или, в лучшем случае, блокировать глобально

Логические бэкапы (mysqldump)

– ОЧЕНЬ медленные, требуют много места на диске и используют слишком много блокировок

MySQL Enterprise Backup (MEB)

– Горячие бэкапы транзакционного табличного движка InnoDB

– Поддерживает много опций, регулирующих производительность и контроль ресурсов

– Поддерживает частичные бэкапы и transportable tablespaces

– Поддерживает инкрементные бэкапы

Page 27: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

27

MySQL Enterprise Backup

В 49 раз быстрее mysqldump

Page 28: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

28

MySQL Enterprise Backup

В 80 раз быстрее mysqldump

Page 29: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

29

MEB: опции производительности

Увеличьте количество буферов для CPU-интенсивных многопоточных операций: --number-of-buffers

Увеличьте количество нитей, используемых для чтения: --read-threads

Увеличьте количество нитей, используемых для записи: --write-threads

Увеличьте количестов CPU нитей: --process-threads

Увеличьте максимальное количество памяти, используемой для кэширования: --limit-memory

Не копируйте неиспользуемые страницы InnoDB: --skip-unused-pages

Только MEB!

Только MEB!

Page 30: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

30

Опции производительности:XtraBackup аналоги

Количество нитей, осуществляющих компрессию

• --compress-threads

Количество нитей, используемых для копирования файлов *.ibd

• --parallel

Ограничить количество операций IO в секунду

• --throttle

Page 31: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

31

Пример: сколько времени? 2G datadir, 1 7.2K HDD, 4 vCPUs , 16G of RAM

shell# time mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp backup 2>/tmp/log.txtreal 0m34.403suser 0m3.069ssys 0m2.043s

shell# time mysqlbackup --backup-dir=/opt/mysql/backups \> --process-threads=4 --limit-memory=1000 --skip-unused-pages \> --with-timestamp backup 2>/tmp/log.txtreal 0m29.883suser 0m3.121ssys 0m1.889s

shell# time mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp backup 2>/tmp/log.txtreal 0m34.403suser 0m3.069ssys 0m2.043s

shell# time mysqlbackup --backup-dir=/opt/mysql/backups \> --process-threads=4 --limit-memory=1000 --skip-unused-pages \> --with-timestamp backup 2>/tmp/log.txtreal 0m29.883suser 0m3.121ssys 0m1.889s

Грамотное использование опций сокращает время бэкапа до 50% на машинах с большими наборами данных, используемых крупными предприятиями

Page 32: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

32

Insert Picture Here

Нехватка системных ресурсов

Page 33: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

33

Почему приложение вдруг стало работать медленно?

Бэкапы могут сильно загружать процессор (CPU intensive)

Бэкапы могут нагружать диск (быть I/O intensive), что, в свою очередь, увеличивает CPU cycles в IO_Wait

Бэкапы могут захватывать различные блокировки MySQL сервера

Так как же экспортировать данные и при этом не переживать значительных замедлений в работе приложения…

Page 34: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

34

Опции бэкапа

Ограничить использование памяти: --limit-memory

Ограничить использование CPU: --process-threads

Ждать X ms после копирования каждого блока данных: --sleep

Не использовать блокировки: --no-locking, --innodb-only

Ограничить операции ввода-вывода: --read-threads, --write-threads

Не копировать неиспользуемые страницы: --skip-unused-pages

Ограничить использование ресурсов на уровне операционной системы: cgroups, taskset, cpulimit, etc.

Только MEB!

Только MEB!

Page 35: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

35

Пример: использование ресурсов 2G datadir, 1 7.2K HDD, 4 vCPUs , 16G of RAM

shell# /usr/bin/time -f 'Exec Time: %E, CPU: %P, MEM: %MKB, IO: %O' \> mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp \> backup 2>&1 | tail -1Exec Time: 0:23.11, CPU: 21%, MEM: 951648KB, IO: 4229360

shell# taskset -c 1 /usr/bin/time -f \> 'Exec Time: %E, CPU: %P, MEM: %MKB, IO: %O' mysqlbackup \> --backup-dir=/opt/mysql/backups --limit-memory=50 \> --process-threads=1 --skip-unused-pages --no-locking --sleep=2000 \> --with-timestamp backup 2>&1 | tail -1Exec Time: 4:22.06, CPU: 1%, MEM: 222096KB, IO: 3384064

shell# /usr/bin/time -f 'Exec Time: %E, CPU: %P, MEM: %MKB, IO: %O' \> mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp \> backup 2>&1 | tail -1Exec Time: 0:23.11, CPU: 21%, MEM: 951648KB, IO: 4229360

shell# taskset -c 1 /usr/bin/time -f \> 'Exec Time: %E, CPU: %P, MEM: %MKB, IO: %O' mysqlbackup \> --backup-dir=/opt/mysql/backups --limit-memory=50 \> --process-threads=1 --skip-unused-pages --no-locking --sleep=2000 \> --with-timestamp backup 2>&1 | tail -1Exec Time: 4:22.06, CPU: 1%, MEM: 222096KB, IO: 3384064

Page 36: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

36

Insert Picture Here

Минимизация блокировок

Page 37: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

37

MEB: опции, регулирующие блокировки

Исключить ЛЮБЫЕ блокировки: --no-locking (небезопасно, если у вас есть нетранзакционные таблицы)

Экспортировать только транзакционные данные: --innodb-only

Инкрементный бэкап, используя только redo log: --incremental-with-redo-log-only

Частичные бэкапы с минимальными блокировками: --use-tts=with-minimum-locking

Только MEB!

Page 38: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

38

Разве бэкапы MEB не “горячи”?

FLUSH TABLES WITH READ LOCK используется при окончании работы

– Необходимо, чтобы получить снапшот нетранзакционных данных

Можно избежать при помощи опций:

– Не брать никаких локов: --no-locking

– Экспортировать только таблицы InnoDB: --only-innodb[-with-frm]

Только MEB!

Page 39: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

39

Что делать с нетранзакционными данными?

mysqlhotcopy – блокирует и копирует файлы таблиц по одной

mysqldump – блокирует и экспортирует каждую таблицу в SQL, XML или CSV файл

FS snapshots – скопируйте файлы таблиц

Используйте MySQL Replication Slave для бэкапов

mysqlbinlog –read-from-remote-server --raww

Количество нетранзакционных данных будет продолжать уменьшаться в MySQL 5.7

Page 40: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

40

Итоги: экспорт с минимальными затратами

Ограничьте количество используемой памяти: MEB: --limit-memory, --sleep, --[read|write|process]-threads Перенаправьте бэкап на удалённую машину

Копируйте столько данных, сколько необходимо: MEB: частичные бэкапы с опцией --use-tts=with-minimum-locking MEB: не копируйте неиспользуемые страницы --skip-unused-pages

(только InnoDB) MEB: инкрементные бэкапы, использующие только redo log (только

InnoDB)

Используйте полностью неблокирующие бэкапы: MEB: --only-innodb, --only-innodb-with-frm, --no-locking

– Небезопасно для файлов .frm и нетранзакционных данных

Page 41: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

41

Insert Picture Here

Повреждённые данные

Page 42: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

42

Бэкапы и повреждённые данные

Иногда таблицы повреждаются!

Если данные на рабочей машине повреждены, но бэкап в порядке:

Полностью или частично (--with-tts) восстановите данные Накатите изменения и бинарных логов

Если данные повреждены и на рабочей машине, и в бэкапе (бэкапа нет):

InnoDB– --innodb_force_recovery– SELECT INTO OUTFILE

MyISAM– myisamchk

Page 43: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

43

Бэкапы и повреждённые данные

Что делать если: У вас есть только полный бэкап, сделанный MEB, но вам нужно

восстановить одну таблицу Вы не можете запустить ещё один MySQL сервер Ваша версия MySQL не поддерживает TTS

MyISAM Просто скопируйте файлы .frm, .MYI, и .MYD

InnoDB Так просто не получится Потому что каждая таблица должна иметь одинаковый ID в shared

tablespace и на бэкапе, и на рабочем сервере

Page 44: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

44

Бэкапы и повреждённые данные:полный Backup и InnoDB

Если вы можете развернуть новую инсталляцию MySQL на отдельном сервере

Сделайте это! Если ваша версия MySQL поддерживает TTS

– Скопируйте таблицу при помощи MEB и опции --use-tts– Восстановите её

Page 45: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

45

Бэкапы и повреждённые данные:полный бэкап и InnoDB

Если вы не можете!

Задачка Каждая InnoDB таблица должна иметь одинаковый ID в shared

tablespace и на бэкапе, и на рабочем сервере– Они могу совпадать, если:

– Это бэкап того самого сервера– Вы изначально клонировали этот сервер из данного бэкапа– и– Вы используете опцию –innodb-file-per-table

– Просто скопируйте файл .ibd

Page 46: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

46

Бэкапы и повреждённые данные:полный бэкап и InnoDB

Если ID не одинаково, но вы используете опцию –innodb-file_per_table

Восстановите вручную– Имитируйте внутренний InnoDB table counter

– Запустите новый MySQL сервер– Создавайте, затем удаляйте (drop) таблицы с той же структурой,

что и оригинальная до тех пор, пока counter не достигнет нужного значения

– Импортируйте таблицу из бэкапа на подготовленный MySQL сервер – Скопируйте и восстановите таблицу на рабочем сервере

• mysqlbackup –use-tts –include-tables=dbname.tablename backup• mysqldump dbname tablename

Page 47: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

47

Бэкапы и повреждённые данные:полный бэкап и InnoDB

Как узнать, что набирать в команде CREATE TABLE ? mysqlfrm, the FRM reader придёт на помощь

$ mysqlfrm --basedir=/usr/local/bin/mysql test1:city.frm --port=3333# Starting the spawned server on port 3333 ... done.# Reading .frm files## Reading the city.frm file.## CREATE statement for city.frm:#

CREATE TABLE `test1`.`city` (…

$ mysqlfrm --basedir=/usr/local/bin/mysql test1:city.frm --port=3333# Starting the spawned server on port 3333 ... done.# Reading .frm files## Reading the city.frm file.## CREATE statement for city.frm:#

CREATE TABLE `test1`.`city` (…

Page 48: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

48

Insert Picture Here

Заключение

Page 49: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

49

Заключение

Бэкапы необходимы

Ограничения, налагаемые работой приложений, - это жизненный факт

Сложные проблемы могут быть решены при помощи MySQL Enterprise Backup

MySQL Support поможет, если вы столкнётесь с проблемой

Page 50: Резервное копирование MySQL в экстремальных условиях

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.

50

Ссылки

Документация:

http://dev.mysql.com/doc/mysql-enterprise-backup/3.10/en/index.html

http://dev.mysql.com/doc/mysql-utilities/1.4/en/mysqlfrm.html

https://blogs.oracle.com/mysqlenterprisebackup/

30-дневная пробная версия MySQL Enterprise Backup:

https://edelivery.oracle.com/

Page 51: Резервное копирование MySQL в экстремальных условиях

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

51

Insert Picture HereСПАСИБО!