コード例 #1
0
ファイル: inception.py プロジェクト: zhonghua001/sbdb
def get_single_rollback(backupDb,opid_time):
    sqllist = []
    tbNamesql = "select tablename from %s.$_$Inception_backup_information$_$ where opid_time='%s';" % (backupDb, opid_time)
    results,col = func.mysql_query(tbNamesql,incept_backup_user,incept_backup_passwd,incept_backup_host,int(incept_backup_port),backupDb)

    if len(results) > 0:
        tbName = results[0][0]
        backsql = "select rollback_statement from %s.%s where opid_time='%s' order by id desc" % (backupDb, tbName, opid_time)
        results,col = func.mysql_query(backsql,incept_backup_user,incept_backup_passwd,incept_backup_host,int(incept_backup_port),backupDb)
        for row in results :
            sqllist.append(row[0])
        return sqllist
    else:
        return sqllist
コード例 #2
0
ファイル: inception.py プロジェクト: zhonghua001/sbdb
def task_running_status(idnum):
    task = Task.objects.get(id=idnum)
    if task.status=='executed failed'or task.status=='executed':
        data = Incep_error_log.objects.filter(create_time=task.create_time, finish_time=task.update_time, task_id = idnum).order_by("myid")
        col =[f.name for f in Incep_error_log._meta.get_fields()]
        #delete first element "ID"
        del col[0], col[1]
        return data,col
    elif task.status == 'running':
        text = task.sqlsha
        if text=='':
            try:
                tar_username, tar_passwd, tar_host,  tar_port,tar_dbname = get_db_info(task)
                sql = "select * from information_schema.processlist where Db='" + tar_dbname + "'" + " and USER='******' order by TIME desc"
                return func.mysql_query(sql, tar_username, tar_passwd, tar_host, int(tar_port), 'information_schema')
            except Exception,e:
                return([e],''),['info']
        else:
            for i in text.split('^^'):
                x = i.split('*')
                if  len(x)>=2:
                    sqlsha = '*'+ x[1]
                    datalist,collist,mynum = incep_getstatus(sqlsha)
                    #add sqltext to the end of the tuple
                    if mynum >0:
                        for d in datalist:
                            data=d+(x[0],)
                        collist.append('SQLTEXT')
                        cols = collist
                        data = (data,)
                        break
            if not vars().has_key('data'):
                data = (['wait in running queue'], '')
                cols = ['info']
            return data,cols
コード例 #3
0
def inception_check(hosttag, sql, flag=0):
    make_sure_mysql_usable()
    a = Db_name.objects.get(dbtag=hosttag)
    #a = Db_name.objects.get(dbtag=hosttag)
    tar_dbname = a.dbname
    if (not cmp(sql, wrong_msg)):
        results, col = func.mysql_query(wrong_msg, user, passwd, host,
                                        int(port), dbname)
        return results, col, tar_dbname
    try:
        if a.instance.all().filter(role='write')[0]:
            tar_host = a.instance.all().filter(role='write')[0].ip
            tar_port = a.instance.all().filter(role='write')[0].port
    except Exception, e:
        try:
            tar_host = a.instance.all().filter(role='all')[0].ip
            tar_port = a.instance.all().filter(role='all')[0].port
        except Exception, e:
            wrongmsg = "select \"" + str(e).replace('"', "\"") + "\""
            results, col = func.mysql_query(wrongmsg, user, passwd, host,
                                            int(port), dbname)
            return results, col, tar_dbname
コード例 #4
0
ファイル: inception.py プロジェクト: zhonghua001/sbdb
def inception_check(tar_dbname,db_account,sql,flag=0):


    make_sure_mysql_usable()
    pc = prpcrypt()
    tar_username = db_account.user
    tar_passwd = pc.decrypt(db_account.passwd)
    tar_host = db_account.instance.ip
    tar_port = db_account.instance.port


    #print tar_port+tar_passwd+tar_username+tar_host
    try:
        results,col = incep_exec(sql,tar_username,tar_passwd,tar_host,tar_port,tar_dbname,flag)
        return results,col,tar_dbname
    except Exception,e:
        wrongmsg = e
        results, col = func.mysql_query(wrongmsg, user, passwd, host, int(port), dbname)
        return results, col, tar_dbname
コード例 #5
0
            results, col = func.mysql_query(wrongmsg, user, passwd, host,
                                            int(port), dbname)
            return results, col, tar_dbname
    for i in a.db_account_set.all():
        if i.role == 'admin':
            tar_username = i.user
            tar_passwd = i.passwd
            break
    #print tar_port+tar_passwd+tar_username+tar_host
    try:
        results, col = incep_exec(sql, tar_username, tar_passwd, tar_host,
                                  tar_port, tar_dbname, flag)
        return results, col, tar_dbname
    except Exception, e:
        wrongmsg = "select \"no admin account being setted\""
        results, col = func.mysql_query(wrongmsg, user, passwd, host,
                                        int(port), dbname)
        return results, col, tar_dbname


# def process_runtask(hosttag,sqltext,mytask):
#     time.sleep(1)
#     results,col,tar_dbname = inception_check(hosttag,sqltext,1)
#     status='executed'
#     c_time = mytask.create_time
#     mytask.update_time = timezone.now()
#     make_sure_mysql_usable()
#     mytask.save()
#     for row in results:
#         try:
#             inclog = Incep_error_log(myid=row[0],stage=row[1],errlevel=row[2],stagestatus=row[3],errormessage=row[4],\
#                          sqltext=row[5],affectrow=row[6],sequence=row[7],backup_db=row[8],execute_time=row[9],sqlsha=row[10],\