Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Grab('com.github.shyiko:mysql-binlog-connector-java:0.8.1')
- import com.github.shyiko.mysql.binlog.event.*
- import com.github.shyiko.mysql.binlog.*
- if(!args || args.length < 4) {
- println 'Usage: groovy binlog_connector.groovy <host> <port> <username> <password>'
- return 1
- }
- def client = new BinaryLogClient(args[0], Integer.parseInt(args[1]), args[2], args[3])
- def recordCount = 0
- client.registerEventListener({ event ->
- def type = event.header.eventType
- println ("$type @ ${client.binlogFilename}:${event.header.position}")
- switch (type) {
- case EventType.QUERY:
- println "\t${event.data.sql}"
- recordCount++
- break
- case EventType.TABLE_MAP:
- println "\t${event.data.database}.${event.data.table} ${event.data.columnTypes}"
- break
- case EventType.EXT_WRITE_ROWS:
- case EventType.WRITE_ROWS:
- case EventType.EXT_DELETE_ROWS:
- case EventType.DELETE_ROWS:
- event.data.includedColumns.each {println "\tColumns modified: $it"}
- event.data.rows.each {println "\t$it"}
- recordCount++
- break
- case EventType.EXT_UPDATE_ROWS:
- case EventType.UPDATE_ROWS:
- println "\tColumns updated: ${event.data.includedColumnsBeforeUpdate} => ${event.data.includedColumns}"
- event.data.rows.each {entry -> println "\t${entry.key} now ${entry.value}"}
- recordCount++
- break
- case EventType.XID:
- recordCount++
- break
- }
- } as BinaryLogClient.EventListener)
- client.setBinlogFilename('')
- client.setBinlogPosition(-1)
- client.connect(5000)
- Thread.sleep(1000)
- client.disconnect()
- println recordCount
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement