当前位置: 首页 > news >正文

网站关键词排名下降网站建设推广兼职

网站关键词排名下降,网站建设推广兼职,深圳建网站开发费用,做网站杭州mysql数据恢复 my2sql: 是一款针对 MySQL 数据库的 binlog 解析工具,主要用于从 MySQL 的二进制日志(binlog)中提取数据变更信息(如插入、更新、删除操作),并能生成对应的 SQL 语句&#xff0…

mysql数据恢复

my2sql:

是一款针对 MySQL 数据库的 binlog 解析工具,主要用于从 MySQL 的二进制日志(binlog)中提取数据变更信息(如插入、更新、删除操作),并能生成对应的 SQL 语句,也支持将解析结果输出为其他格式(如 CSV)。它在数据同步、数据恢复、审计追踪等场景中较为常用。

把bin-log日志进行解析,转化为sql语句,进行数据恢复

主要功能
  • binlog 解析:能够解析 MySQL 的 binlog 文件,提取其中的事务和数据操作记录。
  • 生成 SQL:可以将解析到的变更操作转换为对应的 INSERT、UPDATE、DELETE 语句,方便用于数据重放、同步等场景。
  • 过滤功能:支持按数据库名、表名、时间范围、操作类型等条件过滤解析结果,精准获取所需数据。
  • 格式输出:除了 SQL 语句,还能输出为 CSV 等格式,便于数据导入到其他系统或进行分析。

my2sql的常用选项和参数:

一、数据库连接参数

用于连接 MySQL 实例以获取 binlog 信息(本地文件解析时部分参数可省略):

  • -user​:MySQL 用户名(需有 REPLICATION​ 相关权限)
  • -password​:用户密码
  • -host​:数据库主机 IP 或域名(默认 127.0.0.1​)
  • -port​:数据库端口(默认 3306​)
  • -socket​:通过 Unix socket 连接时的路径(如 /tmp/mysql.sock​)

二、binlog 范围指定参数

用于限定解析的 binlog 范围:

  • -start-file​:起始 binlog 文件名(如 binlog.000001​,必填)
  • -start-pos​:起始 binlog 位置(在 -start-file​ 中的偏移量,默认从文件开头)
  • -end-file​:结束 binlog 文件名(默认与 -start-file​ 相同)
  • -end-pos​:结束 binlog 位置(在 -end-file​ 中的偏移量,默认到文件结尾)
  • -start-datetime​:起始时间(格式 YYYY-MM-DD HH:MM:SS​,过滤此时间之后的操作)
  • -end-datetime​:结束时间(格式同上,过滤此时间之前的操作)

三、过滤参数

用于筛选需要解析的数据库、表或操作类型:

  • -database​:只解析指定数据库(可多个,用逗号分隔,如 db1,db2​)
  • -table​:只解析指定表(需配合 -database​,如 tbl1,tbl2​)
  • -ignore-database​:忽略指定数据库(可多个)
  • -ignore-table​:忽略指定表(需配合 -ignore-database​)
  • -sql-type​:只解析指定操作类型(如 insert,update​,可选值:insert​/update​/delete​)

四、输出格式与内容参数

控制解析结果的输出形式:

  • -output-dir​:结果输出目录(必填,会自动创建)
  • -sql​:生成可执行的 SQL 语句(默认开启,与 -csv​ 互斥)
  • -csv​:生成 CSV 格式文件(与 -sql​ 互斥)
  • -rollback​:生成回滚 SQL(将 update​ 转为反向 update​,delete​ 转为 insert​)
  • -no-primary-key​:生成 SQL 时忽略主键(适用于某些特殊场景)
  • -add-extra-info​:在输出中添加额外信息(如 binlog 位置、时间戳)

五、特殊模式参数

  • -local-binlog​:解析本地 binlog 文件(无需连接数据库,需指定 -start-file​ 为本地路径)
  • -flashback​:生成闪回 SQL(类似 -rollback​,但针对旧版本兼容)
  • -daemon​:以守护进程模式运行(持续解析新产生的 binlog)
  • -file-per-table​:按表拆分输出文件(每个表单独生成 SQL/CSV 文件)

