首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MySQL 5.5 DBA工具 多进程dump 多进程load 多进程备份复原 python 脚本

2012-09-27 
MySQL 5.5 DBA工具 多进程dump 多进程load 多进程备份还原python 脚本需要安装 python MySQL-python gzip

MySQL 5.5 DBA工具 多进程dump 多进程load 多进程备份还原 python 脚本

需要安装 python MySQL-python gzip : yum install python MySQL-python gzip -y

原文链接:http://blog.csdn.net/ylqmf/article/details/7993701

dump 脚本

'''Created on 2012-8-20mysql dump to load@author: tudou@b2c.xiaomi.com'''import os,MySQLdb,multiprocessingmysql_bak='/tmp/mysqlbak/2012-09-18-21-44-34'mysql_base='/opt/soft/mysql_5.5.25'unix_socket='/tmp/mysql.sock'dump_user='root'dump_pwd='123456'dump_database={'test':'test'}#dump_database={'test':'test','mysql':'mysql'}def start_process():    print ('MySQLinput starting', multiprocessing.current_process().name)#input shcema#load data#input objectclass mysqlinput(object):    def __init__(self,conf):        self.conf=conf            def input(self):        os.system('chmod 777 -R '+mysql_bak)        dirnames=os.listdir(mysql_bak)        for dirname in dirnames:            #print dirname            if dump_database.has_key(dirname):                self.inputschema(dirname)                                for dirname in dirnames:            if dump_database.has_key(dirname):                self.loadata(dirname)        for dirname in dirnames:            if dump_database.has_key(dirname):                self.inputobject(dirname)            def inputschema(self,dbconf):        print "gunzip -cd "+mysql_bak+"/"+dbconf+"/schema/schemainfo.gz | "+mysql_base+"/bin/mysql -u"+dump_user+" -p****** -S"+unix_socket        os.system("gunzip -cd "+mysql_bak+"/"+dbconf+"/schema/schemainfo.gz | "+mysql_base+"/bin/mysql -u"+dump_user+" -p"+dump_pwd+" -S"+unix_socket+" "+dbconf)            def loadata(self,dbconf):        pool_size = multiprocessing.cpu_count()        pool = multiprocessing.Pool(processes=pool_size,initializer=start_process,)        filenames=os.listdir(mysql_bak+"/"+dbconf)        for filename in filenames:            filepath=mysql_bak+"/"+dbconf+"/"+filename            if os.path.isfile(filepath):                fileconf={'dbname':dbconf,'gzfile':filepath,'filename':filepath,'tablename':filename[0:len(filename)-4]}                c=fileconf['gzfile']                if c[len(c)-3:len(c)]=='.gz':                    fileconf={'dbname':dbconf,'gzfile':filepath,'filename':filepath[0:len(filepath)-3],'tablename':filename[0:len(filename)-7]}                pool.apply_async(self.mygunzip(fileconf))                        pool.close() # no more tasks        pool.join()  # wrap up current tasks            def mygunzip(self,fileconf):        c=fileconf['gzfile']        if c[len(c)-3:len(c)]=='.gz':            os.system("gunzip "+fileconf['gzfile'])                    self.loadpertable(fileconf)            def loadpertable(self,fileconf):        sql="TRUNCATE \`"+fileconf['dbname']+"\`.\`"+fileconf['tablename']+"\`;LOAD DATA INFILE '"+fileconf['filename']+"' INTO TABLE \`"+fileconf['dbname']+"\`.\`"+fileconf['tablename']+"\`;"        print sql        os.system(mysql_base+"/bin/mysql -u"+dump_user+" -p"+dump_pwd+" -S"+unix_socket+" -e\""+sql+"\"")        def inputobject(self,dbconf):        print "gunzip -cd "+mysql_bak+"/"+dbconf+"/schema/objectinfo.sql.gz | "+mysql_base+"/bin/mysql -u"+dump_user+" -p****** -S"+unix_socket        os.system("gunzip -cd "+mysql_bak+"/"+dbconf+"/schema/objectinfo.gz | "+mysql_base+"/bin/mysql -u"+dump_user+" -p"+dump_pwd+" -S"+unix_socket+" "+dbconf)            if __name__ == '__main__':    conf={'host':'localhost','socket':unix_socket,'user':dump_user,'pwd':dump_pwd,'db':'information_schema'}    input=mysqlinput(conf);    input.input();    print "load success"
原文链接:http://blog.csdn.net/ylqmf/article/details/7993701

热点排行