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...