|
1 | 1 | # bingo2sql |
2 | | -MySQL Binlog 解析 |
| 2 | +MySQL Binlog 解析工具 |
3 | 3 |
|
| 4 | +从MySQL binlog解析出原始SQL,对应的回滚SQL等. |
| 5 | + |
| 6 | +### 限制和要求 |
| 7 | + |
| 8 | +- MySQL必须开启binlog |
| 9 | +- binlog_format = row |
| 10 | +- binlog_row_image = full |
| 11 | + |
| 12 | +## 支持模式 |
| 13 | + |
| 14 | +### 1. 本地解析 |
4 | 15 | ```sh |
5 | | -bingo2sql -h=127.0.0.1 -P 3306 -u test -p test \ |
6 | | - -start-file=mysql-bin.000003 -db db1_3306_test_inc -o 1.txt |
| 16 | +bingo2sql --start-file=~/db_cmdb/blog/mysql-bin.000001 -t table.sql |
| 17 | +``` |
| 18 | +其中`-t`参数指定的是建表语句文件,内容类似: |
| 19 | +```sql |
| 20 | +-- 需要解析哪个表,提供哪个表的建表语句 |
| 21 | +CREATE TABLE `tt` ( |
| 22 | + id int auto_increment primary key, |
| 23 | + `TABLE_NAME` varchar(64) NOT NULL DEFAULT '' |
| 24 | +) ; |
| 25 | +``` |
| 26 | + |
| 27 | + |
| 28 | +### 2. 远程解析 |
| 29 | + |
| 30 | +远程解析的参数及使用均与binlog2sql类似 |
| 31 | + |
| 32 | +``` |
| 33 | +bingo2sql -h=127.0.0.1 -P 3306 -u test -p test -d db1_3306_test_inc \ |
| 34 | + --start-time="2006-01-02 15:04:05" -t t1 -B |
| 35 | +``` |
| 36 | + |
| 37 | +### 3. 解析服务 |
| 38 | + |
| 39 | +bingo2sql 支持以服务方式运行,提供解析的HTTP接口支持 |
| 40 | + |
| 41 | +```sh |
| 42 | +bingo2sql --server --config=config.ini |
| 43 | +``` |
| 44 | + |
| 45 | + |
| 46 | +## 支持选项 |
| 47 | + |
| 48 | +**解析模式** |
| 49 | + |
| 50 | +- --stop-never 持续解析binlog。可选。默认False,同步至执行命令时最新的binlog位置。 |
| 51 | + |
| 52 | +- -K, --no-primary-key 对INSERT语句去除主键。可选。默认False |
| 53 | + |
| 54 | +- -B, --flashback 生成回滚SQL,可解析大文件,不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。 |
| 55 | + |
| 56 | +- -M, --minimal-update 最小化update语句. 可选. (default false) |
| 57 | + |
| 58 | +**解析范围控制** |
| 59 | + |
| 60 | +- --start-file 起始解析文件,只需文件名,无需全路径 。可选,如果指定了起止时间,可以忽略该参数。 |
| 61 | + |
| 62 | +- --start-pos 起始解析位置。可选。默认为start-file的起始位置。 |
| 63 | + |
| 64 | +- --stop-file 终止解析文件。可选。若解析模式为stop-never,此选项失效。 |
| 65 | + |
| 66 | +- --stop-pos 终止解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。 |
| 67 | + |
| 68 | +- --start-time 起始解析时间,格式'%Y-%m-%d %H:%M:%S'等。可选。默认不过滤。 |
| 69 | + |
| 70 | +- --stop-time 终止解析时间,格式'%Y-%m-%d %H:%M:%S'等。可选。默认不过滤。 |
| 71 | + |
| 72 | +- -C, --connection-id 线程号,可解析指定线程的SQL。 |
| 73 | + |
| 74 | +- -g, --gtid GTID范围.格式为uuid:编号[-编号],多个时以逗号分隔,例如:6573bb29-9d94-11e9-9e0c-0242ac130002:1-100 |
| 75 | + |
| 76 | +- --max 解析的最大行数,设置为0则不限制,以避免解析范围过大 (default 100000) |
| 77 | + |
| 78 | +**对象过滤** |
| 79 | + |
| 80 | +-d, --databases 只解析目标db的sql,多个库用逗号隔开,如-d db1,db2。可选。默认为空。 |
| 81 | + |
| 82 | +-t, --tables 只解析目标table的sql,多张表用逗号隔开,如-t tbl1,tbl2。可选。默认为空。 |
| 83 | + |
| 84 | +--ddl 解析ddl,仅支持正向解析。可选。默认False。 |
| 85 | + |
| 86 | +--sql-type 只解析指定类型,支持 insert,update,delete。多个类型用逗号隔开,如--sql-type=insert,delete。可选。默认为增删改都解析。 |
| 87 | + |
| 88 | + |
| 89 | +**附加信息** |
| 90 | + |
| 91 | +- --show-gtid 显示gtid (default true) |
| 92 | + |
| 93 | +- --show-time 显示执行时间,同一时间仅显示首次 (default true) |
| 94 | + |
| 95 | +- --show-all-time 显示每条SQL的执行时间 (default false) |
| 96 | + |
| 97 | +- --show-thread 显示线程号,便于区别同一进程操作 (default false) |
| 98 | + |
| 99 | +- -o, --output 本地或远程解析时,可输出到指定文件(置空则输出到控制台,可通过 > file重定向) |
| 100 | + |
| 101 | +**mysql连接配置** (仅远程解析需要) |
| 102 | + |
| 103 | +``` |
| 104 | + -h host |
| 105 | + -P port |
| 106 | + -u user |
| 107 | + -p password |
7 | 108 | ``` |
0 commit comments