首页 > 其他分享 >工具分享丨数据闪回工具 MyFlash

工具分享丨数据闪回工具 MyFlash

时间:2024-11-09 18:10:36浏览次数:1  
标签:闪回 -- 回滚 bk MyFlash 工具 com order wAP

在当今数字化的时代,数据已经成为了企业和个人最宝贵的资产之一。数据不仅仅是简单的信息集合,它更是决策的依据、业务的支撑以及创新的源泉。

数据丢失是一种极其危险且令人头疼的情况。想象一下,企业因系统故障、人为误操作或遭受恶意攻击而丢失了关键的业务数据,这可能导致业务中断、客户流失,甚至面临法律风险和声誉损害。

在这样的背景下,有效的数据管理和保护工具就显得尤为重要。在之前的社区文章中,有介绍过一款闪回工具 binlog2sql 但今天介绍的闪回工具相对已有的回滚工具,其增加了更多的过滤选项,性能优于 binlog2sql、mysqlbinlog

binlog2sql 工具:技术分享 | 测试 git 上 2500 星的闪回小工具
除使用工具还可以手动恢复数据,详见推文:

误删 GreatSQL 数据?别慌,Binlog 来帮忙
MyFlash 工具介绍
MyFlash 是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具。该工具通过解析 v4 版本的 binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。

可以针对实例、数据库、表及指定的 DML 语句进行回滚
如果 binlog 日志保留,可以闪回到任意时间
该工具开源地址为:https://github.com/Meituan-Dianping/MyFlash

限制
binlog 格式必须为 row,且 binlog_row_image=full

仅支持 MySQL5.6 与 MySQL5.7

只能回滚 DML(增、删、改)

介绍说只支持 5.6 与 5.7 版本,但在 GreatSQL 8.0.32-26 版本测试中也可用

安装方法
拉取工具仓库,并编译安装

$ git clone https://github.com/Meituan-Dianping/MyFlash.git
动态编译链接
$ gcc -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback
若不想每次去重新编译,可以选择使用静态链接,但是该方法需要知道 glib 库的版本和位置,因此对于每台机器略有不同,请谨慎使用

静态编译链接
$ gcc -w -g pkg-config --cflags glib-2.0 source/binlogParseGlib.c -o binary/flashback /usr/lib64/libglib-2.0.a -lrt
编译完成后,在 binary 目录下有可执行文件 flashback

参数介绍
$ ./binary/flashback -help
Usage:
flashback [OPTION?]

Help Options:
-h, --help Show help options

Application Options:
--databaseNames databaseName to apply. if multiple, seperate by comma(,)
--tableNames tableName to apply. if multiple, seperate by comma(,)
--tableNames-file tableName to apply. if multiple, seperate by comma(,)
--start-position start position
--stop-position stop position
--start-datetime start time (format %Y-%m-%d %H:%M:%S)
--stop-datetime stop time (format %Y-%m-%d %H:%M:%S)
--sqlTypes sql type to filter . support INSERT, UPDATE ,DELETE. if multiple, seperate by comma(,)
--maxSplitSize max file size after split, the uint is M
--binlogFileNames binlog files to process. if multiple, seperate by comma(,)
--outBinlogFileNameBase output binlog file name base
--logLevel log level, available option is debug,warning,error
--include-gtids gtids to process. if multiple, seperate by comma(,)
--include-gtids-file gtids to process. if multiple, seperate by comma(,)
--exclude-gtids gtids to skip. if multiple, seperate by comma(,)
--exclude-gtids-file gtids to skip. if multiple, seperate by comma(,)
databaseNames:指定需要回滚的数据库名。多个数据库可以用 "," 隔开。如果不指定该参数,相当于指定了所有数据库。
tableNames:指定需要回滚的表名。多个表可以用 "," 隔开。如果不指定该参数,相当于指定了所有表。
start-position:指定回滚开始的位置。如不指定,从文件的开始处回滚。请指定正确的有效的位置,否则无法回滚。
stop-position:指定回滚结束的位置。如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚。
start-datetime:指定回滚的开始时间。注意格式必须是 % Y-% m-% d % H:% M:% S。如不指定,则不限定时间。
stop-datetime:指定回滚的结束时间。注意格式必须是 % Y-% m-% d % H:% M:% S。如不指定,则不限定时间。
sqlTypes:指定需回滚的 SQL 类型。目前支持的过滤类型是 INSERT, UPDATE ,DELETE。多个类型可以用 "," 隔开。
maxSplitSize:一旦指定该参数,对文件进行固定尺寸的分割(单位为 M),过滤条件有效,但不进行回滚操作。该参数主要用来将大的 binlog 文件切割,防止单次应用的 binlog 尺寸过大,对线上造成压力。
binlogFileNames:指定需要回滚的 binlog 文件,目前只支持单个文件,后续会增加多个文件支持。经测试已支持多个 binlog 文件。
outBinlogFileNameBase:指定输出的 binlog 文件前缀,如不指定,则默认为 binlog_output_base.flashback。
logLevel:仅供开发者使用,默认级别为 error 级别。在生产环境中不要修改这个级别,否则输出过多。
include-gtids:指定需要回滚的 gtid, 支持 gtid 的单个和范围两种形式。
exclude-gtids:指定不需要回滚的 gtid,用法同 include-gtids。
最佳实践
此次测试环境情况如下:

