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

7.5.2. Восстановление момента времени Используя Позиции События

Вместо того, чтобы определить даты и времена, --start-position и --stop-position опции для mysqlbinlog могут использоваться для того, чтобы определить позиции журнала. Они работают то же самое запуском и опциями даты остановки, за исключением того, что Вы определяете числа позиции журнала, а не даты. Используя позиции может позволить Вам быть более точными, о которой части журнала восстановиться, особенно если много транзакций произошли в то же самое время как разрушительный SQL-оператор. Чтобы определить числа позиции, выполните mysqlbinlog для диапазона времен около времени, когда нежелательная транзакция выполнялась, но перенаправьте результаты к текстовому файлу для исследования. Это может быть сделано как так:

shell> mysqlbinlog --start-datetime="2005-04-20
        9:55:00" \         --stop-datetime="2005-04-20
        10:05:00" \         /var/log/mysql/bin.123456 >
        /tmp/mysql_restore.sql

Эта команда создает небольшой текстовый файл в /tmp каталог, который содержит SQL-операторы во время, когда вредный SQL-оператор выполнялся. Откройте этот файл с текстовым редактором и ищите оператор, который Вы не хотите повторять. Определите позиции в двоичном журнале для остановки и возобновления восстановления и сделайте примечание их. Позиции маркируются как log_pos сопровождаемый числом. После восстановления предыдущего файла резервной копии используйте числа позиции, чтобы обработать двоичный файл журнала. Например, Вы использовали бы команды что-то как они:

shell> mysqlbinlog --stop-position=368312
        /var/log/mysql/bin.123456 \         | mysql -u root
        -pshell> mysqlbinlog --start-position=368315
        /var/log/mysql/bin.123456 \         | mysql -u root
        -p

Первая команда восстанавливает все транзакции вплоть до данной позиции остановки. Вторая команда восстанавливает все транзакции со стартовой позиции, данной до конца двоичного журнала. Поскольку вывод mysqlbinlog включает SET TIMESTAMP операторы перед каждым записанным SQL-оператором, восстановленные данные и связанные журналы MySQL отразят исходные времена, в которые выполнялись транзакции.