Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы указать на запуск и конец света для восстановления, определите --start-datetime
и --stop-datetime
опции для mysqlbinlog, в DATETIME
формат. Как пример, предположите, что точно в 10:00 20 апреля 2005
SQL-оператор выполнялся, который удалил большую таблицу. Чтобы восстановить таблицу и данные, Вы могли
восстановить резервное копирование предыдущей ночи, и затем выполнить следующую команду:
shell>mysqlbinlog --stop-datetime="2005-04-20 9:59:59" \
/var/log/mysql/bin.123456 | mysql -u root -p
Эта команда восстанавливает все данные вплоть до даты и время, данное --stop-datetime
опция. Если Вы не обнаруживали ошибочный SQL-оператор, который
вводился, до несколько часов спустя, Вы будете, вероятно, также хотеть восстановить действие, которое произошло
позже. Основанный на этом, Вы могли выполнить mysqlbinlog снова с датой начала и время, как так:
shell>mysqlbinlog --start-datetime="2005-04-20 10:01:00" \
/var/log/mysql/bin.123456 | mysql -u root -p
В этой команде будут повторно выполняться SQL-операторы, зарегистрированные с 10:01 на. Комбинация восстановления файла дампа предыдущей ночи и двух mysqlbinlog команд восстанавливает все вплоть до одной секунды до 10:00 и всего с 10:01 на.
Чтобы использовать этот метод восстановления момента времени, следует исследовать журнал, чтобы убедиться в точных временах, что определили для команд. Чтобы вывести на экран содержание файла журнала, не выполняя их, используйте эту команду:
shell> mysqlbinlog /var/log/mysql/bin.123456 >
/tmp/mysql_restore.sql
Затем откройтесь /tmp/mysql_restore.sql
файл с текстовым редактором, чтобы
исследовать это.
Исключая определенные изменения, определяя времена для mysqlbinlog не работает хорошо если многократные операторы, выполняемые одновременно как тот, который будет исключен.