数据库:GreatSQL 8.0.32-26
操作系统:Linux debian 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64 GNU/Linux
创建一个 test 库和 students 表,并插入 5 条数据

greatsql> CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT,
grade VARCHAR(10),
city VARCHAR(50)
);

greatsql> INSERT INTO students (first_name, last_name, age, grade, city) VALUES
('Alice', 'Smith', 18, 'Grade 12', 'New York'),
('Bob', 'Johnson', 17, 'Grade 11', 'Los Angeles'),
('Charlie', 'Williams', 16, 'Grade 10', 'Chicago'),
('David', 'Brown', 15, 'Grade 9', 'Houston'),
('Eve', 'Davis', 17, 'Grade 11', 'Miami');
模拟误操作将 age 列全部修改为 0

greatsql> UPDATE students SET age = 0;
greatsql> SELECT * FROM students;
+----+------------+-----------+------+----------+-------------+
| id | first_name | last_name | age | grade | city |
+----+------------+-----------+------+----------+-------------+
| 1 | Alice | Smith | 0 | Grade 12 | New York |
| 2 | Bob | Johnson | 0 | Grade 11 | Los Angeles |
| 3 | Charlie | Williams | 0 | Grade 10 | Chicago |
| 4 | David | Brown | 0 | Grade 9 | Houston |
| 5 | Eve | Davis | 0 | Grade 11 | Miami |
+----+------------+-----------+------+----------+-------------+
5 rows in set (0.00 sec)
记录误操作时间,并使用 FLUSH LOGS 换一个 Binary Log 记录,查看 Binary Log 文件名

greatsql> SELECT current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2024-08-08 14:41:05 |
+---------------------+

greatsql> FLUSH LOGS;
Query OK, 0 rows affected (0.06 sec)

greatsql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000006 | 2146 | No |
| binlog.000007 | 197 | No |
+---------------+-----------+-----------+
要用闪回需要注意闪回的时间点,例如这次的需求是,闪回到 INSERT INTO 5 条语句后

$ mysqlbinlog --no-defaults -v binlog.000006

发生误操作的时间14:33:56及开始位置1359和结束位置2102

MyFlash 解析闪回文件

$ ./flashback --databaseNames=test --tableNames=students --start-position='1359' --stop-position='2102' --binlogFileNames=/data/greatsql/binlog.000006 --outBinlogFileNameBase=students
如果确定误操作类型也可以加上 --sqlTypes=UPDATE/INSERT/DELETE(多类型用 ',' 隔开)

生成文件 students.flashback 并查看

$ mysqlbinlog --no-defaults --base64-output=decode-rows -v students.flashback

可以看到文件中将 UPDATE 语句进行回滚

... 节选 ...

UPDATE test.students

WHERE

@1=1

@2='Alice'

@3='Smith'

@4=0

@5='Grade 12'

@6='New York'

SET

@1=1

@2='Alice'

@3='Smith'

@4=18

@5='Grade 12'

@6='New York'

执行闪回恢复

$ mysqlbinlog --no-defaults --skip-gtids students.flashback |mysql -uroot -p
再次查看数据,已经恢复

