# mysqlbinlog_network
This create offers:
* Get MySql5.7+/8.0+ Binlog-Event From Mysql Instance
Features:
* macOS, Windows and Linux support;
* Mysql Gtid Support;
* mysql 5.7+/mysql 8.0+ Event Support;
### Installation
Put the desired version of the crate into the `dependencies` section of your `Cargo.toml`:
```toml
[dependencies]
mysqlbinlog-network = {git="https://github.com/jiuker/mysqlbinlog_network"}
```
### Example
```rust
use mysqlbinlog_network::client::sync::{OffsetConfig, Runner};
fn main() {
// Use crate[mysql] opt url to connect source
// ServerID is unique,
let mut runner = Runner::new("mysql://root:123456@127.0.0.1:3306", 1111).unwrap();
runner
.start_sync(OffsetConfig {
// pos: Some(("binlog.000002".to_string(), 34834)),
pos: None,
gtid: Some("0575a804-6403-11ea-8d3d-e454e8d4a4fe:1-1467870".into()),
})
.unwrap();
loop {
let e = runner.get_event().unwrap();
dbg!(e);
}
}
output:
[src/main.rs:14] e = Event {
header: EventHeader {
timestamp: 0,
event_type: RotateEvent,
server_id: 2,
event_size: 43,
log_pos: 0,
flags: 32,
},
event: Some(
RotateEvent {
pos: 4,
next_log_name: "mysql-bin.000132",
},
),
}
[src/main.rs:14] e = Event {
header: EventHeader {
timestamp: 1625022967,
event_type: FormatDescriptionEvent,
server_id: 2,
event_size: 119,
log_pos: 123,
flags: 0,
},
event: Some(
FormatDescriptionEvent {
binlog_version: 4,
server_version: "5.7.29-log",
create_timestamp: 0,
common_header_len: 19,
checksum_algorithm: CRC32,
},
),
}
[src/main.rs:14] e = Event {
header: EventHeader {
timestamp: 1625022967,
event_type: PreviousGtidsLogEvent,
server_id: 2,
event_size: 71,
log_pos: 194,
flags: 128,
},
event: None,
}
[src/main.rs:14] e = Event {
header: EventHeader {
timestamp: 0,
event_type: HeartbeatLogEvent,
server_id: 2,
event_size: 39,
log_pos: 4178350,
flags: 0,
},
event: None,
}
[src/main.rs:14] e = Event {
header: EventHeader {
timestamp: 1625047157,
event_type: GtidLogEvent,
server_id: 2,
event_size: 65,
log_pos: 4178415,
flags: 0,
},
event: Some(
GtidLogEvent {
flags: 0,
uuid: 0575a804-6403-11ea-8d3d-e454e8d4a4fe,
coordinate: 1467870,
last_committed: Some(
4662,
),
sequence_number: Some(
4663,
),
},
),
}
...
```
### API Documentation
Please refer to the [crate docs].
## Event
- [ ] Unknown
- [x] StartEventV3
- [x] QueryEvent
- [x] StopEvent
- [x] RotateEvent
- [ ] IntvarEvent
- [ ] LoadEvent
- [ ] SlaveEvent
- [ ] CreateFileEvent
- [ ] AppendBlockEvent
- [ ] ExecLoadEvent
- [ ] DeleteFileEvent
- [ ] NewLoadEvent
- [ ] RandEvent
- [ ] UserVarEvent
- [x] FormatDescriptionEvent
- [x] XidEvent
- [x] BeginLoadQueryEvent
- [x] ExecuteLoadQueryEvent
- [x] TableMapEvent
- [ ] PreGaWriteRowsEvent
- [ ] PreGaUpdateRowsEvent
- [ ] PreGaDeleteRowsEvent
- [x] WriteRowsEventV1
- [x] UpdateRowsEventV1
- [x] DeleteRowsEventV1
- [ ] IncidentEvent
- [x] HeartbeatLogEvent
- [ ] IgnorableLogEvent
- [x] RowsQueryLogEvent
- [x] WriteRowsEventV2
- [x] UpdateRowsEventV2
- [x] DeleteRowsEventV2
- [x] GtidLogEvent
- [ ] AnonymousGtidLogEvent
- [ ] PreviousGtidsLogEvent
- [x] OtherUnknown(u8)|
Not support Means Event Will Not Parse!But Event Header Will Can Tell It!
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
## Thanks
* crate [mysql-20.1.0](https://crates.io/crates/mysql)
* crate [mysql_binlog-0.3.1](https://crates.io/crates/mysql_binlog)
### Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.