日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL过滤相同binlog_通过Linux命令过滤出binlog中完整的SQL语句

發布時間:2023/12/10 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL过滤相同binlog_通过Linux命令过滤出binlog中完整的SQL语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DB:MySQL 5.6.16

CentOS:CentOS release 6.3 (Final)

當insert語句通過空格跨行輸入的時候,如何提取完整的insert語句!

創建一個空表:

mysql> create table yoon as select * from sakila.actor where 1=0;

Query OK, 0 rows affected (0.06 sec)

Records: 0? Duplicates: 0? Warnings: 0

查看表名:

mysql> show tables;

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

| Tables_in_yoon |

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

| yoon? ? ? ? ? |

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

1 row in set (0.00 sec)

查看數據:

mysql> select * from yoon;

Empty set (0.00 sec)

查看表結構:

mysql> desc yoon;

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

| Field? ? ? | Type? ? ? ? ? ? ? ? | Null | Key | Default? ? ? ? ? | Extra? ? ? ? ? ? ? ? ? ? ? |

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

| actor_id? ? | smallint(8) unsigned | NO? |? ? | 0? ? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| first_name? | varchar(45)? ? ? ? ? | NO? |? ? | NULL? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| last_name? | varchar(45)? ? ? ? ? | NO? |? ? | NULL? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| last_update | timestamp? ? ? ? ? ? | NO? |? ? | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

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

4 rows in set (0.00 sec)

夸行方式插入測試數據:

mysql> insert into yoon

->

-> values

->

-> (1,'YOON','HANK',2006-02-15 04:34:33)

->

-> ;

查看mysql-binlog日志:

[root@hank-yoon data]# ls

auto.cnf? ? ? ? ? ? hank? ? ? ibdata1? ib_logfile0? ib_logfile2? mysql-bin.000043? mysql-bin.000045? performance_schema? test? yoon.sql

binlog-rollback.pl? hank.sql? ibdata2? ib_logfile1? mysql? ? ? ? mysql-bin.000044? mysql-bin.index? sakila? ? ? ? ? ? ? yoon

將binlog數據轉換到yoon.sql:

[root@hank-yoon data]# mysqlbinlog mysql-bin.000045 > yoon.sql

過濾出insert語句:

[root@hank-yoon data]# more yoon.sql | grep --ignore-case -E 'insert' -A2 -B2 | grep yoon > hank.sql

查看insert語句,發現跨行插入的SQL語句截至到insert into yoon就結束:

[root@hank-yoon data]# cat hank.sql

insert into yoon (first_name,last_name) select first_name,last_name from hank

insert into yoon

通過以下命令,可以查看完整的SQL語句,即使是跨行插入,分好(;)都給你帶上:

[root@hank-yoon data]# sed? -n? "/insert into yoon/,/;/p"? yoon.sql? |sed? 's#\/\*!\*\/##'

insert into yoon (first_name,last_name) select first_name,last_name from hank

;

insert into yoon

values

(1,'YOON','HANK','2006-02-15 04:34:33')

;

總結

以上是生活随笔為你收集整理的MySQL过滤相同binlog_通过Linux命令过滤出binlog中完整的SQL语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。