greatsql> SELECT * FROM students;
+----+------------+-----------+------+----------+-------------+
| id | first_name | last_name | age | grade | city |
+----+------------+-----------+------+----------+-------------+
| 1 | Alice | Smith | 18 | Grade 12 | New York |
| 2 | Bob | Johnson | 17 | Grade 11 | Los Angeles |
| 3 | Charlie | Williams | 16 | Grade 10 | Chicago |
| 4 | David | Brown | 15 | Grade 9 | Houston |
| 5 | Eve | Davis | 17 | Grade 11 | Miami |
+----+------------+-----------+------+----------+-------------+
5 rows in set (0.00 sec)
回滚该文件中指定语句

回滚该文件中所有 INSTER 语句,UPDATE/DELETE 语句也同理

$ ./flashback --sqlTypes='INSERT' --binlogFileNames=binlog.000006
mysqlbinlog students.flashback | mysql -h -u -p
回滚大文件

该工具中有 maxSplitSize 参数,可用于切割大文件

回滚

$ ./flashback --binlogFileNames=binlog.000006

切割大文件

$ ./flashback --maxSplitSize=1 --binlogFileNames=students.flashback

应用

$ mysqlbinlog students.flashback.000001 | mysql -h -u -p
...
$ mysqlbinlog students.flashback. | mysql -h -u -p
性能测试
和社区上次推荐的 binlog2sql 测试下性能,看哪个恢复速度快

创建 orders 表

