• MySQL数据导出导入任务脚本


    #!/usr/bin/env python
    #-*- encoding: utf8 -*-

    import time
    import os
    import mysql.connector

    #定义一些全局变量  
    work_dir="/data1/dbacrontab/tmptranfiles/"
    mysqldump_data_list=[]
    mysqldump_struc_list=[]
    mysqldump_datastruc_list=[]
    mysqldump_config_list=[]

    # 此函数用来打印输出日志        
    def print_log(mylogprint):
        my_log_day = time.strftime("%Y-%m-%d")
        my_log_time = time.strftime("%Y-%m-%d %H:%M:%S")
        my_log_file = work_dir+'log_'+my_log_day+'.log'
        with open(my_log_file,"aw") as f:
            f.write(my_log_time+' '+mylogprint)

    # 此函数用来导出数据
    def export_mysqldump(getdbconfig,exportdbconfig):
        # status='1'表示此表需要导出,status='0'表示此表不需要导出。
        # export_data='1'表示导出数据和结构,export_data='0'表示不导出数据,只导出结构。
        sql_export_data = "select distinct  ALIAS,SCHEMA_NAME,TABLE_NAME,export_data,status,1_133_status as status_1_133  from dbaconfig.cf_export_tables "
        cnn = mysql.connector.connect(**getdbconfig)    
        cursor = cnn.cursor()
        cursor.execute(sql_export_data)
         
        export_user=exportdbconfig['user']
        export_password=exportdbconfig['password']
        export_port=exportdbconfig['port']
                    
        for (ALIAS,SCHEMA_NAME,TABLE_NAME,export_data,status,status_1_133) in cursor:                                    
            mysqldump_name=work_dir+ALIAS+'-'+SCHEMA_NAME+'-'+TABLE_NAME+'.sql'                     
            ifexport_data=str(export_data)
            ifstatus=str(status)
            ifstatus_1_133=str(status_1_133)
           
            # 导出数据和结构
            if ifstatus == '1' and ifexport_data == '1':
                mysqldump_nodata= " "
                mysqldumcmd="mysqldump -h%s   -u%s -p%s -P%s --replace %s  --single-transaction --skip-add-locks --complete-insert %s %s  > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
                os.system(mysqldumcmd)
                mysqldump_data_list.append(mysqldump_name)
                print_log("export data: from_service=%s, from_database=%s, from_table=%s  " % (ALIAS,SCHEMA_NAME,TABLE_NAME))
                
            # 不导出数据,只导出结构
            if ifstatus == '1' and ifexport_data == '0':
                mysqldump_nodata= "-d"
                mysqldumcmd="mysqldump -h%s   -u%s -p%s -P%s --replace %s  --single-transaction --skip-add-locks --complete-insert %s %s  > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
                os.system(mysqldumcmd)
                mysqldump_struc_list.append(mysqldump_name)
                print_log("export only structure: from_service=%s, from_database=%s, from_table=%s  " % (ALIAS,SCHEMA_NAME,TABLE_NAME))
                
            # 导出config_mobp2p数据库数据
            if ifstatus_1_133 == '1':
                mysqldump_nodata= " "
                mysqldumcmd="mysqldump -h%s   -u%s -p%s -P%s --replace %s  --single-transaction --skip-add-locks --complete-insert %s %s  > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
                os.system(mysqldumcmd)
                mysqldump_config_list.append(mysqldump_name)    
                print_log("export config_mobp2p data: from_service=%s, from_database=%s, from_table=%s  " % (ALIAS,SCHEMA_NAME,TABLE_NAME))     
     
                
    # 此函数用来导入数据
    def import_from_mysqldump(mysqldump_file,importdbconfig):
        import_host=importdbconfig['host']
        import_user=importdbconfig['user']
        import_password=importdbconfig['password']
        import_port=importdbconfig['port']
        
        for dumpsql in  mysqldump_file:        
            print_log("import_data: %s " % (dumpsql))    
            mysqlimport=" mysql -h%s -u%s -p%s -P%s mobp2p  < %s  " % (import_host,import_user,import_password,import_port,dumpsql)
            os.system(mysqlimport)

    # 定义合并两个list函数
    def merge_list(list_1,list_2,list_all):
        for item in list_1:
            list_all.append(item)
        for item in list_2:
            list_all.append(item)    
        return list_all

    # 定义导出列表数据库相关信息,根据dbaconfig.cf_export_tables可判断要导出那些表
    getdbconfig_13_105={
    'host':'xxxx',
    'user':'xxxx',
    'password':'xxxx',
    'port':'xxxx',
    'database':'xxxx'
    }

    # 定义要导出数据库信息
    exportdbconfig_exp={
    'user':'xxxx',
    'password':'xxxx',
    'port':'xxxx',
    }

    # 定义要导入数据库信息
    importdbconfig_13_106={
    'host':'xxxx',
    'user':'xxxx',
    'password':'xxxx',
    'port':'xxxx'
    }


    print_log("==================== 开始导出数据 ==================== ")        
    export_mysqldump(getdbconfig_13_105,exportdbconfig_exp)
    print_log("==================== 数据导出完毕 ==================== ")
     

    # 把 mysqldump_data_list 、 mysqldump_struc_list 两个列表合并成 mysqldump_datastruc_list 一个列表
    merge_list(mysqldump_data_list,mysqldump_struc_list,mysqldump_datastruc_list)

    # 根据列表 mysqldump_datastruc_list 内容,导入数据到 importdbconfig_13_106
    print_log("==================== 开始导入数据到 10.30.13.106 ==================== ")
    import_from_mysqldump(mysqldump_datastruc_list,importdbconfig_13_106)
    print_log("==================== 导入数据到 10.30.13.106 完毕 ==================== ")

    # 根据列表 mysqldump_config_list 内容,导入数据到 importdbconfig_13_106
    print_log("==================== 开始导入config_mobp2p数据库数据到 10.30.13.106 ==================== ")
    import_from_mysqldump(mysqldump_config_list,importdbconfig_13_106)
    print_log("==================== 导入数据到 10.30.13.106 完毕 ==================== ")


     

  • 相关阅读:
    极客时间-左耳听风-程序员攻略-异步I/O模型和Lock-Free编程
    将SSRF升级为RCE(AWS环境)
    PowerShell ISE/文件名解析缺陷远程执行代码漏洞#RCE
    利用工具破解HTTP身份验证的多种方法
    ICMP shell
    CVE-2018-19386:SolarWinds数据库性能分析器中反射的XSS
    Recon ASRC Conference
    Python扫描器-爬虫基础
    The Bug Hunters Methodology v3(ish)
    svn状态图标大全
  • 原文地址:https://www.cnblogs.com/l10n/p/7594881.html
Copyright © 2020-2023  润新知