Class: Flydata::Util::MysqlUtil

Inherits:
Object
  • Object
show all
Defined in:
lib/flydata/util/mysql_util.rb

Constant Summary collapse

DEFAULT_MYSQL_CMD_OPTION =
"--default-character-set=utf8 --protocol=tcp"

Class Method Summary collapse

Class Method Details

.generate_mysql_cmd(option) ⇒ Object

Generate mysql/mysqldump command with options options must be hash

  • command # mysql(default) | mysqldump

  • host

  • port

  • username

  • password

  • database

  • tables # array

  • custom_option # string

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/flydata/util/mysql_util.rb', line 16

def self.generate_mysql_cmd(option)
  raise ArgumentError.new("option must be hash.") unless option.kind_of?(Hash)
  option = convert_keys_to_sym(option)
  command = option[:command] ? option[:command] : 'mysql'
  host = option[:host] ? "-h #{option[:host]}" : nil
  port = option[:port] ? "-P #{option[:port]}" : nil
  username = option[:username] ? "-u#{option[:username]}" : nil
  password = if !(option[:password].to_s.empty?)
               "-p\"#{option[:password].gsub('`', '\\\`')}\""
             else
               nil
             end
  database = option[:database]
  tables = option[:tables] ? option[:tables].join(' ') : nil
  default_option = option[:no_default_option] ? nil : DEFAULT_MYSQL_CMD_OPTION
  custom_option = option[:custom_option]

  [command, host, port, username, password, default_option,
   custom_option, database, tables].compact.join(' ')
end

.generate_mysql_ddl_dump_cmd(option) ⇒ Object

DDL_DUMP_CMD_TEMPLATE = “MYSQL_PWD="%s" mysqldump –protocol=tcp -d -h %s -P %s -u %s %s %s”



38
39
40
41
42
43
# File 'lib/flydata/util/mysql_util.rb', line 38

def self.generate_mysql_ddl_dump_cmd(option)
  opt = option.dup
  opt[:command] = 'mysqldump'
  opt[:custom_option] = '-d'
  generate_mysql_cmd(opt)
end

.generate_mysql_show_grants_cmd(option) ⇒ Object



60
61
62
63
64
65
# File 'lib/flydata/util/mysql_util.rb', line 60

def self.generate_mysql_show_grants_cmd(option)
  opt = option.dup
  opt[:command] = 'mysql'
  opt[:custom_option] = '-e "SHOW GRANTS;"'
  generate_mysql_cmd(opt)
end

.generate_mysqldump_with_master_data_cmd(option) ⇒ Object

MYSQL_DUMP_CMD_TEMPLATE = “MYSQL_PWD="%s" mysqldump –default-character-set=utf8 –protocol=tcp -h %s -P %s -u%s –skip-lock-tables –single-transaction –hex-blob %s %s %s”



46
47
48
49
50
51
# File 'lib/flydata/util/mysql_util.rb', line 46

def self.generate_mysqldump_with_master_data_cmd(option)
  opt = option.dup
  opt[:command] = 'mysqldump'
  opt[:custom_option] = '--skip-lock-tables --single-transaction --hex-blob --flush-logs --master-data=2'
  generate_mysql_cmd(opt)
end

.generate_mysqldump_without_master_data_cmd(option) ⇒ Object



53
54
55
56
57
58
# File 'lib/flydata/util/mysql_util.rb', line 53

def self.generate_mysqldump_without_master_data_cmd(option)
  opt = option.dup
  opt[:command] = 'mysqldump'
  opt[:custom_option] = '--skip-lock-tables --single-transaction --hex-blob'
  generate_mysql_cmd(opt)
end