Spec-Zone .ru
спецификации, руководства, описания, API
|
По умолчанию mysqlbinlog читает двоичные файлы журнала и выводит на экран их
содержание в текстовом формате. Это позволяет Вам исследовать события в пределах файлов более легко и повторно
выполнить их (например, при использовании вывода как входной к mysql). mysqlbinlog может считать файлы журнала непосредственно из
локальной файловой системы, или, с --read-from-remote-server
опция, это может соединиться с сервером и запросить
двоичное содержание журнала от того сервера. mysqlbinlog пишет текстовый вывод в свой стандартный вывод,
или в файл, названный как значение --result-file=
опция, если
та опция дается. file_name
mysqlbinlog может считать двоичные файлы журнала и записать новые файлы, содержащие тот же самый контент — то есть, в текстовом формате, а не двоичном формате. Эта возможность включает, Вы, чтобы легко поддержать двоичный файл входите в систему его исходный формат. mysqlbinlog может сделать статическое резервное копирование, поддерживая ряд файлов журнала и останавливаясь, когда конец последнего файла достигается. Это может также сделать непрерывное ("живое") резервное копирование, оставаясь соединенным с сервером, когда это достигает конца последнего файла журнала и продолжающий копировать новые события, поскольку они сгенерированы. В непрерывной операции резервного копирования, mysqlbinlog выполнения до концов соединения (например, когда сервер выходит) или mysqlbinlog насильственно завершается. Когда соединение заканчивается, mysqlbinlog не ожидает и повторяет соединение, в отличие от ведомого сервера репликации. Чтобы продолжать живое резервное копирование после, сервер был перезапущен, следует также перезапустить mysqlbinlog.
Двоичное резервное копирование журнала требует, чтобы Вы вызвали mysqlbinlog с двумя опциями в минимуме:
--read-from-remote-server
(или -R
) опция
говорит mysqlbinlog соединяться с сервером и запрашивать
свой двоичный журнал. (Это подобно ведомому серверу репликации, соединяющемуся с его главным сервером.)
--raw
опция говорит mysqlbinlog писать необработанный (двоичный) вывод,
не текстовый вывод.
Наряду с --read-from-remote-server
,
распространено определить другие опции: --host
указывает, куда сервер работает, и Вы, возможно, также должны
определить опции соединения такой как --user
и --password
.
Несколько других опций полезны в соединении с --raw
:
--stop-never
: Останьтесь соединенными с сервером после достижения конца
последнего файла журнала и продолжайте читать новые события.
--stop-never-slave-server-id=
:
ID сервера, о котором mysqlbinlog сообщает серверу когда id
--stop-never
используется. Значение по умолчанию 65535. Это может
использоваться, чтобы избежать конфликта с ID ведомого сервера или другого процесса mysqlbinlog. См. Раздел
4.6.8.4, "Определение mysqlbinlog ID Сервера"
.
--result-file
: Префикс для имен выходного файла, как описано позже.
Чтобы поддержать двоичные файлы журнала сервера с mysqlbinlog, следует определить имена файлов, которые фактически
существуют на сервере. Если Вы не знаете имена, соединяетесь с сервером и используете SHOW BINARY LOGS
оператор, чтобы видеть текущие имена. Предположите, что
оператор производит этот вывод:
mysql> SHOW BINARY LOGS;
+---------------+-----------+| Log_name | File_size |+---------------+-----------+| binlog.000130 | 27459 || binlog.000131 | 13719 || binlog.000132 | 43268 |+---------------+-----------+
С той информацией можно использовать mysqlbinlog, чтобы поддержать двоичный журнал к текущему каталогу следующим образом (введите каждую команду в одну строку):
Сделать статическое резервное копирование binlog.000130
через binlog.000132
, используйте
любую из этих команд:
mysqlbinlog --read-from-remote-server --host=host_name
--raw binlog.000130 binlog.000131 binlog.000132mysqlbinlog --read-from-remote-server --host=host_name
--raw --to-last-log binlog.000130
Первая команда определяет каждое имя файла явно. Вторые имена только первый файл и использование --to-last-log
прочитывать последнее. Различие между этими командами - это, если сервер, оказывается, открывается
binlog.000133
прежде, чем mysqlbinlog достигает конца binlog.000132
, первая команда не будет читать это, но вторая команда
будет.
Сделать живое резервное копирование, в котором mysqlbinlog запускается с binlog.000130
чтобы скопировать существующие файлы журнала, затем остается соединенным с копией новые события,
поскольку сервер генерирует их:
mysqlbinlog --read-from-remote-server --host=host_name
--raw --stop-never binlog.000130
С --stop-never
,
не необходимо определить --to-last-log
читать в последний файл журнала, потому что та опция
подразумевается.
Без --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 вместе, чтобы поддержать данные сервера и двоичный
журнал, и как использовать резервное копирование, чтобы восстановить сервер, если потеря данных происходит.
Пример предполагает, что сервер работает на узле 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
доступ.