CREATE TABLE orders (
order_id int NOT NULL AUTO_INCREMENT,
customer_id int NOT NULL,
product_id int NOT NULL,
order_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
order_status char(10) NOT NULL DEFAULT 'pending',
quantity int NOT NULL,
order_amount decimal(10,2) NOT NULL,
shipping_address varchar(255) NOT NULL,
billing_address varchar(255) NOT NULL,
order_notes varchar(255) DEFAULT NULL,
PRIMARY KEY (order_id),
KEY idx_customer_id (customer_id),
KEY idx_product_id (product_id),
KEY idx_order_date (order_date),
KEY idx_order_status (order_status)
) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
bk.szlcdpq.com/dcwl/0wSwf.Wap
bk.62nsfs.com/beyn/fX8Xw.WaP
bk.gzysart.com/jasl/f8W4d.wAP
bk.vwotech.com/jasl/D30eq.wAP
bk.szlcdpq.com/meyl/f8W4d.wAP
bk.zcyxsm.com/0wSwf.Wap
bk.jyh01.com/deyz/0wSwf.Wap
bk.yjh9988.com/c4FSw.wAp
bk.gzysart.com/meyl/f8W4d.wAP
bk.51jyo.com/D30eq.wAP
bk.testoppo.com/jasl/f8W4d.wAP
bk.wekochat.com/meyl/c4FSw.wAp
bk.51jyo.com/beyn/fX8Xw.WaP
bk.huanbao580.com/jasl/c4FSw.wAp
bk.jyh01.com/D30eq.wAP
bk.gzysart.com/f8W4d.wAP
bk.shuixitech.com/deyz/0wSwf.Wap
bk.62nsfs.com/f8W4d.wAP
bk.huaxinlighting.com/dcwl/c4FSw.wAp
bk.testoppo.com/asd7/0wSwf.Wap
bk.zjbhzs.com/meyl/fX8Xw.WaP
bk.gzysart.com/cliq/0wSwf.Wap
bk.sdymsxfh.com/dcwl/0wSwf.Wap
bk.zjbhzs.com/cliq/0wSwf.Wap
bk.62nsfs.com/fX8Xw.WaP
bk.51jyo.com/jasl/fX8Xw.WaP
bk.huaxinlighting.com/c5W4R.WAp
bk.szlcdpq.com/c5W4R.WAp
bk.testoppo.com/cliq/D30eq.wAP
bk.re-shake.com/cliq/f8W4d.wAP
bk.sdymsxfh.com/cliq/D30eq.wAP
bk.51jyo.com/jasl/f8W4d.wAP
bk.lovehua99.com/fX8Xw.WaP
bk.lovehua99.com/beyn/f8W4d.wAP
bk.re-shake.com/dcwl/c4FSw.wAp
bk.shuixitech.com/meyl/0wSwf.Wap
bk.huanbao580.com/cliq/c5W4R.WAp
bk.re-shake.com/meyl/c5W4R.WAp
bk.bctiantuo.com/meyl/D30eq.wAP
bk.jyh01.com/beyn/c5W4R.WAp
bk.wekochat.com/cliq/0wSwf.Wap
bk.szlcdpq.com/jasl/f8W4d.wAP
bk.gzysart.com/meyl/fX8Xw.WaP
bk.51yjjy.com/jasl/0wSwf.Wap
bk.huaxinlighting.com/0wSwf.Wap
bk.bjyins.com/beyn/0wSwf.Wap
bk.zcyxsm.com/cliq/D30eq.wAP
bk.re-shake.com/fX8Xw.WaP
bk.gzysart.com/D30eq.wAP
bk.jinduoceramics.com/deyz/c4FSw.wAp
bk.chinabgroup.com/beyn/c5W4R.WAp
bk.testoppo.com/fX8Xw.WaP
bk.vwotech.com/c5W4R.WAp
bk.jiaforhui.com/fX8Xw.WaP
bk.shuixitech.com/deyz/f8W4d.wAP
bk.re-shake.com/f8W4d.wAP
bk.zjbhzs.com/asd7/0wSwf.Wap
bk.kfamaw.com/0wSwf.Wap
bk.testoppo.com/cliq/0wSwf.Wap
bk.testoppo.com/beyn/0wSwf.Wap
bk.zcyxsm.com/jasl/c4FSw.wAp
bk.lovehua99.com/deyz/fX8Xw.WaP
bk.jiaforhui.com/jasl/f8W4d.wAP
bk.jiaforhui.com/jasl/c4FSw.wAp
bk.wekochat.com/dcwl/c4FSw.wAp
bk.szlcdpq.com/c5W4R.WAp
bk.szlcdpq.com/dcwl/c5W4R.WAp
bk.zcyxsm.com/deyz/c5W4R.WAp
bk.tanjiuspace.com/asd7/c5W4R.WAp
bk.lovehua99.com/cliq/c4FSw.wAp
bk.shuixitech.com/beyn/0wSwf.Wap
bk.xintiao78.com/beyn/0wSwf.Wap
bk.testoppo.com/meyl/c5W4R.WAp
bk.testoppo.com/asd7/c4FSw.wAp
bk.hndsedu.com/meyl/c5W4R.WAp
bk.yjh9988.com/deyz/c5W4R.WAp
bk.jinduoceramics.com/jasl/c4FSw.wAp
bk.vwotech.com/D30eq.wAP
bk.qcbysq.com/deyz/c4FSw.wAp
bk.sdymsxfh.com/0wSwf.Wap
bk.testoppo.com/deyz/c5W4R.WAp
bk.huaxinlighting.com/beyn/c4FSw.wAp
bk.jyh01.com/0wSwf.Wap
bk.huaxinlighting.com/meyl/c5W4R.WAp
bk.wekochat.com/asd7/c5W4R.WAp
bk.shuixitech.com/asd7/D30eq.wAP
bk.shplcchina.com/meyl/D30eq.wAP
bk.chinabgroup.com/dcwl/D30eq.wAP
bk.sdymsxfh.com/cliq/c4FSw.wAp
bk.yjh9988.com/jasl/c4FSw.wAp
bk.huaxinlighting.com/asd7/D30eq.wAP
bk.zcyxsm.com/f8W4d.wAP
bk.hndsedu.com/meyl/fX8Xw.WaP
bk.re-shake.com/asd7/fX8Xw.WaP
bk.hndsedu.com/jasl/D30eq.wAP
bk.kfamaw.com/deyz/D30eq.wAP
bk.qcbysq.com/dcwl/f8W4d.wAP
bk.jiaforhui.com/c4FSw.wAp
bk.huanbao580.com/beyn/fX8Xw.WaP
bk.xintiao78.com/deyz/fX8Xw.WaP

创建 Shell 脚本,并插入 110504 条数据

!/bin/bash

插入的订单数量

num_orders=110504 # 你可以根据需要更改插入的数量

循环插入数据

