- PVSM.RU - https://www.pvsm.ru -
Бэкапы MySQL бывают 2 основных разновидностей это:
Создается текстовый дамп из SQL-запросов, как в mysqldump [1] или Sypex Dumper [2].
Делаются точные копии файлов таблиц, типичный представитель mysqlhotcopy [3].
В процессе работы над новой версией Sypex Dumper и Sypex Backuper, пришел к еще одному интересному варианту горячего бэкапа MySQL. Который представляет собой, что-то среднее между двумя этими вариантами.
Но для начала рассмотрим основные достоинства и недостатки. Кто вместо теории хочет сразу перейти к практике — внизу поста найдете ссылку на тестовый скрипт.
Преимущества логического бэкапа:
Из основных недостатков:
Преимущества физического бэкапа:
Из основных недостатков:
При анализе логических способов бэкапа было замечено, что основная потеря скорости происходит при получении пакетов данных от сервера, разборе их и преобразовании к текстовому формату. К тому же этот разбор обычно делается libmysql либо в случае новых PHP-версий mysqlnd, и приводит к дополнительному оверхеду.
Поэтому решил попробовать избавиться от лишних преобразований, и написал тестовый скрипт который подключается напрямую к MySQL (по TCP или к UNIX-сокету) без использования стандартных MySQL-драйверов. Скрипт сохраняет в файл данные в виде бинарных пакетов полученных от MySQL-сервера. Таким образом не тратится время на разбор пакетов, полей, экранирование данных. А разбор пакетов и формирование SQL-запросов происходит уже при восстановлении бэкапа.
В итоге скорость бэкапа многократно увеличилась, в зависимости от структуры таблицы. Также дампы весьма компактны. Можно сравнить скорость RAW бэкапа, с бэкапом с помощью mysqldump и SELECT… INTO OUTFILE.
Несколько результатов выполнения на стандартных таблицах форумов IPB и phpBB.
Основной недостаток способа, естественно, невозможность восстановления стандартными методами, т.е. нужен специальный скрипт для восстановления. Но в нашем случае это не так важно, так как в любом случае данный способ будет работать со специальным файлом-контейнером, поддерживающим дедупликацию, инкрементальный бэкап, шифрование и другие фишки.
Скачать скрипт для тестирования можно здесь [4].
О результатах отписывайтесь в комментах. Только учтите, что SELECT… INTO OUTFILE работает только на localhost, плюс у MySQL пользователя должны быть права доступа FILE и у каталога backup должны быть выставлены права доступа 777.
Автор: zapimir
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/68481
Ссылки в тексте:
[1] mysqldump: http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
[2] Sypex Dumper: http://sypex.net/
[3] mysqlhotcopy: http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html
[4] Скачать скрипт для тестирования можно здесь: http://sypex.net/tmp/sxb.zip
[5] Источник: http://habrahabr.ru/post/234791/
Нажмите здесь для печати.