六、其他辅助参数

  • -help​:显示所有参数说明
  • -version​:显示 my2sql 版本
  • -log-level​:日志级别(info​/warn​/error​,默认 info​)
  • -worker-count​:解析线程数(加快大文件处理速度,默认 4)

实战演练:

初始状态:

(创一个库环境)

把虚拟数据库文件拖过去

1解压数据:unzip test_db-master.zip

2切换到:cd test_db-master

ls查看目录下文件:这个里面的employees.sql就是数据库内容

导入库的时候导入employees这个文件

3.mysql -uroot -p123.com -t < employees.sql #(耗时长,不要打断)

4.进入库中:mysql -uroot -pRoot@123

5.刷新二进制日志文件:flush logs;

(bin-log日志开启状态)可以通过命令 show variables like “log_bin”查看开启状态如果是on就是开启的。

6.mysql> show variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.02 sec)
ON为开启
OFF为关闭

假设:我们不小心把一个表全删了???那我们该怎么做捏????

1.把软件直接拖进去然后给他一个执行权限

chmod +x my2sql

1.先查看bin-log日志里确认误操作的

show binary logs;

查看最后那个bin-log日志假设我们最后操作的那个日志例如是:mysql-bin.000004

2.查看目录的存放位置,里面有数据

show variables like "datadir";

里面有路径例如/var/log/bin-log。

mysql> show variables like "datadir";
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)

查看刚刚那个日志文件binlog.000004在这里,但是这个日志里面的内容我们看不懂,所以要通过工具解析成我们能看懂的sql语句

4.使用my2sql工具解析文件。

./my2sql \-user root \                                     # 指定连接 MySQL 的用户名,此处为 root-password Root@123 \                            # 指定 MySQL 用户的登录密码-host 127.0.0.1 \                                # 指定 MySQL 服务器地址,127.0.0.1 表示本地连接-port 3306 \                                     # 指定 MySQL 服务监听端口,默认为 3306-databases employees \                           # 指定需要解析的数据库名,此处为 employees-tables titles \                                 # 指定需要恢复的表名,此处为 titles(可指定多个表,用逗号分隔)-mode repl \                                     # 指定解析模式为 "repl"(实时解析模式),适用于从当前日志开始回放-work-type 2sql \                                # 工作类型:生成可执行的原始 SQL 语句(正向 SQL)-start-file /var/lib/mysql/mysql-bin.000027 \    # 指定解析的起始 binlog 文件-output-dir /tmp     例如:
./my2sql  -user root -password 123.com -host 127.0.0.1 -port 3306  -databases employees -tables titles -mode repl-work-type 2sql  -start-file /var/lib/mysql/mysql-bin.000004 -output-dir /tmp     

出现一堆info就是解析成功了。

5.输出到了/tmp/binlog_status.txt里面,我们可以查看一下

[root@mysql_1 tmp]# cat /tmp/binlog_status.txt
binlog starttime stoptime startpos stoppos inserts updates deletes database table
mysql-bin.000004 2025-08-16_15:25:23 2025-08-16_15:25:26 13585383 23505305 443308 0 0 employees titles
mysql-bin.000004 2025-08-16_16:00:32 2025-08-16_16:00:32 66378688 76293245 0 0 443308 employees titles

这里binlog_status.txt内容解析:
binlog: binlog日志名
starttime: 事务开始时间
stoptime: 事务停止时间
startpos: 事务开始位置
stoppos: 事务停止位置
inserts: 插入操作
updates: 更新操作
deletes: 删除操作
database: 涉及到的数据库
table: 涉及到的表

我们可以看到,mysql-bin.000027日志记录了一系列操作,在2025年8月16日16:00:32开始,2025年8月16日16:00:32结束(删除操作不足一秒),employees库的titles表进行了delete操作,操作数据量443308行,

