class MysqlSlaver::DbCopier
Attributes
database[RW]
executor[RW]
master_host[RW]
mysql_root_password[RW]
port[RW]
socket_file[RW]
tables[RW]
Public Class Methods
new(params)
click to toggle source
# File lib/mysql_slaver/db_copier.rb, line 7 def initialize(params) @master_host = params.fetch(:master_host) @mysql_root_password = params.fetch(:mysql_root_password, '') @database = params.fetch(:database) @port = params.fetch(:port, nil) @socket_file = params.fetch(:socket_file, nil) @executor = params.fetch(:executor) { Executor.new(ssh_port: params[:ssh_port]) } @tables = params.fetch(:tables, nil) end
Public Instance Methods
copy!()
click to toggle source
# File lib/mysql_slaver/db_copier.rb, line 17 def copy! executor.execute mysql_command("stop slave", mysql_params) cmd = mysqldump dump_cmd = executor.ssh_command(cmd, master_host) load_cmd = ['mysql', mysql_credentials('root', mysql_params), database].join(' ') command = [dump_cmd, load_cmd].join(' | ') executor.execute command end
Private Instance Methods
mysql_params()
click to toggle source
# File lib/mysql_slaver/db_copier.rb, line 28 def mysql_params { root_password: mysql_root_password, socket_file: socket_file } end
mysqldump()
click to toggle source
# File lib/mysql_slaver/db_copier.rb, line 35 def mysqldump creds = mysql_credentials('root', mysql_params) rtn = %[mysqldump] rtn << %[ -P #{port}] if port rtn << %[ #{creds} -h #{master_host} --master-data --single-transaction --quick --skip-add-locks --skip-lock-tables --default-character-set=utf8 --compress #{database}] rtn << %[ #{tables}] unless tables.to_s.empty? rtn end