def scp_bet_two_servers(self): # 远程第三方执行,在另两个server间copy text = "%s %s" % ( datetime.datetime.now(), "Three: Scp between two servers,Please wait ....") print "\033[1;32;40m%s\033[0m" % text # 绿色 log_w(text) #from_file = '/apps/bak_db_%s.sql' % self.today from_file = '/apps/mydumper_export/bak.tar' to_dir = '/apps/mydumper_import' r=func.remote_exe_scp_bet_two_servers( self.from_host, self.to_host, self.os_password_source, self.os_password_target, from_file, to_dir ) if r == '': text = "%s Scp between two servers Execute success !" % datetime.datetime.now() log_w(text) print "\033[1;32;40m%s\033[0m" % text # 绿色 else: text = "%s Scp between two servers Execute Error !" % datetime.datetime.now() log_w(text) print "\033[1;31;40m%s\033[0m" % text # 古铜色 return r
def scp_bet_two_servers(self,v_prosess_id): # 远程第三方执行,在另两个server间copy mydumper导出文件 text = "%s %s" % ( datetime.datetime.now(), "Three: Scp between two servers,Please wait ....") print "\033[1;32;40m%s\033[0m" % text # 绿色 log_w(text) #from_file = '/apps/bak_db_%s.sql' % self.today from_file = '%s/bak.tar' % (self.mydumper_export_path) #to_dir = '/apps/mydumper_import' to_dir = self.mydumper_import_path v_scp_bet_two_server = 'scp -r apps@%s:%s apps@%s:%s' % (self.from_host,from_file,self.to_host,to_dir) v_update_sql = '''update dba_job_progress set cur_prog_shell_cmd = ' ''' + v_scp_bet_two_server +''' ' where id= '''+ str(v_prosess_id) print v_update_sql self.db.execute(v_update_sql) r=func.remote_exe_scp_bet_two_servers( self.from_host, self.to_host, self.os_password_source, self.os_password_target, from_file, to_dir ) if r == '': text = "%s Scp between two servers Execute success !" % datetime.datetime.now() log_w(text) print "\033[1;32;40m%s\033[0m" % text # 绿色 else: text = "%s Scp between two servers Execute Error ! %s" % (datetime.datetime.now(),r) log_w(text) print "\033[1;31;40m%s\033[0m" % text # 古铜色 return r
def scp_xtra_bet_two_servers(self,v_prosess_id): text = "%s %s" % ( datetime.datetime.now(), "Three: Scp between two servers,Please wait ....") print "\033[1;32;40m%s\033[0m" % text # 绿色 log_w(text) from_file="%s/%s" % (self.xtrabackup_export_path,self.xtra_time) to_dir = self.xtrabackup_restore_path # datadir= /apps/dbdat v_scp_bet_two_server = 'scp -r apps@%s:%s apps@%s:%s' % (self.from_host,from_file,self.to_host,to_dir) v_update_sql = '''update dba_job_progress set cur_prog_shell_cmd = ' ''' + v_scp_bet_two_server +''' ' where id= '''+ str(v_prosess_id) print v_update_sql self.db.execute(v_update_sql) r=func.remote_exe_scp_bet_two_servers( self.from_host, self.to_host, self.os_password_source, self.os_password_target, from_file, to_dir ) if r == '': text = "%s Scp between two servers Execute success !" % datetime.datetime.now() log_w(text) print "\033[1;32;40m%s\033[0m" % text # 绿色 # 把target 机器的datadir move,然后把新copy的xtra 目录,move 为原来的数据目录名 # 首先获取Target datadir 目录名 mariadb10_data3306 # v_target_datadir_path = func.remote_off_get_datadir_path(self.to_host,self.db_port_target,2) # cd /apps/dbdat; mv mariadb10_data3306 mariadb10_data3306_时间戳; # mv self.xtra_time mariadb10_data3306 v_exe_cmd = r'''cd %s;mv %s %s_%s;mv %s %s''' % ( to_dir,v_target_datadir_path,v_target_datadir_path,self.xtra_time,self.xtra_time,v_target_datadir_path) v_exe_cmd_1 = r'''cd %s;mv %s %s_%s;mv %s %s''' % ( to_dir,v_target_datadir_path,v_target_datadir_path,self.xtra_time,self.xtra_time,v_target_datadir_path) v_update_sql = '''update dba_job_progress set cur_prog_shell_cmd = ' ''' + v_exe_cmd_1 +''' ' where id= '''+ str(v_prosess_id) print v_exe_cmd_1 print v_update_sql self.db.execute(v_update_sql) print v_exe_cmd r = func.remote_shell_cmd_no_result(self.to_host,self.os_user, self.os_password_target,v_exe_cmd) #r 返回空串表示成功 else: text = "%s Scp between two servers Execute Error ! %s" % (datetime.datetime.now(),r) log_w(text) print "\033[1;31;40m%s\033[0m" % text # 古铜色 return r