Spec-Zone .ru
спецификации, руководства, описания, API

4.6.8.3. Используя mysqlbinlog, чтобы поддержать Двоичные Файлы журнала

По умолчанию mysqlbinlog читает двоичные файлы журнала и выводит на экран их содержание в текстовом формате. Это позволяет Вам исследовать события в пределах файлов более легко и повторно выполнить их (например, при использовании вывода как входной к mysql). mysqlbinlog может считать файлы журнала непосредственно из локальной файловой системы, или, с --read-from-remote-server опция, это может соединиться с сервером и запросить двоичное содержание журнала от того сервера. mysqlbinlog пишет текстовый вывод в свой стандартный вывод, или в файл, названный как значение --result-file=file_name опция, если та опция дается.

С MySQL 5.6 mysqlbinlog может считать двоичные файлы журнала и записать новые файлы, содержащие тот же самый контент — то есть, в текстовом формате, а не двоичном формате. Эта возможность включает, Вы, чтобы легко поддержать двоичный файл входите в систему его исходный формат. mysqlbinlog может сделать статическое резервное копирование, поддерживая ряд файлов журнала и останавливаясь, когда конец последнего файла достигается. Это может также сделать непрерывное ("живое") резервное копирование, оставаясь соединенным с сервером, когда это достигает конца последнего файла журнала и продолжающий копировать новые события, поскольку они сгенерированы. В непрерывной операции резервного копирования, mysqlbinlog выполнения до концов соединения (например, когда сервер выходит) или mysqlbinlog насильственно завершается. Когда соединение заканчивается, mysqlbinlog не ожидает и повторяет соединение, в отличие от ведомого сервера репликации. Чтобы продолжать живое резервное копирование после, сервер был перезапущен, следует также перезапустить mysqlbinlog.

Двоичное резервное копирование журнала требует, чтобы Вы вызвали mysqlbinlog с двумя опциями в минимуме:

Наряду с --read-from-remote-server, распространено определить другие опции: --host указывает, куда сервер работает, и Вы, возможно, также должны определить опции соединения такой как --user и --password.

Несколько других опций полезны в соединении с --raw:

Чтобы поддержать двоичные файлы журнала сервера с mysqlbinlog, следует определить имена файлов, которые фактически существуют на сервере. Если Вы не знаете имена, соединяетесь с сервером и используете SHOW BINARY LOGS оператор, чтобы видеть текущие имена. Предположите, что оператор производит этот вывод:

mysql> SHOW BINARY LOGS;+---------------+-----------+| Log_name      | File_size |+---------------+-----------+| binlog.000130 |     27459 || binlog.000131 |     13719 || binlog.000132 |     43268 |+---------------+-----------+

С той информацией можно использовать mysqlbinlog, чтобы поддержать двоичный журнал к текущему каталогу следующим образом (введите каждую команду в одну строку):

Именование Выходного файла

Без --raw, mysqlbinlog производит текстовый вывод и --result-file опция, если дано, определяет имя единственного файла, которому пишется весь вывод. С --raw, mysqlbinlog пишет один файл двоичного выхода для каждого файла журнала, переданного от сервера. По умолчанию mysqlbinlog пишет файлы в текущем каталоге с теми же самыми именами как исходные файлы журнала. Чтобы изменить имена выходного файла, используйте --result-file опция. В соединении с --raw, --result-file значение опции обрабатывается как префикс, который изменяет имена выходного файла.

Предположите, что серверу в настоящий момент назвали двоичные файлы журнала binlog.000999 и. Если Вы используете mysqlbinlog - сырые данные, чтобы поддержать файлы, --result-file опция производит имена выходного файла как показано в следующей таблице. Можно записать файлы в определенный каталог, начинаясь --result-file значение с путем к каталогу. Если --result-file значение состоит только из имени каталога, значение должно закончиться символом разделителя пути. Выходные файлы перезаписываются, если они существуют.

--result-file Опция Имена Выходного файла
--result-file=x xbinlog.000999 и
--result-file=/tmp/ /tmp/binlog.000999 и
--result-file=/tmp/x /tmp/xbinlog.000999 и

Пример: mysqldump + mysqlbinlog для Резервного копирования и Восстановления

Следующий пример описывает простой сценарий, который показывает, как использовать mysqldump и mysqlbinlog вместе, чтобы поддержать данные сервера и двоичный журнал, и как использовать резервное копирование, чтобы восстановить сервер, если потеря данных происходит. Пример предполагает, что сервер работает на узле host_name и его первый двоичный файл журнала называют binlog.000999. Введите каждую команду в одну строку.

Используйте mysqlbinlog, чтобы сделать непрерывное резервное копирование двоичного журнала:

mysqlbinlog --read-from-remote-server --host=host_name --raw  --stop-never binlog.000999

Используйте mysqldump, чтобы создать файл дампа как снимок данных сервера. Использовать --all-databases, --events, и --routines поддержать все данные, и --master-data=2 чтобы включать текущий двоичный файл регистрируют координаты в файле дампа.

mysqldump --host=host_name --all-databases --events --routines --master-data=2> dump_file

Выполните mysqldump команду периодически, чтобы создать более новые снимки как требующийся.

Если потеря данных происходит (например, если сервер отказывает), используйте новый файл дампа, чтобы восстановить данные:

mysql --host=host_name -u root -p < dump_file

Затем используйте двоичное резервное копирование журнала, чтобы повторно выполнить события, которые были записаны после координат, перечисленных в файле дампа. Предположите, что координаты в файле похожи на это:

-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.001002', MASTER_LOG_POS=27284;

Если новый поддержанный файл журнала называют binlog.001004, повторно выполните события журнала как это:

mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004  | mysql --host=host_name -u root -p

Вы могли бы счесть легче скопировать файлы резервных копий (выведите файл и двоичные файлы журнала) к узлу сервера, чтобы облегчить выполнять работу восстановления, или если MySQL не позволяет удаленный root доступ.