flydata 0.2.27 → 0.2.28

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31c9862228f6affa3e27e1ffbe4bbd7bd330774e
4
- data.tar.gz: 5a447f0bb5cc7db2997d90580d7b59360834743f
3
+ metadata.gz: bde8ac1d5079ec1086baca972d51548f98e5b96b
4
+ data.tar.gz: 5d6ddbacb6f4e16e9f502623f6c8a197efdf03f3
5
5
  SHA512:
6
- metadata.gz: 7bdec134c9d33a26ab24c734220ba639465f2b7f1bc6e49333beebf80a6ee73794d603566aa5ca429b296718f1cdaa52d4ee98d5044b96981a60d64aeca724df
7
- data.tar.gz: 7242fb4e8e3d1c19da49557238921b5ee5f91b7891f5710d39a136ed25127781c0db7269aece6ab08d167d53196dea16fbf98ddb07ef7b28c82b46d0c38d474d
6
+ metadata.gz: 922db0c489085b5b86160658965b8154701f09ab826c5b5eed58547dcc61b13c89ebc1bbe98aba9eb44c63615dafb9039ca0e4214fbc31b6215466b82722ba3b
7
+ data.tar.gz: fdafc2ffdd7995f6c7c91e8af09845c58e3ac682924c79f23b2f5ce1108bc9a671f435ff7af985e55b74ed69e8f8b5ad22d8cd92ad73001f00c1b9353f1f7daa
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.27
1
+ 0.2.28
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: flydata 0.2.28 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "flydata"
8
- s.version = "0.2.27"
9
+ s.version = "0.2.28"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Koichi Fujikawa", "Masashi Miyazaki", "Matthew Luu", "Mak Inada", "Sriram NS"]
12
- s.date = "2015-01-08"
14
+ s.date = "2015-01-16"
13
15
  s.description = "FlyData Agent"
14
16
  s.email = "sysadmin@flydata.com"
15
17
  s.executables = ["fdmysqldump", "flydata", "serverinfo"]
@@ -144,8 +146,7 @@ Gem::Specification.new do |s|
144
146
  ]
145
147
  s.homepage = "http://flydata.com/"
146
148
  s.licenses = ["All right reserved."]
147
- s.require_paths = ["lib"]
148
- s.rubygems_version = "2.0.14"
149
+ s.rubygems_version = "2.2.2"
149
150
  s.summary = "FlyData Agent"
150
151
 
151
152
  if s.respond_to? :specification_version then
@@ -86,6 +86,8 @@ module Flydata
86
86
  sync_fm.mysql_table_marshal_dump_path,
87
87
  sync_fm.sync_info_file,
88
88
  sync_fm.table_position_file_paths(*tables),
89
+ sync_fm.table_binlog_pos_paths(*tables),
90
+ sync_fm.table_binlog_pos_init_paths(*tables),
89
91
  sync_fm.table_rev_file_paths(*tables)
90
92
  ]
91
93
  delete_files << sync_fm.binlog_path if tables.empty?
@@ -352,20 +354,23 @@ EOM
352
354
  db_bytesize = Flydata::Parser::Mysql::DatabaseSizeCheck.new(de['mysql_data_entry_preference']).get_db_bytesize
353
355
  log_info_stdout(" -> #{as_size(db_bytesize)} (#{db_bytesize} byte)")
354
356
 
355
- # check free disk space
356
- free_disk_bytesize = free_disk_space(File.dirname(fp))
357
- if (free_disk_bytesize - db_bytesize) < (1024 * 1024 * 1024) # 1GB
358
- log_warn_stderr("!!WARNING There may not be enough disk space for a DB dump. We recommend 1GB free disk space after the dump. free disk space:#{as_size(free_disk_bytesize)}(#{free_disk_bytesize} byte) /" +
359
- " db size:#{as_size(db_bytesize)}(#{db_bytesize} byte)")
360
- unless ask_yes_no('Do you want to continue?')
361
- log_warn_stderr("To change the dump file directory, delete '#' and modify the path of 'mysqldump_dir:' in '#{Preference::DataEntryPreference.conf_path(de)}'")
362
- exit 1
357
+ if file_dump
358
+ # check free disk space
359
+ free_disk_bytesize = free_disk_space(File.dirname(fp))
360
+ if (free_disk_bytesize - db_bytesize) < (1024 * 1024 * 1024) # 1GB
361
+ log_warn_stderr("!!WARNING There may not be enough disk space for a DB dump. We recommend 1GB free disk space after the dump. free disk space:#{as_size(free_disk_bytesize)}(#{free_disk_bytesize} byte) /" +
362
+ " db size:#{as_size(db_bytesize)}(#{db_bytesize} byte)")
363
+ unless ask_yes_no('Do you want to continue?')
364
+ log_warn_stderr("To change the dump file directory, delete '#' and modify the path of 'mysqldump_dir:' in '#{Preference::DataEntryPreference.conf_path(de)}'")
365
+ exit 1
366
+ end
363
367
  end
364
368
  end
365
369
 
370
+
366
371
  log_info_stdout("Exporting data from database.")
367
372
  log_info_stdout("This process can take hours depending on data size and load on your database. Please be patient...")
368
- Flydata::MysqlCompatibilityCheck.new(dp, de['mysql_data_entry_preference'], fp).check
373
+ Flydata::MysqlCompatibilityCheck.new(dp, de['mysql_data_entry_preference'], dump_dir: fp, backup_dir: sync_fm.backup_dir).check
369
374
  if file_dump
370
375
  Flydata::Parser::Mysql::MysqlDumpGeneratorNoMasterData.
371
376
  new(de['mysql_data_entry_preference']).dump(fp)
