Skip to content
This repository was archived by the owner on Dec 13, 2022. It is now read-only.

Latest commit

History

82 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NOTE

This is a fork (converted to git) from https://bitbucket.org/winebarrel/ruby-binlog

Description

ruby-binlog is Ruby binding for MySQL Binary log API.

Install

gem install ruby-binlog

Required Privileges

  • SUPER
  • REPLICATION SLAVE
  • EVENT

Example

#!/usr/bin/env rubyrequire"rubygems"require"binlog"require"pstore"
$db =PStore.new("/tmp/foo")#master_log_file = "mysql-bin.000001"#master_log_pos = 4master_log_file=nilmaster_log_pos=nil
$db.transactiondomaster_log_file= $db["master_log_file"]master_log_pos= $db["master_log_pos"]enddefsave_position(master_log_file,master_log_pos)
$db.transactiondo
$db["master_log_file"]=master_log_file
$db["master_log_pos"]=master_log_posendendbegin# XXX: Do not reuse a client instance, after connection goes out.client=Binlog::Client.new("mysql://repl:repl@example.com")sleep0.3untilclient.connectifmaster_log_fileandmaster_log_posclient.set_position(master_log_file,master_log_pos)elsifmaster_log_posclient.position=master_log_posendwhileevent=client.wait_for_next_eventputs"(#{event.event_type})"master_log_pos=event.next_positioncaseeventwhenBinlog::QueryEventputsevent.db_nameputsevent.querysave_position(master_log_file,master_log_pos)whenBinlog::RowEventputsevent.event_typeputsevent.db_nameputsevent.table_namepevent.columnspevent.rowssave_position(master_log_file,master_log_pos)whenBinlog::RotateEventmaster_log_file=event.binlog_filemaster_log_pos=event.binlog_possave_position(master_log_file,master_log_pos)endendrescueBinlog::Error=>eputseretryifclient.closed?raiseeend

Notice

The following type are not supported in row mode.

  • ENUM
  • SET
  • GEOMETRY

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages