如何利用 Myflash 解析 binlog

2021-09-20 12:00:30 字數 3485 閱讀 5915

1) 首先需要準備好 myflash 測試環境

這裡的測試環境是 redhat linux 6.5,直接解壓 myflash 無法執行,發現 glibc 版本不匹配,需要 2.14 版本。因此首先需要編譯新版本的 glibc。

# wget 

# wget

# tar -xvf glibc-2.14.tar.gz

# tar -xvf glibc-ports-2.14.tar.gz

# mv glibc-ports-2.14 glibc-2.14/ports

# mkdir glibc-build-2.14

# cd glibc-build-2.14/

–編譯

# ../glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# make

–拷貝 libc.so.6 到 /lib64

[root@killdb glibc-build-2.14]# cp libc.so.6 /lib64/libc-2.14.so
–刪除原來的 libc

[root@killdb lib64]# rm -rf /lib64/libc.so.6

rm: error while loading shared libraries: libc.so.6: cannot open shared object file: no such file or directory

[root@killdb lib64]# export ld_preload=/lib64/libc-2.14.so

[root@killdb lib64]# rm -rf /lib64/libc.so.6

[root@killdb lib64]# ln -s /lib64/libc-2.14.so /lib64/libc.so.6

–make install

# make install
–確認是否 ok

可以看到已經可以了,支援最新的 glibc_2.14 了。下面開始測試 myflash。

2) 如下是針對 myflash 的簡單測試過程

–建立測試表

mysql> create table `test` (

-> `id` int(11) not null auto_increment,

-> `name` varchar(50) not null,

-> primary key (`id`)

-> ) auto_increment=1000

-> ;

–建立測試儲存過程模擬 10 萬條測試資料

mysql> delimiter $$

mysql> create procedure pro_test()

-> begin

-> declare id int;

-> set id = 100000;

-> while id>0 do

-> insert into test(name) values ('www.killdb.com');

-> set id = id-1;

-> end while;

-> end $$

query ok, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call pro_test();

query ok, 1 row affected (44.21 sec)

–模擬刪除 5 萬條資料

mysql> delete from test limit 50000;

query ok, 50001 rows affected (0.54 sec)

mysql> select count(1) from test;

+----------+

| count(1) |

+----------+

| 50001 |

+----------+

1 row in set (0.01 sec)

mysql>

–利用 myflash 解析 binlog這裡簡單的修改了乙個小指令碼,實現了半自動化。

[root@killdb binary]# ./flashback.sh

[root@killdb binary]# cat flashback.sh

#!/bin/bash

file_path=/root/myflash/binary/

cd /root/myflash/binary

./flashback --databasenames enmotech --tablenames test --sqltypes delete --binlogfilenames=/opt/mysql/mysql-bin.000003

./flashback --maxsplitsize=15 --binlogfilenames=binlog_output_base.flashback

arr=`find $ -name "binlog_output_base.0*"|sort -n`

for i in $

domysqlbinlog $ | mysql -s /opt/mysql/mysql.sock

done

–驗證資料

mysql> select count(1) from test;

+----------+

| count(1) |

+----------+

| 100001 |

+----------+

1 row in set (0.02 sec)

可以看到資料很容易就恢復出來了,效率非常高。比 binsql2sql 要高很多。整個恢復過程大概 1~2 秒。不僅是 delete,實際對於 insert 和 update 的 dml 操作,都是支援的。

原文發布時間為:2018-04-25

如何更好地利用大資料實現bi商業智慧型工具

近年來,隨著企業成本大幅 各行業都在想方設法的縮減成本。除了縮減員工成本之外,與企業運營成本最為相關的商業智慧型行業成為了關注的焦點。據悉,到2020年,全球的bi商業智慧型工具市場容量預計達到228億美元。那麼中國的bi發展如何?bi該如何給企業賦能?未來大資料和bi的發展方向又在哪兒?永洪科技是...

利用ACE Get Opt解析命令

ace get opt通常用來解析程式的命令列引數,也可結合ace argv類解析其他的字串命令.ace tchar szcmd ace text ping l 100 n 25 w 10000 分解字串為引數向量,ace argv的argc 成員函式返回向量數目,argv 返回向量陣列 ace a...

利用ACE Get Opt解析命令

ace get opt通常用來解析程式的命令列引數,也可結合ace ar 類解析其他的字串命令.ace tchar szcmd ace text ping l 100 n 25 w 10000 分解字串為引數向量,ace ar 的argc 成員函式返回向量數目,ar 返回向量陣列 ace ar ar...