• 增量备份和恢复


    Point-in-Time (Incremental) Recovery Using the Binary Log 基于时间点使用Binary log的增量恢复

    7.5.1 Point-in-Time Recovery Using Event Times 使用Event Times 基于时间点恢复
    7.5.2 Point-in-Time Recovery Using Event Positions 使用Event Positions 基于时间点恢复

    基于时间点的恢复把服务器带到全备份后最近的时间:

    根据这些原则的时间恢复点:

    1.时间点恢复的数据源是通过binary log 文件产生的增量数据,因此 server必须带–log-bin选项来启用binlog.

    从binary log 恢复数据,你必须知道当前binlog 文件的名字和位置。默认, server 创建binary log 在data目录,

    路径名字可以通过–log-bin选项制定,把文件放在不同的位置。

    列出所有的binary log 文件,使用语句:
    mysql> SHOW BINARY LOGS;
    +——————+———–+
    | Log_name | File_size |
    +——————+———–+
    | mysql-bin.000001 | 260861478 |
    | mysql-bin.000002 | 143 |
    | mysql-bin.000003 | 1717 |
    | mysql-bin.000004 | 430 |
    | mysql-bin.000005 | 120 |
    +——————+———–+
    5 rows in set (0.18 sec)

    查看当前的binary log文件,执行下面的语句:

    mysql> SHOW MASTER STATUS;
    +——————+———-+————–+——————+——————-+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +——————+———-+————–+——————+——————-+
    | mysql-bin.000005 | 120 | | | |
    +——————+———-+————–+——————+——————-+
    1 row in set (0.02 sec)

    1.mysqlbinlog 功能 转换binary log 文件里的events 从2进制的格式转为text,可以查询和被执行。

    mysqlbinlog 有选项用于选择binary log 的章节基于evnet times 或者evnets posistion

    2.执行binary log 的events 的数据修改 表示 要重做,这个可以在给定的时间范围内的数据变化的恢复,

    从二进制日志执行事件,使用MySQL客户端程序mysqlbinlog输出,从binary log 执行events 使用:

    shell> mysqlbinlog binlog_files | mysql -u root -p

    3.查看日志内容可以使有用的,当你需要确定event times 或者位置来选择部分的log 内容,查看log的events,

    发送mysqlbinlog的输出到一个分页程序

    shell> mysqlbinlog binlog_files | more

    另外,将输出保存在文件中,并在文本编辑器中查看该文件

    shell> mysqlbinlog binlog_files > tmpfile
    shell> … edit tmpfile …

    4.保存在文件中的输出是有用的, 作为一个初步的执行日志内容,比如意外的DROP DATABASE.你可以删除文件中的任何语句

    不被执行, 编辑文件后,执行如下内容:

    shell> mysql -u root -p < tmpfile

    如果你有多个binary log 要执行,最安全的方式是使用一个单独的连接,下面是一个例子,演示了什么可能是不安全的

    shell> mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
    shell> mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!

    使用不同的连接处理2进制文件会导致文件 ,如果第一个log 文件包含一个CREATE TEMPORARY TABLE 语句,

    第2个日志包含到了一个使用临时表的语句,会导致问题。当第一个mysql 进程终止, server 删除临时表,

    第2个mysql进程尝试使用表,server 报告”unkown table”

    为了避免类似的问题,使用一个连接来执行你想处理的所有二进制日志的内容。这是一个这样做的方法:

  • 相关阅读:
    Python_函数
    Python中元组,列表,字典的区别
    Oracle 在字符串中输入单引号或特殊字符
    Visual Studio Code管理MySQL
    Python .pyc的编译和反编译
    Django 模板变量之 forloop
    浅谈Django基础(HttpResponse、render、redirect)
    Django 使用form表单提交数据报错: Forbidden (403)
    Django出错提示TemplateDoesNotExist at /
    使用 vs code 创建 Django 项目
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351505.html
Copyright © 2020-2023  润新知