for ((i=1; i<=$num_orders; i++))
do
customer_id=$((RANDOM % 1000 + 1)) # 随机生成1到1000的顾客ID
product_id=$((RANDOM % 100 + 1)) # 随机生成1到100的产品ID
order_date=$(date +"%Y-%m-%d %H:%M:%S") # 当前时间作为订单日期
order_status="pending" # 默认订单状态为pending
quantity=$((RANDOM % 5 + 1)) # 随机生成1到5的数量
order_amount=$(echo "scale=2; $((RANDOM % 500 + 50)) + $((RANDOM % 99)) / 100.0" | bc) # 随机生成50到550之间的订单金额,保留两位小数
shipping_address="Address $i, City $((RANDOM % 10 + 1)), Country" # 构造随机的配送地址
billing_address="Billing Address $i, City $((RANDOM % 10 + 1)), Country" # 构造随机的账单地址
order_notes="Order notes for order $i" # 每个订单有不同的订单备注
# 构造SQL插入语句
insert_query="INSERT INTO orders (customer_id, product_id, order_date, order_status, quantity, order_amount, shipping_address, billing_address, order_notes) VALUES ($customer_id, $product_id, '$order_date', '$order_status', $quantity, $order_amount, '$shipping_address', '$billing_address', '$order_notes');"

# 执行插入语句
mysql -uroot -p test -e "$insert_query"

done
echo "$num_orders 条订单数据插入完成。"
退出后执行脚本,并查看数据量

执行脚本

$ bash insert_students.sh

greatsql> SELECT COUNT() FROM orders;
+----------+
| count(
) |
+----------+
| 110504 |
+----------+
1 row in set (0.01 sec)
MyFlash 测试
模拟误操作删除数据

误操作删除数据

greatsql> DELETE FROM orders WHERE 1=1;
Query OK, 110504 rows affected (1.59 sec)

记录误操作时间

greatsql> SELECT current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2024-08-08 17:51:10 |
+---------------------+
1 row in set (0.00 sec)

启用新 binlog 日志

greatsql> FLUSH LOGS;
Query OK, 0 rows affected (0.06 sec)

查看旧 binlog 日志

greatsql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000008 | 101319050 | No |
| binlog.000009 | 197 | No |
+---------------+-----------+-----------+
2 rows in set (0.01 sec)
查看 Binary Log 日志,找到误操作位置

$ mysqlbinlog --no-defaults -v binlog.000008

开始位置 86092119 时间 17:50:52 结束 101319006

使用 MyFlash 生成恢复的 Binary Log

$ time ./flashback --databaseNames=test --tableNames=orders --start-position='86092119' --stop-position='101319006' --binlogFileNames=/data/greatsql/binlog.000008 --outBinlogFileNameBase=orders

real 0m0.138s
user 0m0.029s
sys 0m0.065s
查看生成的文件,并使用 mysqlbinlog 回滚恢复

$ ls -l
-rwxr-xr-x 1 root root 957744 Aug 5 11:26 flashback
-rw-r--r-- 1 root root 15430854 Aug 9 10:52 orders.flashback

闪回恢复
$ mysqlbinlog --no-defaults --skip-gtids orders.flashback |mysql -uroot -p

real 0m9.414s
user 0m0.433s
sys 0m0.082s
查看数据恢复情况

greatsql> SELECT COUNT() FROM orders;
+----------+
| count(
) |
+----------+
| 110504 |
+----------+
1 row in set (0.01 sec)
用切割的方式导入

每个文件设定大小为 1M (可按需求自定义)

$ ./flashback --maxSplitSize=1 --binlogFileNames=orders.flashback

此时就会多出很多 binlog_output_base 文件

-rw-r--r-- 1 root root 1.1M Aug 9 13:55 binlog_output_base.000001
... 省略 ...
-rw-r--r-- 1 root root 640K Aug 9 13:55 binlog_output_base.000015
切割后的文件名无法修改,只能叫 binlog_output_base

如果切割的文件多了,需要写个小脚本导入这些切割后的文件

$ vim batch_rollback.sh

循环导入每个文件

for i in $(seq -w 1 15); do
FILENAME="binlog_output_base.0000$i"
mysqlbinlog --no-defaults --skip-gtids $FILENAME | mysql -uroot -p
done
运行 batch_rollback.sh 导入

$ time batch_rollback.sh
real 0m9.071s
user 0m0.454s
sys 0m0.200s

