mysql export import_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  \n" % (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  \n" % (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  \n" % (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 \n" % (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("==================== 开始导出数据 ====================\n")

export_mysqldump(getdbconfig_13_105,exportdbconfig_exp)

print_log("==================== 数据导出完毕 ====================\n")

# 把 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 ====================\n")

import_from_mysqldump(mysqldump_datastruc_list,importdbconfig_13_106)

print_log("==================== 导入数据到 10.30.13.106 完毕 ====================\n")

# 根据列表 mysqldump_config_list 内容,导入数据到 importdbconfig_13_106

print_log("==================== 开始导入config_mobp2p数据库数据到 10.30.13.106 ====================\n")

import_from_mysqldump(mysqldump_config_list,importdbconfig_13_106)

print_log("==================== 导入数据到 10.30.13.106 完毕 ====================\n")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值