mysqlbinlog 导出sql和my2sql 闪回

mysqlbinlog 导出sql

mysqlbinlog  -h 127.0.0.1 -u root -p binlog.000040  --start-datetime="2025-11-12 18:40:00"       --stop-datetime="2025-11-12 19:04:56"  -v --base64-output=DECODE-ROWS >text-based.txt

my2sql 闪回执行前的sql(返现还原):

 ./my2sql -host 127.0.0.1 -user root -password xxx  -port 3306  -mode repl -work-type rollback -start-file binlog.000040   -start-datetime "2025-11-12 19:04:54" -stop-datetime "2025-11-12 19:04:56" -output-dir /tmp

#这里的 -mode repl 是伪装成mysql的从服务器, 如果 -mode file 是直接读取binlog文件   -work-type rollback  是sql还原,如果 -work-type 2sql 则是原始的执行文件

my2sql 闪回执行前的sql(原始sql)

./my2sql -host 127.0.0.1 -user root -password xxx -port 3306  -mode repl -work-type 2sql -start-file binlog.000040   -start-datetime "2025-11-12 19:04:55" -stop-datetime "2025-11-12 19:04:56" -output-dir /tmp



我的内网mysql是docker方式安装,我想导出文本形式的sql,却没有mysqlbinlog工具,直接从外网copy了一个 mysqlbinlog 工具到内网,运行提示缺少 libssl.so.1.1.1和libcrypo.so.1.1.1 ,使用 ldd mysqlbinlog  可以清楚看到哪些依赖库找不到! 原因是:ubuntu24.04上把openssl已经移除了,没有办法我只能通过 源码编译了openssl-1.1.1k ,然而又不知道 mysqlbinlog 到底到哪个目录下寻找libssl.so.1.1.1 和libcrypo.so.1.1.1 库文件。后面我找到方法,通过 strace -s 2024 ./mysqlbinlog 就可以看到调用栈的路径。可以看到mysqlbinlog 寻找依赖的目录顺序,然后找一个熟悉的目录把 libssl.so.1.1.1 和libcrypt.so.1.1.1 软链接进去就行了。
请先 登录 后评论
  • 0 关注
  • 0 收藏,26 浏览
  • 石天 提出于 2025-11-13 11:05

相似问题