SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
2
Insert Picture Here
Резервное копирование
MySQL в экстремальных
условиях
Света Смирнова
Ведущий инженер технической поддержки
Слайды подготовлены при участии
Matt Lord, MySQL Product Manager
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
3
Содержание
 Введение
 Что мы будем обсуждать
 Копирование при:
• Недостатке места
• Нехватке времени
• Ограниченных системных ресурсах
 Как минимизировать влияние блокировок
 Что делать при повреждении данных
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
4
Insert Picture Here
Введение
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
5
О себе
Света Смирнова
 Инженер технической поддержки MySQL
 Представитель поддержки в команде MySQL Enterprise Backup (MEB)
 Постоянно работаю со сложными случаями при резервном
копировании
• Большинству клиентов стандартные рекомендации не подходят
• Паттерны для сложных проблем
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
6
Зачем нужны бэкапы?
1. Это ваша страховка на случай:
 Поломки оборудования
 Ошибки пользователя
 Программной ошибки
2. Вы можете их использовать, чтобы создать новые инсталляции
3. Клонировать MySQL сервера для репликации
4. Данные -это наиболее важная часть вашей интеллектуальной
собственности. Вы должны их защищать от потерь.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
7
Головоломка бэкапа
1. Инструменты, осуществляющие бэкап, гарантируют надёжность
при помощи:
 Табличных блокировок
 Долговременных транзакций
 Глобальных блокировок
2. Операции экспорта создают дополнительную нагрузку
3. Они требуют много свободного места на диске
Качественно, быстро и дёшево не бывает
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
8
Головоломка бэкапа
Как же осуществлять экспорт данных с рабочей системы, где
 Сервера постоянно выполняют критичные бизнес-операции
 Приложение нельзя остановить ни на секунду
 Любое замедление неприемлемо
 Данных настолько много, что сложно найти ещё столько же для бэкапа
?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
9
Итак, как же осуществлять бэкап...
 при недостатке места на локальном диске?
 с минимальными ресурсозатратами?
 с минимальным влиянием на MySQL сервер, с которого нужно
скопировать данные?
 когда нет времени?
 без блокировки таблиц и всего MySQL сервера?
 когда данные уже повреждены?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
10
О чём я не буду рассказывать
 Полные бэкапы
 Частичные бэкапы
 Инкрементные бэкапы
 Автоматизация бэкапов
 Обычные приёмы оптимизации бэкапов
Всё описано в официальной документации и white papers
Существуют стандартные best practices
Я уже рассказывала об этом
 На прошлой Devconf
 http://2013.devconf.ru/offers/12
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
11
Инструменты
 Только те, которые я сама использую
 Основной инструмент: MySQL Enterprise Backup
• Бинарный горячий бэкап
• Коммерческий, доступен как часть подписки MySQL Enterprise
 Можно заменить open source аналогом Percona Xtrabackup
• Но я с ним не работаю!
 Поэтому я всегда буду использовать MEB, а вы можете взять любой из
этих двух инструментов
 Я упомяну, если возможность недоступна для Xtrabackup
 Все остальные инструменты бесплатны
Только
MEB!
Только
MEB!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
12
Insert Picture Here
Нехватка места на диске
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
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!
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
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/uncompressed
334M /opt/mysql/backups/uncompressed
334M total
shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed 
> --compress --compress-level=9 backup 2>/dev/null && du –csh 
> /opt/mysql/backups/compressed
81M /opt/mysql/backups/compressed
81M total
shell# mysqlbackup --backup-dir=/opt/mysql/backups/uncompressed 
> backup 2>/dev/null && du -csh /opt/mysql/backups/uncompressed
334M /opt/mysql/backups/uncompressed
334M total
shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed 
> --compress --compress-level=9 backup 2>/dev/null && du –csh 
> /opt/mysql/backups/compressed
81M /opt/mysql/backups/compressed
81M total
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
17
Опции экспорта: сжатие
●
Три алгоритма
●
LZ4
●
Самый быстрый
●
По умолчанию
●
LZMA
●
Самый эффективный
●
ZLIB
●
По умолчанию <= 3.9
●
Девять уровней
●
Только ZLIB и LZMA
Только
MEB!
XtraBackup
использует
алгоритм
quicklz
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
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!
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!
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
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!
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!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
24
Insert Picture Here
Недостаток времени
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
25
Мне нужен бэкап сию минуту!
 Невозможно установить время для проведения административных
