针对gh-ost封装了一个使用脚本,支持gh-ost的三种使用场景
#!/bin/env python
# -*- encoding: utf-8 -*-
# ----------------------------------------------
# Purpose: gh-ost
# Created: 2018-06-16
# Modified: hao.chen@woqutech.com
# Modified date: 2022-01-06
# ----------------------------------------------
import MySQLdb
import re
import sys
import time
import subprocess
import os
from optparse import OptionParser
def calc_time(func):
def _deco(*args, **kwargs):
begin_time = time.time()
func(*args, **kwargs)
cost_time = time.time() - begin_time
print
'cost time: %ss' % round(cost_time, 2)
return _deco
def get_table_count(conn, dbname, tbname):
query = ''' SELECT count(*) FROM %s.%s ''' % (dbname, tbname)
cursor = conn.cursor()
cursor.execute(query)
row_nums = cursor.fetchone()
cursor.close()
conn.close()
return row_nums
def online_ddl(conn, ddl_cmd):
cursor = conn.cursor()
cursor.execute(ddl_cmd)
conn.commit()
cursor.close()
conn.close()
# @calc_time
def run_cmd(cmd):
p = subprocess.Popen(cmd, shell=True)
return p, p.pid
def drop_ghost_table(conn, ghost_name_list):
try:
cursor = conn.cursor()
query = ''' DROP TABLE IF EXISTS %s; ''' % (ghost_name_list)
cursor.execute(query)
conn.commit()
cursor.close()
conn.close()
except Exception, e:
print
e
def getGHCMD(mode):
if mode == <