欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

MySQLpython數據遷移腳本

用python寫了個數據遷移腳本,主要是利用從庫將大的靜態(tài)表導出表空間,載導入到目標實例中。

創(chuàng)新互聯建站-專業(yè)網站定制、快速模板網站建設、高性價比滕州網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式滕州網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋滕州地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

#!/usr/bin/env python3
#-*- coding:utf8 -*-
#author:zhanbin.liu
#!!!!!DB必須同版本
#python3環(huán)境   pip3 install pyMySQL paramiko

import os
#from pathlib import Path
import sys
import pymysql
import paramiko

#每次只能遷移一個DB下的表,到指定DB
#GRANT SELECT, CREATE, RELOAD, ALTER, LOCK TABLES ON *.* TO 'data_migration'@'192.168.%' IDENTIFIED BY  'data_migration@123';
tables='sqlauto_cluster,sqlauto_user'       #以,分割的字符串,如a,b,c
tableList = tables.split(',')
sourceIp = '192.168.1.101'
sourceDataBase = '/data/mysql/3306/data'
sourceDbName = 'inception_web'
sourceDataDir = os.path.join(sourceDataBase,sourceDbName)
desIp = '192.168.1.102'
desDataBase = '/data/mysql/3306/data'
desDbName = 'inception_web'
desDataDir = os.path.join(desDataBase,desDbName)

# for table in tableList:
#     desFile = Path("%s/%s.ibd" %(desDataDir,table))
#     print(desFile)
#     if desFile.is_file():
#         print("ok")
#     else:
#         print("no")

comUser = 'data_migration'
comPwd = 'data_migration@123'
comPort = 3306

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def table_judge():
    print("table_judge")
    sourceTableExist = pymysql.connect(sourceIp,comUser,comPwd,sourceDbName,comPort,charset='utf8')
    desTableExist = pymysql.connect(desIp,comUser,comPwd,desDbName,comPort,charset='utf8')
    sourceTables = []
    desTables = []
    cursor_source = sourceTableExist.cursor()
    cursor_des = desTableExist.cursor()

    for table in tableList:
        #print(table)
        cursor_source.execute("select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='%s' and TABLE_NAME='%s';" % (sourceDbName,table))
        sourceTable_tmp = cursor_source.fetchall()
        cursor_des.execute("select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='%s' and TABLE_NAME='%s';" % (desDbName,table))
        desTable_tmp = cursor_des.fetchall()
        #print(desTable_tmp)
        if sourceTable_tmp is ():
            sourceTables.append(table)
        if desTable_tmp is not ():
            desTables.append(desTable_tmp[0][0])
    sourceTableExist.close()
    desTableExist.close()

    s=d=0
    if sourceTables != []:
        print('遷移源不存在將要遷移的表:',sourceIp,sourceDbName, sourceTables,' 請檢查')
        s=1
    if desTables != []:
        print('目標庫存在將要遷移的表:',desIp,desDbName,desTables,' 請移除')
        d=1
    if s == 1 or d == 1:
        sys.exit()