@@ -541,7 +546,7 @@ Thank you for using FlyData!
541
546
  if de['mysql_data_entry_preference']['initial_sync']
542
547
  sync_fm.save_binlog(info[:binlog_pos])
543
548
  end
544
- sync_fm.move_table_binlog_files(de['mysql_data_entry_preference']['tables'].split(','))
549
+ sync_fm.install_table_binlog_files(de['mysql_data_entry_preference']['tables'].split(','))
545
550
  sync_fm.reset_table_position_files(de['mysql_data_entry_preference']['tables'].split(','))
546
551
  sync_fm.delete_dump_file
547
552
  sync_fm.backup_dump_dir
@@ -81,7 +81,8 @@ module Flydata
81
81
  def initialize(dp_hash, de_hash, options={})
82
82
  super
83
83
  @db_opts = [:host, :port, :username, :password, :database].inject({}) {|h, sym| h[sym] = de_hash[sym.to_s]; h}
84
- @dump_dir = options['dump_dir'] || nil
84
+ @dump_dir = options[:dump_dir] || nil
85
+ @backup_dir = options[:backup_dir] || nil
85
86
  end
86
87
 
87
88
  def print_errors
@@ -187,10 +188,11 @@ module Flydata
187
188
  write_errors = []
188
189
  paths_to_check = ["~/.flydata"]
189
190
  paths_to_check << @dump_dir unless @dump_dir.to_s.empty?
191
+ paths_to_check << @backup_dir unless @backup_dir.to_s.empty?
190
192
  paths_to_check.each do |path|
191
193
  full_path = File.expand_path(path)
192
194
  full_path = File.dirname(full_path) unless File.directory?(full_path)
193
- write_errors << full_path unless File.writable?(full_path)
195
+ write_errors << full_path unless File.writable?(full_path) and File.executable?(full_path)
194
196
  end
195
197
  unless write_errors.empty?
196
198
  error_dir = write_errors.join(", ")
@@ -242,6 +244,3 @@ module Flydata
242
244
  end
243
245
 
244
246
  end
245
-
246
-
247
-
@@ -79,6 +79,16 @@ module Flydata
79
79
  tables.map{|table| File.join(table_positions_dir_path, table + '.pos')}
80
80
  end
81
81
 
82
+ def table_binlog_pos_paths(*tables)
83
+ tables.empty? ? Dir.glob(File.join(table_positions_dir_path, '*.binlog.pos')) :
84
+ tables.map{|table| File.join(table_positions_dir_path, table + '.binlog.pos')}
85
+ end
86
+
87
+ def table_binlog_pos_init_paths(*tables)
88
+ tables.empty? ? Dir.glob(File.join(table_positions_dir_path, '*.binlog.pos.init')) :
89
+ tables.map{|table| File.join(table_positions_dir_path, table + '.binlog.pos.init')}
90
+ end
91
+
82
92
  # Read a sequence number from the table's position file,
83
93
  # increment the number and pass the number to a block.
84
94
  # After executing the block, saves the value to the position
@@ -184,14 +194,18 @@ module Flydata
184
194
  end
185
195
  end
186
196
 
187
- def move_table_binlog_files(tables)
197
+ def install_table_binlog_files(tables)
188
198
  FileUtils.mkdir_p(table_positions_dir_path) unless Dir.exists?(table_positions_dir_path)
189
199
  tables.each do |table_name|
190
- file = File.join(dump_dir, table_name + ".binlog.pos")
191
- if ! File.exists?(file)
192
- raise "#{file} does not exist. Error!!"
200
+ file_name = table_name + ".binlog.pos"
201
+ src_file = File.join(dump_dir, file_name)
202
+ if ! File.exists?(src_file)
203
+ raise "#{src_file} does not exist. Error!!"
193
204
  end
194
- FileUtils.mv(file, table_positions_dir_path)
205
+ FileUtils.mv(src_file, table_positions_dir_path)
206
+ # save the position at initial sync. this is used for repair if
207
+ # necessary.
208
+ FileUtils.cp(File.join(table_positions_dir_path, file_name), File.join(table_positions_dir_path, file_name + ".init"))
195
209
  end
196
210
  end
197
211
 
@@ -204,7 +218,11 @@ module Flydata
204
218
  FileUtils.mkdir_p(backup_dir) unless Dir.exists?(backup_dir)
205
219
  dest_dir = File.join(backup_dir, Time.now.strftime("%Y%m%d%H%M%S"))
206
220
  FileUtils.mkdir(dest_dir)
207
- FileUtils.mv(dump_dir, dest_dir)
221
+ FileUtils.mv(Dir.glob("#{dump_dir}/*"), dest_dir)
222
+ end
223
+
224
+ def backup_dir
225
+ BACKUP_DIR
208
226
  end
209
227
 
210
228
  private
@@ -60,6 +60,7 @@ module Flydata
60
60
  default_data_entry['mysql_data_entry_preference'].delete('mysqldump_dir')
61
61
  end
62
62
  it do
63
+ stub_const('Flydata::FileUtil::SyncFileManager::DUMP_DIR', File.join(Flydata::FLYDATA_HOME, 'dump'))
63
64
  expect(default_sfm.dump_file_path).to eq(
64
65
  File.join(Flydata::FLYDATA_HOME, 'dump', 'flydata_sync_mysql.dump'))
65
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flydata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.27
4
+ version: 0.2.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi Fujikawa
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-01-08 00:00:00.000000000 Z
15
+ date: 2015-01-16 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rest-client
@@ -566,7 +566,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
566
566
  version: '0'
567
567
  requirements: []
568
568
  rubyforge_project:
569
- rubygems_version: 2.0.14
569
+ rubygems_version: 2.2.2
570
570
  signing_key:
571
571
  specification_version: 4
572
572
  summary: FlyData Agent