mysql-使用事件位置进行时间点恢复

Dcr 1年前 ⋅ 855 阅读

代替指定日期和时间,mysqlbinlog的 --start-position和 --stop-position选项 可用于指定日志位置。除了指定日志位置编号而不是日期以外,它们的工作方式与开始日期和停止日期选项相同。使用位置可以使您更精确地了解要恢复日志的哪一部分,尤其是在与损坏的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 -p

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

第一个命令将恢复所有事务,直到给出停止位置为止。第二个命令从给定的开始位置恢复所有事务,直到二进制日志结束。由于mysqlbinlog的输出 SET TIMESTAMP在记录每个SQL语句之前都包含语句,因此恢复的数据和相关的MySQL日志将反映执行事务的原始时间。

全部评论: 0

    我有话说:
    • OωO
    • |´・ω・)ノ
    • ヾ(≧∇≦*)ゝ
    • (☆ω☆)
    • (╯‵□′)╯︵┴─┴
    •  ̄﹃ ̄
    • (/ω\)
    • ∠( ᐛ 」∠)_
    • (๑•̀ㅁ•́ฅ)
    • →_→
    • ୧(๑•̀⌄•́๑)૭
    • ٩(ˊᗜˋ*)و
    • (ノ°ο°)ノ
    • (´இ皿இ`)
    • ⌇●﹏●⌇
    • (ฅ´ω`ฅ)
    • (╯°A°)╯︵○○○
    • φ( ̄∇ ̄o)
    • ヾ(´・ ・`。)ノ"
    • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    • (ó﹏ò。)
    • Σ(っ °Д °;)っ
    • ( ,,´・ω・)ノ"(´っω・`。)
    • ╮(╯▽╰)╭
    • o(*////▽////*)q
    • >﹏<
    • ( ๑´•ω•) "(ㆆᴗㆆ)
    • (。•ˇ‸ˇ•。)
    • 颜文字