天天看點

MySQL,binlog2sql復原操作測試

Mysql 的復原操作測試(使用工具binlog2sql):

      復原操作:

  • 對于 delete 操作,我們從 binlog 提取出 delete 資訊,反向生成 insert 復原語句;
  • 對于 insert 操作,反向生成 delete 復原語句;
  • 對于 update 操作,根據資訊生成反向的 update 語句;

Mysql的配置要開啟以下選項:

[mysqld]

server_id = 1

log_bin = /usr/local/mysql/data/mysql-bin.log

max_binlog_size = 1G

binlog_format = row

binlog_row_image = full

在閃回的時候必須啟動 MySQL 服務,因為它是通過 BINLOG_DUMP 協定來擷取 binlog 内容,需要讀取server端 information_schema.COLUMNS 表,來擷取表結構的元資訊,才能拼接成 SQL 語句。是以需要給使用者提供的最小權限如下

測試中發現,flashback 模式隻支援 DML,DDL 不會輸出;而且 flashback 模式下,一次性處理的 binlog 不宜過大,不能超過記憶體大小(有待優化)。

DDL 語句,在整個測試過程中都是無法被復原的

解析出标準的SQL:

python binlog2sql.py  -h127.0.0.1 -P3306 -uroot -p'123456' -d test --start-file='mysql-bin.000019'

MySQL,binlog2sql復原操作測試

根據标準的SQL語句中的pos點,解析出自己所需的復原SQL。

python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uroot -p'123456' -dtest  --start-file='mysql-bin.000021' --start-position=94591569 --stop-position=94591993

繼續閱讀