reptile 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +0 -3
- data/README.rdoc +8 -3
- data/lib/reptile/heartbeat.rb +1 -5
- data/lib/reptile/status.rb +12 -14
- data/lib/reptile/version.rb +1 -1
- data/lib/reptile.rb +0 -2
- data/{replication.yml.sample → reptile.yml.sample} +0 -0
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -4,7 +4,6 @@ PATH
|
|
4
4
|
reptile (0.1.0)
|
5
5
|
activerecord
|
6
6
|
mixlib-log (>= 1.2.0)
|
7
|
-
tlsmail (>= 0.0.1)
|
8
7
|
|
9
8
|
GEM
|
10
9
|
remote: http://rubygems.org/
|
@@ -23,7 +22,6 @@ GEM
|
|
23
22
|
builder (2.1.2)
|
24
23
|
i18n (0.5.0)
|
25
24
|
mixlib-log (1.2.0)
|
26
|
-
tlsmail (0.0.1)
|
27
25
|
tzinfo (0.3.24)
|
28
26
|
|
29
27
|
PLATFORMS
|
@@ -34,4 +32,3 @@ DEPENDENCIES
|
|
34
32
|
bundler (>= 1.0.0)
|
35
33
|
mixlib-log (>= 1.2.0)
|
36
34
|
reptile!
|
37
|
-
tlsmail (>= 0.0.1)
|
data/README.rdoc
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
= reptile
|
2
2
|
|
3
|
-
Reptile is an easy to use utility that will monitor your MySQL replication, so you can forget about it and focus on the good stuff.
|
3
|
+
Reptile is an easy to use utility that will monitor your MySQL replication, so you can forget about it and focus on the good stuff.
|
4
4
|
|
5
5
|
== STATUS DISCLAIMER:
|
6
6
|
|
7
|
-
I'm not sure if anybody uses this. I
|
7
|
+
I'm not sure if anybody else uses this. I use it to monitor production MySQL database replication.
|
8
|
+
|
9
|
+
I am planning to simplify this significantly, but I won't likely get to them soon.
|
10
|
+
I MIGHT fix a patch you submit. Drop me a line, and I'll answer any questions you have.
|
11
|
+
|
12
|
+
NCS 3/2011
|
8
13
|
|
9
14
|
The --diff check can cause problems on large tables, as it does a lot of SELECT COUNT(*) FROM..'s .
|
10
15
|
|
@@ -28,7 +33,7 @@ Put a config file at /etc/reptile.yml, /etc/reptile/reptile.yml, ./reptile.yml,
|
|
28
33
|
--start-slaves Starts all slaves
|
29
34
|
-l, --log-level [LEVEL] Specify log level (debug,info,warn,error,fatal)
|
30
35
|
|
31
|
-
[nick@s34 ~]$ replication_status
|
36
|
+
[nick@s34 ~]$ replication_status --status
|
32
37
|
* a_database slave is up and running
|
33
38
|
* b_database slave is up and running
|
34
39
|
* c_database slave is up and running
|
data/lib/reptile/heartbeat.rb
CHANGED
@@ -56,13 +56,9 @@ module Reptile
|
|
56
56
|
return nil;
|
57
57
|
end
|
58
58
|
|
59
|
-
# Not sure why we have both, (one is easier to read?).
|
60
|
-
# Use one or the other to calculate delay...
|
61
59
|
delay = (Time.now - Time.at(heartbeat.unix_time)).round
|
62
|
-
#delay = (Time.now - heartbeat.db_time)
|
63
60
|
|
64
|
-
Log.
|
65
|
-
Log.info "The delay is #{strfdelay(delay)}"
|
61
|
+
Log.info "The slave delay for '#{name}' is #{strfdelay(delay)}"
|
66
62
|
|
67
63
|
delay
|
68
64
|
end
|
data/lib/reptile/status.rb
CHANGED
@@ -1,27 +1,25 @@
|
|
1
|
-
require 'tlsmail'
|
2
|
-
|
3
1
|
module Reptile
|
4
|
-
# The Status class is responsible for asking a slave database for its status is,
|
2
|
+
# The Status class is responsible for asking a slave database for its status is,
|
5
3
|
# parsing the result, and returning the appropiate status code.
|
6
4
|
#
|
7
5
|
# This class also allows you to convert a status code to a friendly message the corresponds to that status.
|
8
|
-
|
6
|
+
|
9
7
|
class Status
|
10
8
|
|
11
9
|
@@errors = []
|
12
|
-
|
10
|
+
|
13
11
|
# Status code indicating the SQL thread has stopped running.
|
14
12
|
SQL_THREAD_DOWN = 'sql_thread_down'
|
15
|
-
|
13
|
+
|
16
14
|
# Status code indicating the IO thread has stopped running.
|
17
15
|
IO_THREAD_DOWN = 'io_thread_down'
|
18
|
-
|
16
|
+
|
19
17
|
# Status code indicating that the slave has stopped replicating.
|
20
18
|
SLAVE_DOWN = 'slave_down'
|
21
|
-
|
19
|
+
|
22
20
|
# Status code indicating that the slave is up and running.
|
23
21
|
RUNNING = 'running'
|
24
|
-
|
22
|
+
|
25
23
|
# Set the user settings for a user that has global SELECT privilidgess
|
26
24
|
def self.user=(user_settings)
|
27
25
|
@user = user_settings
|
@@ -31,14 +29,14 @@ module Reptile
|
|
31
29
|
def self.user
|
32
30
|
@user ||= {}
|
33
31
|
end
|
34
|
-
|
32
|
+
|
35
33
|
# Checks the value of the MySQL command "SHOW SLAVE STATUS".
|
36
34
|
# Returns a status code.
|
37
35
|
def self.check_slave_status(name, configs)
|
38
36
|
# TODO: Do this in Databases
|
39
37
|
configs.delete("port")
|
40
38
|
Databases.connect(configs.merge(user).merge('database' => 'information_schema')).execute('SHOW SLAVE STATUS').each_hash do |hash|
|
41
|
-
|
39
|
+
|
42
40
|
if hash['Slave_SQL_Running'] == "No"
|
43
41
|
return SQL_THREAD_DOWN
|
44
42
|
elsif hash['Slave_IO_Running'] == "No"
|
@@ -49,8 +47,8 @@ module Reptile
|
|
49
47
|
return RUNNING
|
50
48
|
end
|
51
49
|
end
|
52
|
-
end
|
53
|
-
|
50
|
+
end
|
51
|
+
|
54
52
|
# Returns a nice error message for the given status code
|
55
53
|
def self.get_error_message(status)
|
56
54
|
case status
|
@@ -64,7 +62,7 @@ module Reptile
|
|
64
62
|
raise "Invalid status code. Must be one of #{status_codes.keys.inspect}"
|
65
63
|
end
|
66
64
|
end
|
67
|
-
|
65
|
+
|
68
66
|
# A hash containing the names of the constants that represent status codes,
|
69
67
|
# and the strings they represent
|
70
68
|
def self.status_codes
|
data/lib/reptile/version.rb
CHANGED
data/lib/reptile.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reptile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- nick.stielau@gmail.com
|
@@ -90,8 +90,8 @@ files:
|
|
90
90
|
- lib/reptile/status.rb
|
91
91
|
- lib/reptile/users.rb
|
92
92
|
- lib/reptile/version.rb
|
93
|
-
- replication.yml.sample
|
94
93
|
- reptile.gemspec
|
94
|
+
- reptile.yml.sample
|
95
95
|
- reptile_setup.sql
|
96
96
|
- script/console
|
97
97
|
- script/destroy
|