⚲
Project
General
Profile
Sign in
Register
Home
Projects
Help
Search
:
Ruby master
All Projects
Ruby
»
Ruby master
Overview
Activity
Roadmap
Issues
Repository
Like
Download (1.5 KB)
Bug #7479
ยป binlog.rb
kevinbin (hong bin)
, 11/30/2012 06:44 PM
#!/usr/bin/env ruby
require
"rubygems"
require
"binlog"
require
"pstore"
$db
=
PStore
.
new
(
"/tmp/foo"
)
#master_log_file = "mysql-bin.000001"
#master_log_pos = 4
master_log_file
=
nil
master_log_pos
=
nil
$db
.
transaction
do
master_log_file
=
$db
[
"master_log_file"
]
master_log_pos
=
$db
[
"master_log_pos"
]
end
def
save_position
(
master_log_file
,
master_log_pos
)
$db
.
transaction
do
$db
[
"master_log_file"
]
=
master_log_file
$db
[
"master_log_pos"
]
=
master_log_pos
end
end
begin
# XXX: Do not reuse a client instance, after connection goes out.
client
=
Binlog
::
Client
.
new
(
"mysql://admin:admin@192.168.1.111"
)
sleep
0.3
until
client
.
connect
if
master_log_file
and
master_log_pos
client
.
set_position
(
master_log_file
,
master_log_pos
)
elsif
master_log_pos
client
.
position
=
master_log_pos
end
while
event
=
client
.
wait_for_next_event
puts
"(
#{
event
.
event_type
}
)"
master_log_pos
=
event
.
next_position
case
event
when
Binlog
::
QueryEvent
puts
event
.
db_name
puts
event
.
query
save_position
(
master_log_file
,
master_log_pos
)
when
Binlog
::
RowEvent
puts
event
.
event_type
puts
event
.
db_name
puts
event
.
table_name
p
event
.
columns
p
event
.
rows
save_position
(
master_log_file
,
master_log_pos
)
when
Binlog
::
RotateEvent
master_log_file
=
event
.
binlog_file
master_log_pos
=
event
.
binlog_pos
save_position
(
master_log_file
,
master_log_pos
)
end
end
rescue
Binlog
::
Error
=>
e
puts
e
retry
if
client
.
closed?
raise
e
end
(1-1/1)
Loading...