greatsql> SELECT COUNT() FROM orders;
+----------+
| count(
) |
+----------+
| 110504 |
+----------+
1 row in set (0.02 sec)
根据 MyFlash 官方的测试结果和 mysqlbinlog、binlog2sql 两款工具对比,恢复 100 万条数据

MyFlash 耗时 2.774s
mysqlbinlog 耗时 6.217s
binlog2sql 耗时 581.319s
总结
MyFlash 使用较方便,回滚耗时短,大数据量恢复可以使用该工具
binlog2sql 需要 Python 环境,可能会造成字符问题,MyFlash 比较稳定

标签:闪回,--,回滚,bk,MyFlash,工具,com,order,wAP
From: https://www.cnblogs.com/XX-SHE/p/18537060

相关文章

  • pcre2grep 是一个在 Windows 平台上也可以使用的命令行工具,属于 PCRE2 (Perl Compatib
    GitHub-mbuilov/grep-windows:InstructionsforbuildingGnuGrepandpcre2grepasnativewindowsapplications C:\Users\Administrator\Downloads>pcre2grep-10.44-x64Usage:pcre2grep[-AaBCcDdEeFfHhIilLMmNnOoPqrstuUVvwxZ][longoptions][pattern]......
  • SpringAMQP — RabbitMQ操作工具
    1.SpringAMQP简介SpringAMQP(SpringforAdvancedMessageQueuingProtocol)是Spring框架的一个子项目,用于简化与消息代理(如RabbitMQ)的集成。SpringAMQP提供了基于AMQP协议的抽象层,使得Java程序员能够更轻松地使用消息队列完成异步通信、消息分发和数据流处理。S......
  • 腾讯课堂视频课件课程下载工具,如何在电脑端下载腾讯课堂视频课程课件资料到本地?
    一.安装腾讯课堂课程下载器1.获取学无止下载器https://www.xuewuzhi.cn/keqq_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止下载器介绍......
  • StarUML建模工具安装学习与汉化最新零基础详细教程【一键式下载】(适用于Windows、MacO
    StarUML破解安装下载教程前言:StarUML破解与汉化安装下载教程,仅供学习研究和交流使用,禁止作为商业用途或其他非法用途!仓库作者:X1a0He,经仓库作者授权使用。目录StarUML破解安装下载教程1.下载准备1.1一键式准备【懒人准备】1.2学习式准备1.2.1学习准备2.window......
  • 一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理
    CountDownLatch是Java并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成。一、设计理念CountDownLatch是基于AQS(AbstractQueuedSynchronizer)实现的。其核心思想是维护一个倒计数,每次倒计数减少到零时,等待的线程才会继续执行。它的主要设......
  • 进程工具类 - C#小函数类推荐
          此文记录的是进程操作的类库。/***进程工具类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用方法例子:foreac......
  • k4yt3x/video2x:视频和图像无损放大工具
    该项目集成了多种超分辨率算法(如Waifu2x、Anime4K、Real-ESRGAN),能够有效提高视频和图像的分辨率,并提供了图形界面(GUI)、Docker和命令行界面(CLI)的使用方式。links:https://hellogithub.com/repository/33efae8614d5435eb5f2db98d53d4fa7https://github.com/k4yt3x/video......
  • OSSFileBrowse:OSS存储桶遍历漏洞利用工具
    简介:由于经常遇到存储桶遍历漏洞,直接访问文件是下载,不方便预览,且甲方要求证明该存储桶的危害,因此该工具应运而生。使用javafx做图形化,kkFileView做文件预览接口。使用:命令行运行:java-Dfile.encoding=UTF-8-jarOSSFileBrowse-1.0-SNAPSHOT.jar或者直接点击run.bat文件。......
  • NetExec:新型内网/域渗透工具
    免责声明仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。简介:NetExec是一款强大的自动化网络安全评估和漏洞测试工具,作为已停止维护的CrackMapExec(CME)的现代替代品,它已被渗透测试人员和红队成员广泛采用......
  • MySQLMonitor: 黑盒测试Mysql实时监控辅助工具
    MySQLMonitorMySQL实时监控工具(代码审计、黑盒测试辅助工具)使用1.自行打包使用gitclonehttps://github.com/fupinglee/MySQLMonitorcdMySQLMonitormvncleanpackage-DskipTests=true打开target下的jar文件即可执行2.直接下载使用https://github.com/fupinglee/......