работ более 30 минут или даже меньшего срока
 Бэкап может срочно потребоваться для установки дополнительного
сервера
 Требуется срочно переместить на другой сервер одну или несколько
баз данных
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
26
Методы экспорта
 Бэкап файловой системы
– Требует полностью остановить mysqld или, в лучшем случае, блокировать
глобально
 Логические бэкапы (mysqldump)
– ОЧЕНЬ медленные, требуют много места на диске и используют слишком
много блокировок
 MySQL Enterprise Backup (MEB)
– Горячие бэкапы транзакционного табличного движка InnoDB
– Поддерживает много опций, регулирующих производительность и контроль
ресурсов
– Поддерживает частичные бэкапы и transportable tablespaces
– Поддерживает инкрементные бэкапы
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
27
MySQL Enterprise Backup
В 49 раз быстрее mysqldump
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
28
MySQL Enterprise Backup
В 80 раз быстрее mysqldump
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!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
30
Опции производительности:
XtraBackup аналоги
 Количество нитей, осуществляющих компрессию
• --compress-threads
 Количество нитей, используемых для копирования файлов *.ibd
• --parallel
 Ограничить количество операций IO в секунду
• --throttle
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.txt
real 0m34.403s
user 0m3.069s
sys 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.txt
real 0m29.883s
user 0m3.121s
sys 0m1.889s
shell# time mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp
backup 2>/tmp/log.txt
real 0m34.403s
user 0m3.069s
sys 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.txt
real 0m29.883s
user 0m3.121s
sys 0m1.889s
 Грамотное использование опций сокращает время бэкапа до 50% на
машинах с большими наборами данных, используемых крупными
предприятиями
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
32
Insert Picture Here
Нехватка системных ресурсов
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
33
Почему приложение вдруг стало работать
медленно?
 Бэкапы могут сильно загружать процессор (CPU intensive)
 Бэкапы могут нагружать диск (быть I/O intensive), что, в свою очередь,
увеличивает CPU cycles в IO_Wait
 Бэкапы могут захватывать различные блокировки 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!
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 -1
Exec 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 -1
Exec 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 -1
Exec 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 -1
Exec Time: 4:22.06, CPU: 1%, MEM: 222096KB, IO: 3384064
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
36
Insert Picture Here
Минимизация блокировок
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!
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!
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
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 и нетранзакционных данных
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
41
Insert Picture Here
Повреждённые данные
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
42
Бэкапы и повреждённые данные
Иногда таблицы повреждаются!
Если данные на рабочей машине повреждены, но бэкап в
порядке:
 Полностью или частично (--with-tts) восстановите данные
 Накатите изменения и бинарных логов
Если данные повреждены и на рабочей машине, и в бэкапе
(бэкапа нет):
 InnoDB
– --innodb_force_recovery
– SELECT INTO OUTFILE
 MyISAM
– myisamchk
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
43
Бэкапы и повреждённые данные
Что делать если:
 У вас есть только полный бэкап, сделанный MEB, но вам нужно
восстановить одну таблицу
 Вы не можете запустить ещё один MySQL сервер
 Ваша версия MySQL не поддерживает TTS
MyISAM
 Просто скопируйте файлы .frm, .MYI, и .MYD
InnoDB
 Так просто не получится
 Потому что каждая таблица должна иметь одинаковый ID в shared
tablespace и на бэкапе, и на рабочем сервере
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
44
Бэкапы и повреждённые данные:
полный Backup и InnoDB
Если вы можете развернуть новую инсталляцию MySQL на
отдельном сервере
 Сделайте это!
 Если ваша версия MySQL поддерживает TTS
– Скопируйте таблицу при помощи MEB и опции --use-tts
– Восстановите её
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
45
Бэкапы и повреждённые данные:
полный бэкап и InnoDB
Если вы не можете!
 Задачка
 Каждая InnoDB таблица должна иметь одинаковый ID в shared
