mysql_truck 0.6.2 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mysql_truck.rb +1 -0
- data/lib/mysql_truck/dumper.rb +25 -23
- data/lib/mysql_truck/helper.rb +3 -2
- data/lib/mysql_truck/loader.rb +5 -13
- data/lib/mysql_truck/version.rb +1 -1
- metadata +2 -2
data/lib/mysql_truck.rb
CHANGED
data/lib/mysql_truck/dumper.rb
CHANGED
@@ -20,6 +20,18 @@ module MysqlTruck
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def dump_data
|
23
|
+
mysql = Mysql.init
|
24
|
+
mysql.options(Mysql::SET_CHARSET_NAME, "utf8")
|
25
|
+
mysql.connect(
|
26
|
+
config[:host],
|
27
|
+
config[:username],
|
28
|
+
config[:password],
|
29
|
+
config[:database],
|
30
|
+
config[:port]
|
31
|
+
)
|
32
|
+
# mysql.query_with_result = false # Do not store result in memory
|
33
|
+
mysql.query("SET NAMES utf8")
|
34
|
+
|
23
35
|
tables.each do |table|
|
24
36
|
puts "Dumping #{table}..."
|
25
37
|
next if compressed_files_exist?(table) && smartly?
|
@@ -32,26 +44,14 @@ module MysqlTruck
|
|
32
44
|
schema_cmd += "#{db_connection_options} #{table}"
|
33
45
|
schema_cmd += " > #{filename(table)[:schema_file]}"
|
34
46
|
puts schema_cmd
|
35
|
-
`#{schema_cmd}`
|
47
|
+
benchmark { `#{schema_cmd}` }
|
36
48
|
|
37
49
|
# Dump data
|
38
50
|
puts "Writing data for #{table} ..."
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
config[:username],
|
44
|
-
config[:password],
|
45
|
-
config[:database],
|
46
|
-
config[:port]
|
47
|
-
)
|
48
|
-
mysql.query_with_result = false # Do not store result in memory
|
49
|
-
mysql.query("SET NAMES utf8")
|
50
|
-
CSV.open(filename(table)[:data_file], 'wb', :col_sep => "\t") do |csv|
|
51
|
-
mysql.query("SELECT * FROM #{table}")
|
52
|
-
results = mysql.use_result # Stream the rows
|
53
|
-
results.each do |row|
|
54
|
-
csv << row.collect { |col| col && col.match(/\t/) ? " " : col }
|
51
|
+
benchmark do
|
52
|
+
puts `mysql #{db_connection_options} --skip-column-names --batch -e "select * from #{table}" | lzop -6 > #{filename(table)[:compressed_data_file]} 2>/var/log/mysql_truck_dump.log`
|
53
|
+
if $?.exitstatus != 0
|
54
|
+
puts "Command did not execute successfully"
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
@@ -79,14 +79,16 @@ module MysqlTruck
|
|
79
79
|
if compress_files?(table)
|
80
80
|
puts "compressing #{filename(table)[:no_index_schema_file]}."
|
81
81
|
|
82
|
-
|
83
|
-
|
82
|
+
benchmark do
|
83
|
+
compression_cmd = "lzop -8 -U"
|
84
|
+
`#{compression_cmd} #{filename(table)[:no_index_schema_file]}`
|
84
85
|
|
85
|
-
|
86
|
-
|
86
|
+
puts "compressing #{filename(table)[:alter_table_file]}."
|
87
|
+
`#{compression_cmd} #{filename(table)[:alter_table_file]}`
|
87
88
|
|
88
|
-
|
89
|
-
|
89
|
+
puts "compressing #{filename(table)[:data_file]}."
|
90
|
+
`#{compression_cmd} #{filename(table)[:data_file]}`
|
91
|
+
end
|
90
92
|
end
|
91
93
|
|
92
94
|
puts "#{table} dumped.\n\n"
|
data/lib/mysql_truck/helper.rb
CHANGED
@@ -64,13 +64,14 @@ module MysqlTruck
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def benchmark
|
67
|
-
Benchmark.realtime do
|
67
|
+
time = Benchmark.realtime do
|
68
68
|
yield
|
69
69
|
end
|
70
|
+
puts "Ran in #{formatted_time(time)}."
|
70
71
|
end
|
71
72
|
|
72
73
|
def formatted_time(time)
|
73
|
-
"#{"%0.5f" % time}
|
74
|
+
"#{"%0.5f" % time}s"
|
74
75
|
end
|
75
76
|
|
76
77
|
def csv_options
|
data/lib/mysql_truck/loader.rb
CHANGED
@@ -43,8 +43,7 @@ module MysqlTruck
|
|
43
43
|
else
|
44
44
|
decompress_cmd = "gunzip -f"
|
45
45
|
end
|
46
|
-
|
47
|
-
print "complete (#{formatted_time time}).\n"
|
46
|
+
benchmark { `#{decompress_cmd} #{tmp_path.join(filename)}` }
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
@@ -127,10 +126,9 @@ module MysqlTruck
|
|
127
126
|
sed2_cmd = config[:date_suffix] ? "sed 's/TABLE #{table}/TABLE #{table}_#{backup_date_str.gsub(/-/, "")}/g'" : nil
|
128
127
|
import_cmd = "mysql #{db_connection_options}"
|
129
128
|
|
130
|
-
|
129
|
+
benchmark do
|
131
130
|
`#{[ cat_cmd, sed_cmd, sed2_cmd, import_cmd].compact.join(' | ')}`
|
132
131
|
end
|
133
|
-
print "complete (#{formatted_time time}).\n"
|
134
132
|
end
|
135
133
|
|
136
134
|
def import_csv_file(table, backup_date_str, file_path)
|
@@ -141,12 +139,10 @@ module MysqlTruck
|
|
141
139
|
`mv #{old_file_path} #{file_path}`
|
142
140
|
end
|
143
141
|
|
144
|
-
|
142
|
+
benchmark do
|
145
143
|
`mysqlimport --local --compress #{csv_options} #{db_connection_options} #{file_path}`
|
146
144
|
end
|
147
145
|
|
148
|
-
print "complete (#{formatted_time time}).\n"
|
149
|
-
|
150
146
|
file_path
|
151
147
|
end
|
152
148
|
|
@@ -158,12 +154,10 @@ module MysqlTruck
|
|
158
154
|
`mv #{old_file_path} #{file_path}`
|
159
155
|
end
|
160
156
|
|
161
|
-
|
157
|
+
benchmark do
|
162
158
|
`mysqlimport --local --compress #{db_connection_options} #{file_path}`
|
163
159
|
end
|
164
160
|
|
165
|
-
print "complete (#{formatted_time time}).\n"
|
166
|
-
|
167
161
|
file_path
|
168
162
|
end
|
169
163
|
|
@@ -181,15 +175,13 @@ module MysqlTruck
|
|
181
175
|
if !smartly? || (smartly? && !unzipped_file.exist?)
|
182
176
|
print " - Downloading... "
|
183
177
|
|
184
|
-
|
178
|
+
benchmark do
|
185
179
|
file.open("wb") do |f|
|
186
180
|
@bucket.s3.interface.get(@bucket.name, key.name) do |chunk|
|
187
181
|
f.write chunk
|
188
182
|
end
|
189
183
|
end
|
190
184
|
end
|
191
|
-
|
192
|
-
puts "complete (#{formatted_time time})."
|
193
185
|
else
|
194
186
|
puts " already downloaded."
|
195
187
|
end
|
data/lib/mysql_truck/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_truck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: right_aws
|