def data_sync():
    print('data_sync')
    db_source = pymysql.connect(sourceIp,comUser,comPwd,sourceDbName,comPort,charset='utf8')
    db_des = pymysql.connect(desIp,comUser,comPwd,desDbName,comPort,charset='utf8')
    cursor_db_source = db_source.cursor()
    cursor_db_des = db_des.cursor()

    for table in tableList:
        print("正在同步表:",table)
        cursor_db_source.execute("show create table %s;" % (table))
        createTableSQL = cursor_db_source.fetchall()[0][1]
        print(createTableSQL)
        try:
            cursor_db_des.execute(createTableSQL)
        except Exception as error:
            print(error)
        cursor_db_source.execute("flush table %s with read lock;" % (table))
        cursor_db_des.execute("alter table %s discard tablespace;" % (table))

        client.connect(sourceIp, 22, 'root')
        stdin1, stdout1, stderr1 = client.exec_command("scp %s  %s:%s " % (sourceDataDir+"/"+table+".ibd", desIp, desDataDir))
        stdin2, stdout2, stderr2 = client.exec_command("scp %s  %s:%s " % (sourceDataDir+"/"+table+".cfg", desIp, desDataDir))
        a_e_1 = stderr1.readlines()
        a_e_2 = stderr2.readlines()
        if a_e_1 != [] or a_e_2 != []:
            print(a_e_1,a_e_2)
            sys.exit()
        client.close()

        client.connect(desIp, 22, 'root')
        stdin3, stdout3, stderr3 = client.exec_command("chown -R mysql.mysql %s*" % (desDataDir+"/"+table))
        a_e_3 = stderr3.readlines()
        if a_e_3 != []:
            print(a_e_1, a_e_2)
            sys.exit()
        client.close()
        #cursor_db_source.execute("select sleep(10);")
        cursor_db_source.execute("unlock tables;")
        cursor_db_des.execute("alter table %s import tablespace;" % (table))
        print("同步完成")

    cursor_db_source.close()
    cursor_db_des.close()

def data_checksum():
    print('data_checksum')
    db_source = pymysql.connect(sourceIp,comUser,comPwd,sourceDbName,comPort,charset='utf8')
    db_des = pymysql.connect(desIp,comUser,comPwd,desDbName,comPort,charset='utf8')
    cursor_db_source = db_source.cursor()
    cursor_db_des = db_des.cursor()

    for table in tableList:
        print("正在校驗表:", table)
        cursor_db_source.execute("checksum table %s;" % (table))
        ck_s = cursor_db_source.fetchall()[0][1]
        cursor_db_des.execute("checksum table %s;" % (table))
        ck_d = cursor_db_des.fetchall()[0][1]
        if ck_s != ck_d:
            print("表不一致:",table)
        else:
            print("表一致:",table)

    cursor_db_source.close()
    cursor_db_des.close()

if __name__ == "__main__":
    table_judge()
    data_sync()
    data_checksum()
    print('haha')

分享題目:MySQLpython數據遷移腳本
URL標題:http://aaarwkj.com/article40/jjijeo.html

成都網站建設公司_創(chuàng)新互聯,為您提供外貿網站建設、動態(tài)網站、App設計企業(yè)建站、品牌網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

營銷型網站建設
91手机国产三级在线| 把熟睡的少妇弄到高潮| 国产高清自拍视频在线一区| 国产毛片精品一区内射| 亚洲精品网站国产高清| 中文字幕国产精品经典三级| 欧美久久久久综合一区| 亚洲国产精品天堂av在线播放| 午夜激情视频福利在线观看| 国产美女精品一区二区三区| 久久中文字幕av一区| 国产成人综合精品久久| 欧美精品日韩精品一区二区| 午夜精品久久久免费视频| 精品国产av一区二区三广区| 久久精品国产亚洲av麻| 国产精品欧美日韩高清| 久久青草精品欧美日韩精品| 日韩美女毛片啪啪响| 欧美精品一区二区久久不卡| 欧美精品一区二区三区在线| 中文字幕乱码视频日本| av午夜精品一区二区| 欧美成人精品在线观看| 欧美欧成人一区二区三区a∨| 日本乱码一区二区三区在线观看| 91日本精品免费在线视频| 国产成人亚洲精品乱码| 亚洲精品日本一区二区| 在线观看国产一区二区不卡| 中国成熟女人毛茸茸视频| 九九热这里只有免费精品| 欧美色一区二区三区四区| 99亚洲综合一区二区三区| 国产亚洲精品免费视频| 亚洲一区二区精品91眼镜| 国产精品熟女亚洲av| 亚洲永久免费黄色av| 91亚洲精品久久久蜜桃网站| 亚洲成年人黄片在线播放| 亚洲激情在线观看一区|