tablespace и на бэкапе, и на рабочем сервере
– Они могу совпадать, если:
– Это бэкап того самого сервера
– Вы изначально клонировали этот сервер из данного бэкапа
– и
– Вы используете опцию –innodb-file-per-table
– Просто скопируйте файл .ibd
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
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` (
…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
48
Insert Picture Here
Заключение
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
49
Заключение
 Бэкапы необходимы
 Ограничения, налагаемые работой приложений, - это жизненный факт
 Сложные проблемы могут быть решены при помощи MySQL Enterprise
Backup
 MySQL Support поможет, если вы столкнётесь с проблемой
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/
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
51
Insert Picture HereСПАСИБО!

Mais conteúdo relacionado

Mais procurados

Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действииMikhail Shcherbakov
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridMikhail Shcherbakov
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...AvitoTech
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
Беспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLБеспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLДмитрий Васильев
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016Alex Chistyakov
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...Fwdays
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays HighloadYehor Herasymchuk
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Ontico
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 

Mais procurados (20)

Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действии
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Беспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQLБеспроблемная эксплуатация PostgreSQL
Беспроблемная эксплуатация PostgreSQL
 
PostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimmPostgreSQL on sas/ssd/nvme/nvdimm
PostgreSQL on sas/ssd/nvme/nvdimm
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Scaling PostgreSQL
Scaling PostgreSQLScaling PostgreSQL
Scaling PostgreSQL
 
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 

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

Новости и анонсы Oracle Open World 2014
Новости и анонсы Oracle Open World 2014Новости и анонсы Oracle Open World 2014
Новости и анонсы Oracle Open World 2014Andrey Akulov
 
Новый подход к резервному копированию БД - Zero Data Loss Recovery Appliance
Новый подход к резервному копированию БД - Zero Data Loss Recovery ApplianceНовый подход к резервному копированию БД - Zero Data Loss Recovery Appliance
Новый подход к резервному копированию БД - Zero Data Loss Recovery ApplianceAndrey Akulov
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиAndrey Akulov
 
бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014Handy_Backup
 
Новое поколение серверов SPARC
Новое поколение серверов SPARCНовое поколение серверов SPARC
Новое поколение серверов SPARCAndrey Akulov
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Andrey Akulov
 
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...Expolink
 
Дедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекамДедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекамКРОК
 
Сценарии перехода в облако. Сравнительный анализ
Сценарии перехода в облако. Сравнительный анализСценарии перехода в облако. Сравнительный анализ
Сценарии перехода в облако. Сравнительный анализpcweek_ua
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
Обзор Super Cluster M6 — 32
Обзор Super Cluster M6 — 32Обзор Super Cluster M6 — 32
Обзор Super Cluster M6 — 32Andrey Akulov
 
MID_McAfee_DLP_Vlad_Radetskiy_RU
MID_McAfee_DLP_Vlad_Radetskiy_RUMID_McAfee_DLP_Vlad_Radetskiy_RU
MID_McAfee_DLP_Vlad_Radetskiy_RUVladyslav Radetsky
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013Alex Chistyakov
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Serguei Gitinsky
 
Обзор TimesTen In-Memory Database
Обзор TimesTen In-Memory DatabaseОбзор TimesTen In-Memory Database
Обзор TimesTen In-Memory DatabaseAndrey Akulov
 

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

Новости и анонсы Oracle Open World 2014
Новости и анонсы Oracle Open World 2014Новости и анонсы Oracle Open World 2014
Новости и анонсы Oracle Open World 2014
 
Новый подход к резервному копированию БД - Zero Data Loss Recovery Appliance
Новый подход к резервному копированию БД - Zero Data Loss Recovery ApplianceНовый подход к резервному копированию БД - Zero Data Loss Recovery Appliance
Новый подход к резервному копированию БД - Zero Data Loss Recovery Appliance
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памяти
 
бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014
 
Новое поколение серверов SPARC
Новое поколение серверов SPARCНовое поколение серверов SPARC
Новое поколение серверов SPARC
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
MySQL Cloud Service
MySQL Cloud ServiceMySQL Cloud Service
MySQL Cloud Service
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013
 
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
Oracle. Моторин Иларион. "Современные и перспективные системы на базе процесс...
 
Дедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекамДедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекам
 
Сценарии перехода в облако. Сравнительный анализ
Сценарии перехода в облако. Сравнительный анализСценарии перехода в облако. Сравнительный анализ
Сценарии перехода в облако. Сравнительный анализ
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Обзор Super Cluster M6 — 32
Обзор Super Cluster M6 — 32Обзор Super Cluster M6 — 32
Обзор Super Cluster M6 — 32
 
MID_McAfee_DLP_Vlad_Radetskiy_RU
MID_McAfee_DLP_Vlad_Radetskiy_RUMID_McAfee_DLP_Vlad_Radetskiy_RU
MID_McAfee_DLP_Vlad_Radetskiy_RU
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
 
Обзор TimesTen In-Memory Database
Обзор TimesTen In-Memory DatabaseОбзор TimesTen In-Memory Database
Обзор TimesTen In-Memory Database
 

Mais de Sveta Smirnova

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?Sveta Smirnova
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringSveta Smirnova
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveSveta Smirnova
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговSveta Smirnova
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessSveta Smirnova
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOpsSveta Smirnova
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterSveta Smirnova
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsSveta Smirnova
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Sveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraSveta Smirnova
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?Sveta Smirnova
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Sveta Smirnova
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...Sveta Smirnova
 

Mais de Sveta Smirnova (20)

MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
MySQL 2024: Зачем переходить на MySQL 8, если в 5.х всё устраивает?
 
Database in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and MonitoringDatabase in Kubernetes: Diagnostics and Monitoring
Database in Kubernetes: Diagnostics and Monitoring
 
MySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to HaveMySQL Database Monitoring: Must, Good and Nice to Have
MySQL Database Monitoring: Must, Good and Nice to Have
 
MySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for DevelopersMySQL Cookbook: Recipes for Developers
MySQL Cookbook: Recipes for Developers
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
MySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации баговMySQL Test Framework для поддержки клиентов и верификации багов
MySQL Test Framework для поддержки клиентов и верификации багов
 
MySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your BusinessMySQL Cookbook: Recipes for Your Business
MySQL Cookbook: Recipes for Your Business
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]s
 
Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB ClusterHow to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
How to Avoid Pitfalls in Schema Upgrade with Percona XtraDB Cluster
 
How to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tearsHow to migrate from MySQL to MariaDB without tears
How to migrate from MySQL to MariaDB without tears
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
 
How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
How to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with GaleraHow to Avoid Pitfalls in Schema Upgrade with Galera
How to Avoid Pitfalls in Schema Upgrade with Galera
 
How Safe is Asynchronous Master-Master Setup?
 How Safe is Asynchronous Master-Master Setup? How Safe is Asynchronous Master-Master Setup?
How Safe is Asynchronous Master-Master Setup?
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]s
 
Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?Billion Goods in Few Categories: How Histograms Save a Life?
Billion Goods in Few Categories: How Histograms Save a Life?
 
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
A Billion Goods in a Few Categories: When Optimizer Histograms Help and When ...
 

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

  • 1. 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.
  • 2. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 2 Insert Picture Here Резервное копирование MySQL в экстремальных условиях Света Смирнова Ведущий инженер технической поддержки Слайды подготовлены при участии Matt Lord, MySQL Product Manager
  • 3. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 3 Содержание  Введение  Что мы будем обсуждать  Копирование при: • Недостатке места • Нехватке времени • Ограниченных системных ресурсах  Как минимизировать влияние блокировок  Что делать при повреждении данных
  • 4. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 4 Insert Picture Here Введение
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 5 О себе Света Смирнова  Инженер технической поддержки MySQL  Представитель поддержки в команде MySQL Enterprise Backup (MEB)  Постоянно работаю со сложными случаями при резервном копировании • Большинству клиентов стандартные рекомендации не подходят • Паттерны для сложных проблем
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 6 Зачем нужны бэкапы? 1. Это ваша страховка на случай:  Поломки оборудования  Ошибки пользователя  Программной ошибки 2. Вы можете их использовать, чтобы создать новые инсталляции 3. Клонировать MySQL сервера для репликации 4. Данные -это наиболее важная часть вашей интеллектуальной собственности. Вы должны их защищать от потерь.
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 7 Головоломка бэкапа 1. Инструменты, осуществляющие бэкап, гарантируют надёжность при помощи:  Табличных блокировок  Долговременных транзакций  Глобальных блокировок 2. Операции экспорта создают дополнительную нагрузку 3. Они требуют много свободного места на диске Качественно, быстро и дёшево не бывает
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 8 Головоломка бэкапа Как же осуществлять экспорт данных с рабочей системы, где  Сервера постоянно выполняют критичные бизнес-операции  Приложение нельзя остановить ни на секунду  Любое замедление неприемлемо  Данных настолько много, что сложно найти ещё столько же для бэкапа ?
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 9 Итак, как же осуществлять бэкап...  при недостатке места на локальном диске?  с минимальными ресурсозатратами?  с минимальным влиянием на MySQL сервер, с которого нужно скопировать данные?  когда нет времени?  без блокировки таблиц и всего MySQL сервера?  когда данные уже повреждены?
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 10 О чём я не буду рассказывать  Полные бэкапы  Частичные бэкапы  Инкрементные бэкапы  Автоматизация бэкапов  Обычные приёмы оптимизации бэкапов Всё описано в официальной документации и white papers Существуют стандартные best practices Я уже рассказывала об этом  На прошлой Devconf  http://2013.devconf.ru/offers/12
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 11 Инструменты  Только те, которые я сама использую  Основной инструмент: MySQL Enterprise Backup • Бинарный горячий бэкап • Коммерческий, доступен как часть подписки MySQL Enterprise  Можно заменить open source аналогом Percona Xtrabackup • Но я с ним не работаю!  Поэтому я всегда буду использовать MEB, а вы можете взять любой из этих двух инструментов  Я упомяну, если возможность недоступна для Xtrabackup  Все остальные инструменты бесплатны Только MEB! Только MEB!
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 12 Insert Picture Here Нехватка места на диске
  • 13. 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
  • 14. 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!
  • 15. 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
  • 16. 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/uncompressed 334M /opt/mysql/backups/uncompressed 334M total shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed > --compress --compress-level=9 backup 2>/dev/null && du –csh > /opt/mysql/backups/compressed 81M /opt/mysql/backups/compressed 81M total shell# mysqlbackup --backup-dir=/opt/mysql/backups/uncompressed > backup 2>/dev/null && du -csh /opt/mysql/backups/uncompressed 334M /opt/mysql/backups/uncompressed 334M total shell# mysqlbackup --backup-dir=/opt/mysql/backups/compressed > --compress --compress-level=9 backup 2>/dev/null && du –csh > /opt/mysql/backups/compressed 81M /opt/mysql/backups/compressed 81M total
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 17 Опции экспорта: сжатие ● Три алгоритма ● LZ4 ● Самый быстрый ● По умолчанию ● LZMA ● Самый эффективный ● ZLIB ● По умолчанию <= 3.9 ● Девять уровней ● Только ZLIB и LZMA Только MEB! XtraBackup использует алгоритм quicklz
  • 18. 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
  • 19. 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!
  • 20. 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!
  • 21. 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
  • 22. 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!
  • 23. 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!
  • 24. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 24 Insert Picture Here Недостаток времени
  • 25. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 25 Мне нужен бэкап сию минуту!  Невозможно установить время для проведения административных работ более 30 минут или даже меньшего срока  Бэкап может срочно потребоваться для установки дополнительного сервера  Требуется срочно переместить на другой сервер одну или несколько баз данных
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 26 Методы экспорта  Бэкап файловой системы – Требует полностью остановить mysqld или, в лучшем случае, блокировать глобально  Логические бэкапы (mysqldump) – ОЧЕНЬ медленные, требуют много места на диске и используют слишком много блокировок  MySQL Enterprise Backup (MEB) – Горячие бэкапы транзакционного табличного движка InnoDB – Поддерживает много опций, регулирующих производительность и контроль ресурсов – Поддерживает частичные бэкапы и transportable tablespaces – Поддерживает инкрементные бэкапы
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 27 MySQL Enterprise Backup В 49 раз быстрее mysqldump
  • 28. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 28 MySQL Enterprise Backup В 80 раз быстрее mysqldump
  • 29. 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!
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 30 Опции производительности: XtraBackup аналоги  Количество нитей, осуществляющих компрессию • --compress-threads  Количество нитей, используемых для копирования файлов *.ibd • --parallel  Ограничить количество операций IO в секунду • --throttle
  • 31. 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.txt real 0m34.403s user 0m3.069s sys 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.txt real 0m29.883s user 0m3.121s sys 0m1.889s shell# time mysqlbackup --backup-dir=/opt/mysql/backups --with-timestamp backup 2>/tmp/log.txt real 0m34.403s user 0m3.069s sys 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.txt real 0m29.883s user 0m3.121s sys 0m1.889s  Грамотное использование опций сокращает время бэкапа до 50% на машинах с большими наборами данных, используемых крупными предприятиями
  • 32. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 32 Insert Picture Here Нехватка системных ресурсов
  • 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 33 Почему приложение вдруг стало работать медленно?  Бэкапы могут сильно загружать процессор (CPU intensive)  Бэкапы могут нагружать диск (быть I/O intensive), что, в свою очередь, увеличивает CPU cycles в IO_Wait  Бэкапы могут захватывать различные блокировки MySQL сервера  Так как же экспортировать данные и при этом не переживать значительных замедлений в работе приложения…
  • 34. 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!
  • 35. 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 -1 Exec 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 -1 Exec 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 -1 Exec 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 -1 Exec Time: 4:22.06, CPU: 1%, MEM: 222096KB, IO: 3384064
  • 36. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 36 Insert Picture Here Минимизация блокировок
  • 37. 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!
  • 38. 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!
  • 39. 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
  • 40. 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 и нетранзакционных данных
  • 41. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 41 Insert Picture Here Повреждённые данные
  • 42. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 42 Бэкапы и повреждённые данные Иногда таблицы повреждаются! Если данные на рабочей машине повреждены, но бэкап в порядке:  Полностью или частично (--with-tts) восстановите данные  Накатите изменения и бинарных логов Если данные повреждены и на рабочей машине, и в бэкапе (бэкапа нет):  InnoDB – --innodb_force_recovery – SELECT INTO OUTFILE  MyISAM – myisamchk
  • 43. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 43 Бэкапы и повреждённые данные Что делать если:  У вас есть только полный бэкап, сделанный MEB, но вам нужно восстановить одну таблицу  Вы не можете запустить ещё один MySQL сервер  Ваша версия MySQL не поддерживает TTS MyISAM  Просто скопируйте файлы .frm, .MYI, и .MYD InnoDB  Так просто не получится  Потому что каждая таблица должна иметь одинаковый ID в shared tablespace и на бэкапе, и на рабочем сервере
  • 44. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 44 Бэкапы и повреждённые данные: полный Backup и InnoDB Если вы можете развернуть новую инсталляцию MySQL на отдельном сервере  Сделайте это!  Если ваша версия MySQL поддерживает TTS – Скопируйте таблицу при помощи MEB и опции --use-tts – Восстановите её
  • 45. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 45 Бэкапы и повреждённые данные: полный бэкап и InnoDB Если вы не можете!  Задачка  Каждая InnoDB таблица должна иметь одинаковый ID в shared tablespace и на бэкапе, и на рабочем сервере – Они могу совпадать, если: – Это бэкап того самого сервера – Вы изначально клонировали этот сервер из данного бэкапа – и – Вы используете опцию –innodb-file-per-table – Просто скопируйте файл .ibd
  • 46. 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
  • 47. 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` ( …
  • 48. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 48 Insert Picture Here Заключение
  • 49. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 49 Заключение  Бэкапы необходимы  Ограничения, налагаемые работой приложений, - это жизненный факт  Сложные проблемы могут быть решены при помощи MySQL Enterprise Backup  MySQL Support поможет, если вы столкнётесь с проблемой
  • 50. 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/
  • 51. Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 51 Insert Picture HereСПАСИБО!