6.使用my2sql生成回滚roolback.sql

mkdir -p /tmp/flashback/ #这个目录用来放回滚后的内容

./my2sql \                           # 命令名称:my2sql,用于解析 MySQL binlog 并生成 SQL-user root \                      # 指定连接 MySQL 数据库的用户名为 root-password Nsoas123! \             # 指定用户的密码(注意:明文密码存在安全风险,建议使用更安全的方式)-host 127.0.0.1 \                 # 指定 MySQL 服务器地址,这里是本地主机-port 3306 \                      # 指定 MySQL 服务端口,默认为 3306-databases employees \            # 指定要解析的数据库名:employees-tables titles \                # 指定要解析的表名:dept_emp(必须与 -databases 配合使用)-mode repl \                      # 解析模式为 "repl"(replay 的缩写),表示重放原始 SQL 操作# 其他可能模式:rollback(生成回滚 SQL)、print(仅打印不输出)-work-type rollback \             # 工作类型为 rollback,表示生成用于回滚(撤销)的 SQL 语句# 即将 DELETE 变成 INSERT,INSERT 变成 DELETE,UPDATE 恢复旧值-start-file /var/lib/mysql/mysql-bin.000027 \  # 指定从哪个 binlog 文件开始解析-output-dir /tmp/flashback/       # 指定输出目录,生成的回滚 SQL 文件将保存在此路径下
./my2sql -user root -password 数据库密码 -host 主机ip -port 3306 -databases 对应表所在的数据库 -tables 不小心删掉的表 -mode rep1 -work-type roolback -start-file 前面日志文件所在完整路径 -output-dir 回滚后内容放哪
./my2sql -user root -password 123.com -host 127.0.0.1 -port 3306 -databases employees -tables titiles -mode rep1 -work-type roolback -start-file /var/lib/mysql/binlog_000004 -output-dir /tmp/flashback

执行完后会在 前面创的目录里/tmp/flashback/ 生成一个roolback.sql这个文件里面就是sql语句

7.把sql语句还原

mysql -uroot -p123.com < /tmp/flashback/ roolback.sql

http://www.dtcms.com/a/506412.html

相关文章:

  • 网站建设公司初心广东近期新闻
  • 广州奕联网站开发wordpress wp_list_categories
  • 云建站哪家好黄山网站建设黄山
  • v6厂高仿手表网站html5网站网址
  • 微网站备案广州网站建设粤icp
  • 最炫表白网站html5源码常见的网站类型有哪些
  • 网站建设合同 知乎苏州百度运营公司排名
  • 建站网站插件行政部网站建设规划
  • 泰安润泽建设工程有限公司网站怎么做网络推广赚佣金
  • 网站开发 东莞centos装wordpress
  • 自由人网站开发怎么做企业推广
  • 阿里去要企业网站建设方案书2022装修简约风格效果图
  • 模板网站制作海外网络推广技巧
  • 整人关不掉的网站怎么做在线培训考试系统
  • 北京数字智慧展厅设计咨询seo智能优化公司
  • 网站设置伪静态网站域名等级
  • 惠州网站建设推广清博舆情系统
  • 网站设计网上培训学校海阳市住房和城乡建设局官方网站
  • 学做网站要学哪些不备案 国内网站吗
  • 湖北住房与城乡建设厅网站wordpress主题 下单
  • dede网站源码 如何烟台城乡建设局官方信息网站
  • 怎么做刷会员的网站标点狗logo设计官网
  • 建材企业网站推广方案怎样通过网址浏览自己做的网站
  • 湖南seo网站多少钱嵌入式软件培训
  • 为什么选择做汉服网站wordpress 外贸 插件
  • wordpress多站版做门户网站的公司有哪些
  • 优秀的网站建设公司排名西安网站建设哪些公司好
  • 现在怎么做网站丽水市莲都区建设分局网站
  • 做ppt图片用的网站有哪些在哪些平台上做推广
  • 垂直电商网站建设wordpress极客