[CP] 升级脚本python3改造
This commit is contained in:
@ -113,10 +113,10 @@ def get_min_cluster_version(cur):
|
||||
results = cur.fetchall()
|
||||
if len(results) != 1:
|
||||
logging.exception('min_observer_version is not sync')
|
||||
raise e
|
||||
raise MyError('min_observer_version is not sync')
|
||||
elif len(results[0]) != 1:
|
||||
logging.exception('column cnt not match')
|
||||
raise e
|
||||
raise MyError('column cnt not match')
|
||||
else:
|
||||
min_cluster_version = get_version(results[0][0])
|
||||
return min_cluster_version
|
||||
@ -189,17 +189,17 @@ def fetch_ori_enable_ddl(cur):
|
||||
ori_value = 'True'
|
||||
elif len(result) != 1 or len(result[0]) != 1:
|
||||
logging.exception('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif result[0][0].lower() in ["1", "true", "on", "yes", 't']:
|
||||
ori_value = 'True'
|
||||
elif result[0][0].lower() in ["0", "false", "off", "no", 'f']:
|
||||
ori_value = 'False'
|
||||
else:
|
||||
logging.exception("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
raise e
|
||||
raise MyError("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
return ori_value
|
||||
|
||||
# print version like "x.x.x.x"
|
||||
# print(version like "x.x.x.x")
|
||||
def print_version(version):
|
||||
version = int(version)
|
||||
major = (version >> 32) & 0xffffffff
|
||||
@ -214,7 +214,7 @@ def get_version(version_str):
|
||||
|
||||
if len(versions) != 4:
|
||||
logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
raise e
|
||||
raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
|
||||
major = int(versions[0])
|
||||
minor = int(versions[1])
|
||||
@ -223,7 +223,7 @@ def get_version(version_str):
|
||||
|
||||
if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
raise e
|
||||
raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
|
||||
version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
return version
|
||||
@ -277,7 +277,7 @@ def wait_parameter_sync(cur, is_tenant_config, key, value, timeout, only_sys_ten
|
||||
result = cur.fetchall()
|
||||
if len(result) != 1 or len(result[0]) != 1:
|
||||
logging.exception('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif result[0][0] == 0:
|
||||
logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
break
|
||||
@ -287,7 +287,7 @@ def wait_parameter_sync(cur, is_tenant_config, key, value, timeout, only_sys_ten
|
||||
times -= 1
|
||||
if times == -1:
|
||||
logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
raise e
|
||||
raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
time.sleep(5)
|
||||
|
||||
set_session_timeout(cur, 10)
|
||||
@ -406,12 +406,12 @@ class Cursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
return rowcount
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
def exec_query(self, sql, print_when_succ = True):
|
||||
try:
|
||||
self.__cursor.execute(sql)
|
||||
@ -420,12 +420,12 @@ class Cursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
return (self.__cursor.description, results)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
|
||||
class DDLCursor:
|
||||
_cursor = None
|
||||
@ -436,9 +436,9 @@ class DDLCursor:
|
||||
# 这里检查是不是ddl,不是ddl就抛错
|
||||
check_is_ddl_sql(sql)
|
||||
return self._cursor.exec_sql(sql, print_when_succ)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('fail to execute ddl: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
|
||||
class QueryCursor:
|
||||
_cursor = None
|
||||
@ -449,9 +449,9 @@ class QueryCursor:
|
||||
# 这里检查是不是query,不是query就抛错
|
||||
check_is_query_sql(sql)
|
||||
return self._cursor.exec_query(sql, print_when_succ)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('fail to execute dml query: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
|
||||
class DMLCursor(QueryCursor):
|
||||
def exec_update(self, sql, print_when_succ = True):
|
||||
@ -459,9 +459,9 @@ class DMLCursor(QueryCursor):
|
||||
# 这里检查是不是update,不是update就抛错
|
||||
check_is_update_sql(sql)
|
||||
return self._cursor.exec_sql(sql, print_when_succ)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('fail to execute dml update: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
|
||||
class BaseDDLAction():
|
||||
__ddl_cursor = None
|
||||
@ -571,7 +571,7 @@ def fetch_tenant_ids(query_cur):
|
||||
for r in results:
|
||||
tenant_id_list.append(r[0])
|
||||
return tenant_id_list
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('fail to fetch distinct tenant ids')
|
||||
raise e
|
||||
raise
|
||||
|
||||
|
@ -106,9 +106,9 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, timeout, my_module_set, upg
|
||||
actions.refresh_commit_sql_list()
|
||||
logging.info('================succeed to run post check action ===============')
|
||||
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
raise
|
||||
finally:
|
||||
# 打印统计信息
|
||||
print_stats()
|
||||
@ -116,12 +116,12 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, timeout, my_module_set, upg
|
||||
# actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
cur.close()
|
||||
conn.close()
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('connection error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
||||
def do_upgrade_by_argv(argv):
|
||||
upgrade_params = UpgradeParams()
|
||||
@ -155,14 +155,14 @@ def do_upgrade_by_argv(argv):
|
||||
logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connctor error')
|
||||
logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
raise e
|
||||
raise
|
||||
|
||||
|
||||
|
||||
|
@ -96,9 +96,9 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, timeout, my_module_set, upg
|
||||
upgrade_health_checker.do_check(my_host, my_port, my_user, my_passwd, upgrade_params, timeout, True) # need_check_major_status = True
|
||||
logging.info('================succeed to run health check action ===============')
|
||||
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
raise
|
||||
finally:
|
||||
# 打印统计信息
|
||||
print_stats()
|
||||
@ -106,12 +106,12 @@ def do_upgrade(my_host, my_port, my_user, my_passwd, timeout, my_module_set, upg
|
||||
# actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
cur.close()
|
||||
conn.close()
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('connection error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
||||
def do_upgrade_by_argv(argv):
|
||||
upgrade_params = UpgradeParams()
|
||||
@ -145,14 +145,14 @@ def do_upgrade_by_argv(argv):
|
||||
logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connctor error')
|
||||
logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
raise e
|
||||
raise
|
||||
|
||||
|
||||
|
||||
|
@ -63,7 +63,9 @@ if __name__ == '__main__':
|
||||
sub_files_dir = cur_file_short_name + sub_files_dir_suffix
|
||||
sub_files_short_dir = cur_file_real_name + sub_files_dir_suffix
|
||||
split_py_files(sub_files_dir)
|
||||
exec('from ' + sub_files_short_dir + '.{run_module_name} import do_upgrade_by_argv')
|
||||
sub_files_absolute_dir = os.path.abspath(sub_files_dir)
|
||||
sys.path.append(sub_files_absolute_dir)
|
||||
from {run_module_name} import do_upgrade_by_argv
|
||||
do_upgrade_by_argv(sys.argv[1:])
|
||||
""".format(run_module_name = run_filename[0:run_filename.rfind('.')])
|
||||
|
||||
@ -71,6 +73,7 @@ def get_pre_and_post_extra_lines_strs(upgrade_pre_filename, upgrade_post_filenam
|
||||
do_upgrade_pre_filename, do_upgrade_post_filename, \
|
||||
file_splitter_line, sub_filename_line_prefix, sub_file_module_end_line):
|
||||
upgrade_common_lines = """
|
||||
from __future__ import print_function, absolute_import
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
@ -126,7 +129,7 @@ def split_py_files(sub_files_dir):
|
||||
if i >= cur_file_lines_count:
|
||||
raise SplitError('invalid line index:' + str(i) + ', lines_count:' + str(cur_file_lines_count))
|
||||
elif (sub_file_module_end_line + char_enter) == cur_file_lines[i]:
|
||||
print 'succeed to split all sub py files'
|
||||
print('succeed to split all sub py files')
|
||||
break
|
||||
else:
|
||||
mark_idx = cur_file_lines[i].find(sub_filename_line_prefix)
|
||||
|
@ -173,15 +173,15 @@ def deal_with_local_opt(opt, filename):
|
||||
if 'help' == opt.get_long_name():
|
||||
if 'upgrade_pre' == filename:
|
||||
global pre_help_str
|
||||
print pre_help_str
|
||||
print(pre_help_str)
|
||||
elif 'upgrade_post' == filename:
|
||||
global post_help_str
|
||||
print post_help_str
|
||||
print(post_help_str)
|
||||
else:
|
||||
raise MyError('not supported filename:{0} for help option'.format(filename))
|
||||
elif 'version' == opt.get_long_name():
|
||||
global version_str
|
||||
print version_str
|
||||
print(version_str)
|
||||
|
||||
def deal_with_local_opts(filename):
|
||||
global g_opts
|
||||
|
2
tools/upgrade/requirements.txt
Normal file
2
tools/upgrade/requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
mysql-connector-python==8.0.6
|
||||
protobuf==3.18.0
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from my_error import MyError
|
||||
import logging
|
||||
import time
|
||||
from actions import Cursor
|
||||
@ -37,9 +38,9 @@ def upgrade_syslog_level(conn, cur):
|
||||
info_cnt = result[0][0]
|
||||
if info_cnt > 0:
|
||||
actions.set_parameter(cur, "syslog_level", "WDIAG")
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.warn("upgrade syslog level failed!")
|
||||
raise e
|
||||
raise
|
||||
####========******####========= actions end =========####******========####
|
||||
|
||||
def query(cur, sql):
|
||||
@ -75,7 +76,7 @@ def upgrade_across_version(cur):
|
||||
results = query(cur, sql)
|
||||
if len(results) < 1 or len(results[0]) < 1:
|
||||
logging.warn("row/column cnt not match")
|
||||
raise e
|
||||
raise MyError("row/column cnt not match")
|
||||
elif results[0][0] <= 0:
|
||||
# __all_virtual_core_table doesn't exist, this cluster is upgraded from 4.0.0.0
|
||||
across_version = True
|
||||
@ -84,14 +85,14 @@ def upgrade_across_version(cur):
|
||||
tenant_ids = get_tenant_ids(cur)
|
||||
if len(tenant_ids) <= 0:
|
||||
logging.warn("tenant_ids count is unexpected")
|
||||
raise e
|
||||
raise MyError("tenant_ids count is unexpected")
|
||||
tenant_count = len(tenant_ids)
|
||||
|
||||
sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(int_current_data_version)
|
||||
results = query(cur, sql)
|
||||
if len(results) != 1 or len(results[0]) != 1:
|
||||
logging.warn('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif 2 * tenant_count != results[0][0]:
|
||||
logging.info('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
across_version = True
|
||||
@ -105,7 +106,7 @@ def upgrade_across_version(cur):
|
||||
results = query(cur, sql)
|
||||
if len(results) < 1 or len(results[0]) < 1:
|
||||
logging.warn("row/column cnt not match")
|
||||
raise e
|
||||
raise MyError("row/column cnt not match")
|
||||
elif results[0][0] == 0:
|
||||
logging.info("compatible are all matched")
|
||||
else:
|
||||
@ -124,16 +125,16 @@ def get_max_used_job_id(cur):
|
||||
max_job_id = 0
|
||||
elif (len(results) != 1 or len(results[0]) != 1):
|
||||
logging.warn("row cnt not match")
|
||||
raise e
|
||||
raise MyError("row cnt not match")
|
||||
else:
|
||||
max_job_id = results[0][0]
|
||||
|
||||
logging.info("get max_used_job_id:{0}".format(max_job_id))
|
||||
|
||||
return max_job_id
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.warn("failed to get max_used_job_id")
|
||||
raise e
|
||||
raise
|
||||
|
||||
def check_can_run_upgrade_job(cur, job_name):
|
||||
try:
|
||||
@ -147,10 +148,10 @@ def check_can_run_upgrade_job(cur, job_name):
|
||||
logging.info("upgrade job not created yet, should run upgrade job")
|
||||
elif (len(results) != 1 or len(results[0]) != 1):
|
||||
logging.warn("row cnt not match")
|
||||
raise e
|
||||
raise MyError("row cnt not match")
|
||||
elif ("INPROGRESS" == results[0][0]):
|
||||
logging.warn("upgrade job still running, should wait")
|
||||
raise e
|
||||
raise MyError("upgrade job still running, should wait")
|
||||
elif ("SUCCESS" == results[0][0]):
|
||||
bret = True
|
||||
logging.info("maybe upgrade job remained, can run again")
|
||||
@ -159,12 +160,12 @@ def check_can_run_upgrade_job(cur, job_name):
|
||||
logging.info("execute upgrade job failed, should run again")
|
||||
else:
|
||||
logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
raise e
|
||||
raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
|
||||
return bret
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.warn("failed to check if upgrade job can run")
|
||||
raise e
|
||||
raise
|
||||
|
||||
def check_upgrade_job_result(cur, job_name, timeout, max_used_job_id):
|
||||
try:
|
||||
@ -181,7 +182,7 @@ def check_upgrade_job_result(cur, job_name, timeout, max_used_job_id):
|
||||
logging.info("upgrade job not created yet")
|
||||
elif (len(results) != 1 or len(results[0]) != 4):
|
||||
logging.warn("row cnt not match")
|
||||
raise e
|
||||
raise MyError("row cnt not match")
|
||||
elif ("INPROGRESS" == results[0][0]):
|
||||
logging.info("upgrade job is still running")
|
||||
# check if rs change
|
||||
@ -193,39 +194,39 @@ def check_upgrade_job_result(cur, job_name, timeout, max_used_job_id):
|
||||
results = query(cur, sql)
|
||||
if (len(results) != 1 or len(results[0]) != 1):
|
||||
logging.warn("row/column cnt not match")
|
||||
raise e
|
||||
raise MyError("row/column cnt not match")
|
||||
elif results[0][0] == 1:
|
||||
sql = """select count(*) from oceanbase.__all_rootservice_event_history where gmt_create > '{0}' and event = 'full_rootservice'""".format(gmt_create)
|
||||
results = query(cur, sql)
|
||||
if (len(results) != 1 or len(results[0]) != 1):
|
||||
logging.warn("row/column cnt not match")
|
||||
raise e
|
||||
raise MyError("row/column cnt not match")
|
||||
elif results[0][0] > 0:
|
||||
logging.warn("rs changed, should check if upgrade job is still running")
|
||||
raise e
|
||||
raise MyError("rs changed, should check if upgrade job is still running")
|
||||
else:
|
||||
logging.info("rs[{0}:{1}] still exist, keep waiting".format(ip, port))
|
||||
else:
|
||||
logging.warn("rs changed or not exist, should check if upgrade job is still running")
|
||||
raise e
|
||||
raise MyError("rs changed or not exist, should check if upgrade job is still running")
|
||||
elif ("SUCCESS" == results[0][0]):
|
||||
logging.info("execute upgrade job successfully")
|
||||
break;
|
||||
elif ("FAILED" == results[0][0]):
|
||||
logging.warn("execute upgrade job failed")
|
||||
raise e
|
||||
raise MyError("execute upgrade job failed")
|
||||
else:
|
||||
logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
raise e
|
||||
raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
|
||||
times = times - 1
|
||||
if times == -1:
|
||||
logging.warn("""check {0} job timeout""".format(job_name))
|
||||
raise e
|
||||
raise MyError("""check {0} job timeout""".format(job_name))
|
||||
time.sleep(10)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.warn("failed to check upgrade job result")
|
||||
raise e
|
||||
raise
|
||||
|
||||
def run_upgrade_job(conn, cur, job_name, timeout):
|
||||
try:
|
||||
@ -252,7 +253,7 @@ def run_upgrade_job(conn, cur, job_name, timeout):
|
||||
# reset enable_ddl
|
||||
if ori_enable_ddl == 0:
|
||||
actions.set_parameter(cur, 'enable_ddl', 'False', timeout)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.warn("run upgrade job failed, :{0}".format(job_name))
|
||||
raise e
|
||||
raise
|
||||
logging.info("run upgrade job success, job_name:{0}".format(job_name))
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
import mysql.connector
|
||||
@ -10,6 +11,10 @@ import getopt
|
||||
import time
|
||||
import re
|
||||
|
||||
if sys.version_info.major == 3:
|
||||
def cmp(a, b):
|
||||
return (a > b) - (a < b)
|
||||
|
||||
class UpgradeParams:
|
||||
log_filename = 'upgrade_checker.log'
|
||||
old_version = '4.0.0.0'
|
||||
@ -37,12 +42,12 @@ class Cursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
return rowcount
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
def exec_query(self, sql, print_when_succ = True):
|
||||
try:
|
||||
self.__cursor.execute(sql)
|
||||
@ -51,12 +56,12 @@ class Cursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
return (self.__cursor.description, results)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
|
||||
def set_parameter(cur, parameter, value):
|
||||
sql = """alter system set {0} = '{1}'""".format(parameter, value)
|
||||
@ -74,7 +79,7 @@ def wait_parameter_sync(cur, key, value):
|
||||
result = cur.fetchall()
|
||||
if len(result) != 1 or len(result[0]) != 1:
|
||||
logging.exception('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif result[0][0] == 0:
|
||||
logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
break
|
||||
@ -84,7 +89,7 @@ def wait_parameter_sync(cur, key, value):
|
||||
times -= 1
|
||||
if times == 0:
|
||||
logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
raise e
|
||||
raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
time.sleep(5)
|
||||
|
||||
#### --------------start : opt.py --------------
|
||||
@ -221,10 +226,10 @@ def parse_options(argv):
|
||||
def deal_with_local_opt(opt):
|
||||
if 'help' == opt.get_long_name():
|
||||
global help_str
|
||||
print help_str
|
||||
print(help_str)
|
||||
elif 'version' == opt.get_long_name():
|
||||
global version_str
|
||||
print version_str
|
||||
print(version_str)
|
||||
|
||||
def deal_with_local_opts():
|
||||
global g_opts
|
||||
@ -307,7 +312,7 @@ def get_version(version_str):
|
||||
|
||||
if len(versions) != 4:
|
||||
logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
raise e
|
||||
raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
|
||||
major = int(versions[0])
|
||||
minor = int(versions[1])
|
||||
@ -316,7 +321,7 @@ def get_version(version_str):
|
||||
|
||||
if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
raise e
|
||||
raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
|
||||
version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
return version
|
||||
@ -328,7 +333,7 @@ def check_observer_version(query_cur, upgrade_params):
|
||||
if len(results) != 1:
|
||||
fail_list.append('min_observer_version is not sync')
|
||||
elif cmp(results[0][0], upgrade_params.old_version) < 0 :
|
||||
fail_list.append('old observer version is expected equal or higher then: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
fail_list.append('old observer version is expected equal or higher than: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
logging.info('check observer version success, version = {0}'.format(results[0][0]))
|
||||
|
||||
def check_data_version(query_cur):
|
||||
@ -769,18 +774,18 @@ def do_check(my_host, my_port, my_user, my_passwd, timeout, upgrade_params):
|
||||
# all check func should execute before check_fail_list
|
||||
check_fail_list()
|
||||
modify_server_permanent_offline_time(cur)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
raise
|
||||
finally:
|
||||
cur.close()
|
||||
conn.close()
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('connection error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
||||
if __name__ == '__main__':
|
||||
upgrade_params = UpgradeParams()
|
||||
@ -803,9 +808,9 @@ if __name__ == '__main__':
|
||||
logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", log-file=\"%s\"',\
|
||||
host, port, user, password.replace('"', '\\"'), timeout, log_filename)
|
||||
do_check(host, port, user, password, timeout, upgrade_params)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connctor error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
@ -37,12 +38,12 @@ class QueryCursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
return rowcount
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
def exec_query(self, sql, print_when_succ = True):
|
||||
try:
|
||||
self.__cursor.execute(sql)
|
||||
@ -51,12 +52,12 @@ class QueryCursor:
|
||||
if True == print_when_succ:
|
||||
logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
return (self.__cursor.description, results)
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
raise e
|
||||
raise
|
||||
#### ---------------end----------------------
|
||||
|
||||
#### --------------start : opt.py --------------
|
||||
@ -196,10 +197,10 @@ def parse_options(argv):
|
||||
def deal_with_local_opt(opt):
|
||||
if 'help' == opt.get_long_name():
|
||||
global help_str
|
||||
print help_str
|
||||
print(help_str)
|
||||
elif 'version' == opt.get_long_name():
|
||||
global version_str
|
||||
print version_str
|
||||
print(version_str)
|
||||
|
||||
def deal_with_local_opts():
|
||||
global g_opts
|
||||
@ -300,9 +301,9 @@ def fetch_tenant_ids(query_cur):
|
||||
for r in results:
|
||||
tenant_id_list.append(r[0])
|
||||
return tenant_id_list
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('fail to fetch distinct tenant ids')
|
||||
raise e
|
||||
raise
|
||||
|
||||
def set_default_timeout_by_tenant(query_cur, timeout, timeout_per_tenant, min_timeout):
|
||||
if timeout > 0:
|
||||
@ -386,7 +387,7 @@ def check_until_timeout(query_cur, sql, value, timeout):
|
||||
times -= 1
|
||||
if times == -1:
|
||||
logging.warn("""check {0} job timeout""".format(job_name))
|
||||
raise e
|
||||
raise MyError("""check {0} job timeout""".format(job_name))
|
||||
time.sleep(10)
|
||||
|
||||
# 开始健康检查
|
||||
@ -409,18 +410,18 @@ def do_check(my_host, my_port, my_user, my_passwd, upgrade_params, timeout, need
|
||||
check_server_version_by_zone(query_cur, zone)
|
||||
if True == need_check_major_status:
|
||||
check_major_merge(query_cur, timeout)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
raise
|
||||
finally:
|
||||
cur.close()
|
||||
conn.close()
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('connection error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
||||
if __name__ == '__main__':
|
||||
upgrade_params = UpgradeParams()
|
||||
@ -444,10 +445,10 @@ if __name__ == '__main__':
|
||||
logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", log-file=\"%s\", timeout=%s, zone=\"%s\"', \
|
||||
host, port, user, password.replace('"', '\\"'), log_filename, timeout, zone)
|
||||
do_check(host, port, user, password, upgrade_params, timeout, False, zone) # need_check_major_status = False
|
||||
except mysql.connector.Error, e:
|
||||
except mysql.connector.Error as e:
|
||||
logging.exception('mysql connctor error')
|
||||
raise e
|
||||
except Exception, e:
|
||||
raise
|
||||
except Exception as e:
|
||||
logging.exception('normal error')
|
||||
raise e
|
||||
raise
|
||||
|
||||
|
@ -121,10 +121,10 @@
|
||||
# results = cur.fetchall()
|
||||
# if len(results) != 1:
|
||||
# logging.exception('min_observer_version is not sync')
|
||||
# raise e
|
||||
# raise MyError('min_observer_version is not sync')
|
||||
# elif len(results[0]) != 1:
|
||||
# logging.exception('column cnt not match')
|
||||
# raise e
|
||||
# raise MyError('column cnt not match')
|
||||
# else:
|
||||
# min_cluster_version = get_version(results[0][0])
|
||||
# return min_cluster_version
|
||||
@ -197,17 +197,17 @@
|
||||
# ori_value = 'True'
|
||||
# elif len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0].lower() in ["1", "true", "on", "yes", 't']:
|
||||
# ori_value = 'True'
|
||||
# elif result[0][0].lower() in ["0", "false", "off", "no", 'f']:
|
||||
# ori_value = 'False'
|
||||
# else:
|
||||
# logging.exception("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
# raise e
|
||||
# raise MyError("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
# return ori_value
|
||||
#
|
||||
## print version like "x.x.x.x"
|
||||
## print(version like "x.x.x.x")
|
||||
#def print_version(version):
|
||||
# version = int(version)
|
||||
# major = (version >> 32) & 0xffffffff
|
||||
@ -222,7 +222,7 @@
|
||||
#
|
||||
# if len(versions) != 4:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# major = int(versions[0])
|
||||
# minor = int(versions[1])
|
||||
@ -231,7 +231,7 @@
|
||||
#
|
||||
# if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
# return version
|
||||
@ -285,7 +285,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == 0:
|
||||
# logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
# break
|
||||
@ -295,7 +295,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# raise e
|
||||
# raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# time.sleep(5)
|
||||
#
|
||||
# set_session_timeout(cur, 10)
|
||||
@ -414,12 +414,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -428,12 +428,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class DDLCursor:
|
||||
# _cursor = None
|
||||
@ -444,9 +444,9 @@
|
||||
# # 这里检查是不是ddl,不是ddl就抛错
|
||||
# check_is_ddl_sql(sql)
|
||||
# return self._cursor.exec_sql(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute ddl: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class QueryCursor:
|
||||
# _cursor = None
|
||||
@ -457,9 +457,9 @@
|
||||
# # 这里检查是不是query,不是query就抛错
|
||||
# check_is_query_sql(sql)
|
||||
# return self._cursor.exec_query(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute dml query: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class DMLCursor(QueryCursor):
|
||||
# def exec_update(self, sql, print_when_succ = True):
|
||||
@ -467,9 +467,9 @@
|
||||
# # 这里检查是不是update,不是update就抛错
|
||||
# check_is_update_sql(sql)
|
||||
# return self._cursor.exec_sql(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute dml update: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class BaseDDLAction():
|
||||
# __ddl_cursor = None
|
||||
@ -579,9 +579,9 @@
|
||||
# for r in results:
|
||||
# tenant_id_list.append(r[0])
|
||||
# return tenant_id_list
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to fetch distinct tenant ids')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:config.py
|
||||
@ -706,9 +706,9 @@
|
||||
# actions.refresh_commit_sql_list()
|
||||
# logging.info('================succeed to run post check action ===============')
|
||||
#
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# # 打印统计信息
|
||||
# print_stats()
|
||||
@ -716,12 +716,12 @@
|
||||
# # actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def do_upgrade_by_argv(argv):
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -755,14 +755,14 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
# do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#
|
||||
#
|
||||
@ -866,9 +866,9 @@
|
||||
# upgrade_health_checker.do_check(my_host, my_port, my_user, my_passwd, upgrade_params, timeout, True) # need_check_major_status = True
|
||||
# logging.info('================succeed to run health check action ===============')
|
||||
#
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# # 打印统计信息
|
||||
# print_stats()
|
||||
@ -876,12 +876,12 @@
|
||||
# # actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def do_upgrade_by_argv(argv):
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -915,14 +915,14 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
# do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#
|
||||
#
|
||||
@ -1162,15 +1162,15 @@
|
||||
# if 'help' == opt.get_long_name():
|
||||
# if 'upgrade_pre' == filename:
|
||||
# global pre_help_str
|
||||
# print pre_help_str
|
||||
# print(pre_help_str)
|
||||
# elif 'upgrade_post' == filename:
|
||||
# global post_help_str
|
||||
# print post_help_str
|
||||
# print(post_help_str)
|
||||
# else:
|
||||
# raise MyError('not supported filename:{0} for help option'.format(filename))
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts(filename):
|
||||
# global g_opts
|
||||
@ -1395,6 +1395,7 @@
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from my_error import MyError
|
||||
#import logging
|
||||
#import time
|
||||
#from actions import Cursor
|
||||
@ -1431,9 +1432,9 @@
|
||||
# info_cnt = result[0][0]
|
||||
# if info_cnt > 0:
|
||||
# actions.set_parameter(cur, "syslog_level", "WDIAG")
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("upgrade syslog level failed!")
|
||||
# raise e
|
||||
# raise
|
||||
#####========******####========= actions end =========####******========####
|
||||
#
|
||||
#def query(cur, sql):
|
||||
@ -1469,7 +1470,7 @@
|
||||
# results = query(cur, sql)
|
||||
# if len(results) < 1 or len(results[0]) < 1:
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] <= 0:
|
||||
# # __all_virtual_core_table doesn't exist, this cluster is upgraded from 4.0.0.0
|
||||
# across_version = True
|
||||
@ -1478,14 +1479,14 @@
|
||||
# tenant_ids = get_tenant_ids(cur)
|
||||
# if len(tenant_ids) <= 0:
|
||||
# logging.warn("tenant_ids count is unexpected")
|
||||
# raise e
|
||||
# raise MyError("tenant_ids count is unexpected")
|
||||
# tenant_count = len(tenant_ids)
|
||||
#
|
||||
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(int_current_data_version)
|
||||
# results = query(cur, sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif 2 * tenant_count != results[0][0]:
|
||||
# logging.info('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# across_version = True
|
||||
@ -1499,7 +1500,7 @@
|
||||
# results = query(cur, sql)
|
||||
# if len(results) < 1 or len(results[0]) < 1:
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] == 0:
|
||||
# logging.info("compatible are all matched")
|
||||
# else:
|
||||
@ -1518,16 +1519,16 @@
|
||||
# max_job_id = 0
|
||||
# elif (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# else:
|
||||
# max_job_id = results[0][0]
|
||||
#
|
||||
# logging.info("get max_used_job_id:{0}".format(max_job_id))
|
||||
#
|
||||
# return max_job_id
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to get max_used_job_id")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def check_can_run_upgrade_job(cur, job_name):
|
||||
# try:
|
||||
@ -1541,10 +1542,10 @@
|
||||
# logging.info("upgrade job not created yet, should run upgrade job")
|
||||
# elif (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# elif ("INPROGRESS" == results[0][0]):
|
||||
# logging.warn("upgrade job still running, should wait")
|
||||
# raise e
|
||||
# raise MyError("upgrade job still running, should wait")
|
||||
# elif ("SUCCESS" == results[0][0]):
|
||||
# bret = True
|
||||
# logging.info("maybe upgrade job remained, can run again")
|
||||
@ -1553,12 +1554,12 @@
|
||||
# logging.info("execute upgrade job failed, should run again")
|
||||
# else:
|
||||
# logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
# raise e
|
||||
# raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
#
|
||||
# return bret
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to check if upgrade job can run")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def check_upgrade_job_result(cur, job_name, timeout, max_used_job_id):
|
||||
# try:
|
||||
@ -1575,7 +1576,7 @@
|
||||
# logging.info("upgrade job not created yet")
|
||||
# elif (len(results) != 1 or len(results[0]) != 4):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# elif ("INPROGRESS" == results[0][0]):
|
||||
# logging.info("upgrade job is still running")
|
||||
# # check if rs change
|
||||
@ -1587,39 +1588,39 @@
|
||||
# results = query(cur, sql)
|
||||
# if (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] == 1:
|
||||
# sql = """select count(*) from oceanbase.__all_rootservice_event_history where gmt_create > '{0}' and event = 'full_rootservice'""".format(gmt_create)
|
||||
# results = query(cur, sql)
|
||||
# if (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] > 0:
|
||||
# logging.warn("rs changed, should check if upgrade job is still running")
|
||||
# raise e
|
||||
# raise MyError("rs changed, should check if upgrade job is still running")
|
||||
# else:
|
||||
# logging.info("rs[{0}:{1}] still exist, keep waiting".format(ip, port))
|
||||
# else:
|
||||
# logging.warn("rs changed or not exist, should check if upgrade job is still running")
|
||||
# raise e
|
||||
# raise MyError("rs changed or not exist, should check if upgrade job is still running")
|
||||
# elif ("SUCCESS" == results[0][0]):
|
||||
# logging.info("execute upgrade job successfully")
|
||||
# break;
|
||||
# elif ("FAILED" == results[0][0]):
|
||||
# logging.warn("execute upgrade job failed")
|
||||
# raise e
|
||||
# raise MyError("execute upgrade job failed")
|
||||
# else:
|
||||
# logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
# raise e
|
||||
# raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
#
|
||||
# times = times - 1
|
||||
# if times == -1:
|
||||
# logging.warn("""check {0} job timeout""".format(job_name))
|
||||
# raise e
|
||||
# raise MyError("""check {0} job timeout""".format(job_name))
|
||||
# time.sleep(10)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to check upgrade job result")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def run_upgrade_job(conn, cur, job_name, timeout):
|
||||
# try:
|
||||
@ -1646,15 +1647,16 @@
|
||||
# # reset enable_ddl
|
||||
# if ori_enable_ddl == 0:
|
||||
# actions.set_parameter(cur, 'enable_ddl', 'False', timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("run upgrade job failed, :{0}".format(job_name))
|
||||
# raise e
|
||||
# raise
|
||||
# logging.info("run upgrade job success, job_name:{0}".format(job_name))
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from __future__ import print_function
|
||||
#import sys
|
||||
#import os
|
||||
#import mysql.connector
|
||||
@ -1664,6 +1666,10 @@
|
||||
#import time
|
||||
#import re
|
||||
#
|
||||
#if sys.version_info.major == 3:
|
||||
# def cmp(a, b):
|
||||
# return (a > b) - (a < b)
|
||||
#
|
||||
#class UpgradeParams:
|
||||
# log_filename = 'upgrade_checker.log'
|
||||
# old_version = '4.0.0.0'
|
||||
@ -1691,12 +1697,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -1705,12 +1711,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def set_parameter(cur, parameter, value):
|
||||
# sql = """alter system set {0} = '{1}'""".format(parameter, value)
|
||||
@ -1728,7 +1734,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == 0:
|
||||
# logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
# break
|
||||
@ -1738,7 +1744,7 @@
|
||||
# times -= 1
|
||||
# if times == 0:
|
||||
# logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# raise e
|
||||
# raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# time.sleep(5)
|
||||
#
|
||||
##### --------------start : opt.py --------------
|
||||
@ -1875,10 +1881,10 @@
|
||||
#def deal_with_local_opt(opt):
|
||||
# if 'help' == opt.get_long_name():
|
||||
# global help_str
|
||||
# print help_str
|
||||
# print(help_str)
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts():
|
||||
# global g_opts
|
||||
@ -1961,7 +1967,7 @@
|
||||
#
|
||||
# if len(versions) != 4:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# major = int(versions[0])
|
||||
# minor = int(versions[1])
|
||||
@ -1970,7 +1976,7 @@
|
||||
#
|
||||
# if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
# return version
|
||||
@ -1982,7 +1988,7 @@
|
||||
# if len(results) != 1:
|
||||
# fail_list.append('min_observer_version is not sync')
|
||||
# elif cmp(results[0][0], upgrade_params.old_version) < 0 :
|
||||
# fail_list.append('old observer version is expected equal or higher then: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
# fail_list.append('old observer version is expected equal or higher than: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
# logging.info('check observer version success, version = {0}'.format(results[0][0]))
|
||||
#
|
||||
#def check_data_version(query_cur):
|
||||
@ -2423,18 +2429,18 @@
|
||||
# # all check func should execute before check_fail_list
|
||||
# check_fail_list()
|
||||
# modify_server_permanent_offline_time(cur)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#if __name__ == '__main__':
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -2457,17 +2463,18 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, log_filename)
|
||||
# do_check(host, port, user, password, timeout, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_health_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from __future__ import print_function
|
||||
#import sys
|
||||
#import os
|
||||
#import time
|
||||
@ -2504,12 +2511,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -2518,12 +2525,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
##### ---------------end----------------------
|
||||
#
|
||||
##### --------------start : opt.py --------------
|
||||
@ -2663,10 +2670,10 @@
|
||||
#def deal_with_local_opt(opt):
|
||||
# if 'help' == opt.get_long_name():
|
||||
# global help_str
|
||||
# print help_str
|
||||
# print(help_str)
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts():
|
||||
# global g_opts
|
||||
@ -2767,9 +2774,9 @@
|
||||
# for r in results:
|
||||
# tenant_id_list.append(r[0])
|
||||
# return tenant_id_list
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to fetch distinct tenant ids')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def set_default_timeout_by_tenant(query_cur, timeout, timeout_per_tenant, min_timeout):
|
||||
# if timeout > 0:
|
||||
@ -2853,7 +2860,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.warn("""check {0} job timeout""".format(job_name))
|
||||
# raise e
|
||||
# raise MyError("""check {0} job timeout""".format(job_name))
|
||||
# time.sleep(10)
|
||||
#
|
||||
## 开始健康检查
|
||||
@ -2876,18 +2883,18 @@
|
||||
# check_server_version_by_zone(query_cur, zone)
|
||||
# if True == need_check_major_status:
|
||||
# check_major_merge(query_cur, timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#if __name__ == '__main__':
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -2911,18 +2918,19 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", log-file=\"%s\", timeout=%s, zone=\"%s\"', \
|
||||
# host, port, user, password.replace('"', '\\"'), log_filename, timeout, zone)
|
||||
# do_check(host, port, user, password, upgrade_params, timeout, False, zone) # need_check_major_status = False
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_post_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from my_error import MyError
|
||||
#import sys
|
||||
#import os
|
||||
#import time
|
||||
@ -2946,7 +2954,7 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) == 0:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# tenant_count = len(results)
|
||||
# tenant_ids_str = ''
|
||||
# for index, row in enumerate(results):
|
||||
@ -2957,7 +2965,7 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# server_count = results[0][0]
|
||||
#
|
||||
# # check compatible sync
|
||||
@ -2977,7 +2985,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == parameter_count:
|
||||
# logging.info("""'compatible' is sync, value is {0}""".format(current_data_version))
|
||||
# break
|
||||
@ -2987,7 +2995,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.exception("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
# raise e
|
||||
# raise MyError("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
# time.sleep(5)
|
||||
#
|
||||
# actions.set_session_timeout(cur, 10)
|
||||
@ -2998,10 +3006,10 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif 2 * tenant_count != results[0][0]:
|
||||
# logging.warn('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# raise e
|
||||
# raise MyError('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# else:
|
||||
# logging.info("all tenant's target_data_version/current_data_version are match with {0}".format(current_data_version))
|
||||
#
|
||||
@ -3021,7 +3029,7 @@
|
||||
#
|
||||
# if times == -1:
|
||||
# logging.warn('check root inspection failed!')
|
||||
# raise e
|
||||
# raise MyError('check root inspection failed!')
|
||||
# logging.info('check root inspection success')
|
||||
#
|
||||
## 4 开ddl
|
||||
@ -3053,13 +3061,14 @@
|
||||
# enable_rebalance(cur, timeout)
|
||||
# enable_rereplication(cur, timeout)
|
||||
# enable_major_freeze(cur, timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#sub file module end
|
||||
|
||||
|
||||
from __future__ import print_function, absolute_import
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
@ -3115,7 +3124,7 @@ def split_py_files(sub_files_dir):
|
||||
if i >= cur_file_lines_count:
|
||||
raise SplitError('invalid line index:' + str(i) + ', lines_count:' + str(cur_file_lines_count))
|
||||
elif (sub_file_module_end_line + char_enter) == cur_file_lines[i]:
|
||||
print 'succeed to split all sub py files'
|
||||
print('succeed to split all sub py files')
|
||||
break
|
||||
else:
|
||||
mark_idx = cur_file_lines[i].find(sub_filename_line_prefix)
|
||||
@ -3137,5 +3146,7 @@ if __name__ == '__main__':
|
||||
sub_files_dir = cur_file_short_name + sub_files_dir_suffix
|
||||
sub_files_short_dir = cur_file_real_name + sub_files_dir_suffix
|
||||
split_py_files(sub_files_dir)
|
||||
exec('from ' + sub_files_short_dir + '.do_upgrade_post import do_upgrade_by_argv')
|
||||
sub_files_absolute_dir = os.path.abspath(sub_files_dir)
|
||||
sys.path.append(sub_files_absolute_dir)
|
||||
from do_upgrade_post import do_upgrade_by_argv
|
||||
do_upgrade_by_argv(sys.argv[1:])
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from my_error import MyError
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
@ -24,7 +25,7 @@ def check_data_version(cur, query_cur, timeout):
|
||||
(desc, results) = query_cur.exec_query(sql)
|
||||
if len(results) == 0:
|
||||
logging.warn('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
tenant_count = len(results)
|
||||
tenant_ids_str = ''
|
||||
for index, row in enumerate(results):
|
||||
@ -35,7 +36,7 @@ def check_data_version(cur, query_cur, timeout):
|
||||
(desc, results) = query_cur.exec_query(sql)
|
||||
if len(results) != 1 or len(results[0]) != 1:
|
||||
logging.warn('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
server_count = results[0][0]
|
||||
|
||||
# check compatible sync
|
||||
@ -55,7 +56,7 @@ def check_data_version(cur, query_cur, timeout):
|
||||
result = cur.fetchall()
|
||||
if len(result) != 1 or len(result[0]) != 1:
|
||||
logging.exception('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif result[0][0] == parameter_count:
|
||||
logging.info("""'compatible' is sync, value is {0}""".format(current_data_version))
|
||||
break
|
||||
@ -65,7 +66,7 @@ def check_data_version(cur, query_cur, timeout):
|
||||
times -= 1
|
||||
if times == -1:
|
||||
logging.exception("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
raise e
|
||||
raise MyError("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
time.sleep(5)
|
||||
|
||||
actions.set_session_timeout(cur, 10)
|
||||
@ -76,10 +77,10 @@ def check_data_version(cur, query_cur, timeout):
|
||||
(desc, results) = query_cur.exec_query(sql)
|
||||
if len(results) != 1 or len(results[0]) != 1:
|
||||
logging.warn('result cnt not match')
|
||||
raise e
|
||||
raise MyError('result cnt not match')
|
||||
elif 2 * tenant_count != results[0][0]:
|
||||
logging.warn('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
raise e
|
||||
raise MyError('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
else:
|
||||
logging.info("all tenant's target_data_version/current_data_version are match with {0}".format(current_data_version))
|
||||
|
||||
@ -99,7 +100,7 @@ def check_root_inspection(cur, query_cur, timeout):
|
||||
|
||||
if times == -1:
|
||||
logging.warn('check root inspection failed!')
|
||||
raise e
|
||||
raise MyError('check root inspection failed!')
|
||||
logging.info('check root inspection success')
|
||||
|
||||
# 4 开ddl
|
||||
@ -131,6 +132,6 @@ def do_check(conn, cur, query_cur, timeout):
|
||||
enable_rebalance(cur, timeout)
|
||||
enable_rereplication(cur, timeout)
|
||||
enable_major_freeze(cur, timeout)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.exception('run error')
|
||||
raise e
|
||||
raise
|
||||
|
@ -121,10 +121,10 @@
|
||||
# results = cur.fetchall()
|
||||
# if len(results) != 1:
|
||||
# logging.exception('min_observer_version is not sync')
|
||||
# raise e
|
||||
# raise MyError('min_observer_version is not sync')
|
||||
# elif len(results[0]) != 1:
|
||||
# logging.exception('column cnt not match')
|
||||
# raise e
|
||||
# raise MyError('column cnt not match')
|
||||
# else:
|
||||
# min_cluster_version = get_version(results[0][0])
|
||||
# return min_cluster_version
|
||||
@ -197,17 +197,17 @@
|
||||
# ori_value = 'True'
|
||||
# elif len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0].lower() in ["1", "true", "on", "yes", 't']:
|
||||
# ori_value = 'True'
|
||||
# elif result[0][0].lower() in ["0", "false", "off", "no", 'f']:
|
||||
# ori_value = 'False'
|
||||
# else:
|
||||
# logging.exception("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
# raise e
|
||||
# raise MyError("""result value is invalid, result:{0}""".format(result[0][0]))
|
||||
# return ori_value
|
||||
#
|
||||
## print version like "x.x.x.x"
|
||||
## print(version like "x.x.x.x")
|
||||
#def print_version(version):
|
||||
# version = int(version)
|
||||
# major = (version >> 32) & 0xffffffff
|
||||
@ -222,7 +222,7 @@
|
||||
#
|
||||
# if len(versions) != 4:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# major = int(versions[0])
|
||||
# minor = int(versions[1])
|
||||
@ -231,7 +231,7 @@
|
||||
#
|
||||
# if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
# return version
|
||||
@ -285,7 +285,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == 0:
|
||||
# logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
# break
|
||||
@ -295,7 +295,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# raise e
|
||||
# raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# time.sleep(5)
|
||||
#
|
||||
# set_session_timeout(cur, 10)
|
||||
@ -414,12 +414,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -428,12 +428,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class DDLCursor:
|
||||
# _cursor = None
|
||||
@ -444,9 +444,9 @@
|
||||
# # 这里检查是不是ddl,不是ddl就抛错
|
||||
# check_is_ddl_sql(sql)
|
||||
# return self._cursor.exec_sql(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute ddl: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class QueryCursor:
|
||||
# _cursor = None
|
||||
@ -457,9 +457,9 @@
|
||||
# # 这里检查是不是query,不是query就抛错
|
||||
# check_is_query_sql(sql)
|
||||
# return self._cursor.exec_query(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute dml query: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class DMLCursor(QueryCursor):
|
||||
# def exec_update(self, sql, print_when_succ = True):
|
||||
@ -467,9 +467,9 @@
|
||||
# # 这里检查是不是update,不是update就抛错
|
||||
# check_is_update_sql(sql)
|
||||
# return self._cursor.exec_sql(sql, print_when_succ)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to execute dml update: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#class BaseDDLAction():
|
||||
# __ddl_cursor = None
|
||||
@ -579,9 +579,9 @@
|
||||
# for r in results:
|
||||
# tenant_id_list.append(r[0])
|
||||
# return tenant_id_list
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to fetch distinct tenant ids')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:config.py
|
||||
@ -706,9 +706,9 @@
|
||||
# actions.refresh_commit_sql_list()
|
||||
# logging.info('================succeed to run post check action ===============')
|
||||
#
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# # 打印统计信息
|
||||
# print_stats()
|
||||
@ -716,12 +716,12 @@
|
||||
# # actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def do_upgrade_by_argv(argv):
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -755,14 +755,14 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
# do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#
|
||||
#
|
||||
@ -866,9 +866,9 @@
|
||||
# upgrade_health_checker.do_check(my_host, my_port, my_user, my_passwd, upgrade_params, timeout, True) # need_check_major_status = True
|
||||
# logging.info('================succeed to run health check action ===============')
|
||||
#
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# # 打印统计信息
|
||||
# print_stats()
|
||||
@ -876,12 +876,12 @@
|
||||
# # actions.dump_rollback_sql_to_file(upgrade_params.rollback_sql_filename)
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def do_upgrade_by_argv(argv):
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -915,14 +915,14 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", module=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, module_set, log_filename)
|
||||
# do_upgrade(host, port, user, password, timeout, module_set, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# logging.exception('run error, maybe you can reference ' + upgrade_params.rollback_sql_filename + ' to rollback it')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#
|
||||
#
|
||||
@ -1162,15 +1162,15 @@
|
||||
# if 'help' == opt.get_long_name():
|
||||
# if 'upgrade_pre' == filename:
|
||||
# global pre_help_str
|
||||
# print pre_help_str
|
||||
# print(pre_help_str)
|
||||
# elif 'upgrade_post' == filename:
|
||||
# global post_help_str
|
||||
# print post_help_str
|
||||
# print(post_help_str)
|
||||
# else:
|
||||
# raise MyError('not supported filename:{0} for help option'.format(filename))
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts(filename):
|
||||
# global g_opts
|
||||
@ -1395,6 +1395,7 @@
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from my_error import MyError
|
||||
#import logging
|
||||
#import time
|
||||
#from actions import Cursor
|
||||
@ -1431,9 +1432,9 @@
|
||||
# info_cnt = result[0][0]
|
||||
# if info_cnt > 0:
|
||||
# actions.set_parameter(cur, "syslog_level", "WDIAG")
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("upgrade syslog level failed!")
|
||||
# raise e
|
||||
# raise
|
||||
#####========******####========= actions end =========####******========####
|
||||
#
|
||||
#def query(cur, sql):
|
||||
@ -1469,7 +1470,7 @@
|
||||
# results = query(cur, sql)
|
||||
# if len(results) < 1 or len(results[0]) < 1:
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] <= 0:
|
||||
# # __all_virtual_core_table doesn't exist, this cluster is upgraded from 4.0.0.0
|
||||
# across_version = True
|
||||
@ -1478,14 +1479,14 @@
|
||||
# tenant_ids = get_tenant_ids(cur)
|
||||
# if len(tenant_ids) <= 0:
|
||||
# logging.warn("tenant_ids count is unexpected")
|
||||
# raise e
|
||||
# raise MyError("tenant_ids count is unexpected")
|
||||
# tenant_count = len(tenant_ids)
|
||||
#
|
||||
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(int_current_data_version)
|
||||
# results = query(cur, sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif 2 * tenant_count != results[0][0]:
|
||||
# logging.info('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# across_version = True
|
||||
@ -1499,7 +1500,7 @@
|
||||
# results = query(cur, sql)
|
||||
# if len(results) < 1 or len(results[0]) < 1:
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] == 0:
|
||||
# logging.info("compatible are all matched")
|
||||
# else:
|
||||
@ -1518,16 +1519,16 @@
|
||||
# max_job_id = 0
|
||||
# elif (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# else:
|
||||
# max_job_id = results[0][0]
|
||||
#
|
||||
# logging.info("get max_used_job_id:{0}".format(max_job_id))
|
||||
#
|
||||
# return max_job_id
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to get max_used_job_id")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def check_can_run_upgrade_job(cur, job_name):
|
||||
# try:
|
||||
@ -1541,10 +1542,10 @@
|
||||
# logging.info("upgrade job not created yet, should run upgrade job")
|
||||
# elif (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# elif ("INPROGRESS" == results[0][0]):
|
||||
# logging.warn("upgrade job still running, should wait")
|
||||
# raise e
|
||||
# raise MyError("upgrade job still running, should wait")
|
||||
# elif ("SUCCESS" == results[0][0]):
|
||||
# bret = True
|
||||
# logging.info("maybe upgrade job remained, can run again")
|
||||
@ -1553,12 +1554,12 @@
|
||||
# logging.info("execute upgrade job failed, should run again")
|
||||
# else:
|
||||
# logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
# raise e
|
||||
# raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
#
|
||||
# return bret
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to check if upgrade job can run")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def check_upgrade_job_result(cur, job_name, timeout, max_used_job_id):
|
||||
# try:
|
||||
@ -1575,7 +1576,7 @@
|
||||
# logging.info("upgrade job not created yet")
|
||||
# elif (len(results) != 1 or len(results[0]) != 4):
|
||||
# logging.warn("row cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row cnt not match")
|
||||
# elif ("INPROGRESS" == results[0][0]):
|
||||
# logging.info("upgrade job is still running")
|
||||
# # check if rs change
|
||||
@ -1587,39 +1588,39 @@
|
||||
# results = query(cur, sql)
|
||||
# if (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] == 1:
|
||||
# sql = """select count(*) from oceanbase.__all_rootservice_event_history where gmt_create > '{0}' and event = 'full_rootservice'""".format(gmt_create)
|
||||
# results = query(cur, sql)
|
||||
# if (len(results) != 1 or len(results[0]) != 1):
|
||||
# logging.warn("row/column cnt not match")
|
||||
# raise e
|
||||
# raise MyError("row/column cnt not match")
|
||||
# elif results[0][0] > 0:
|
||||
# logging.warn("rs changed, should check if upgrade job is still running")
|
||||
# raise e
|
||||
# raise MyError("rs changed, should check if upgrade job is still running")
|
||||
# else:
|
||||
# logging.info("rs[{0}:{1}] still exist, keep waiting".format(ip, port))
|
||||
# else:
|
||||
# logging.warn("rs changed or not exist, should check if upgrade job is still running")
|
||||
# raise e
|
||||
# raise MyError("rs changed or not exist, should check if upgrade job is still running")
|
||||
# elif ("SUCCESS" == results[0][0]):
|
||||
# logging.info("execute upgrade job successfully")
|
||||
# break;
|
||||
# elif ("FAILED" == results[0][0]):
|
||||
# logging.warn("execute upgrade job failed")
|
||||
# raise e
|
||||
# raise MyError("execute upgrade job failed")
|
||||
# else:
|
||||
# logging.warn("invalid job status: {0}".format(results[0][0]))
|
||||
# raise e
|
||||
# raise MyError("invalid job status: {0}".format(results[0][0]))
|
||||
#
|
||||
# times = times - 1
|
||||
# if times == -1:
|
||||
# logging.warn("""check {0} job timeout""".format(job_name))
|
||||
# raise e
|
||||
# raise MyError("""check {0} job timeout""".format(job_name))
|
||||
# time.sleep(10)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("failed to check upgrade job result")
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def run_upgrade_job(conn, cur, job_name, timeout):
|
||||
# try:
|
||||
@ -1646,15 +1647,16 @@
|
||||
# # reset enable_ddl
|
||||
# if ori_enable_ddl == 0:
|
||||
# actions.set_parameter(cur, 'enable_ddl', 'False', timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.warn("run upgrade job failed, :{0}".format(job_name))
|
||||
# raise e
|
||||
# raise
|
||||
# logging.info("run upgrade job success, job_name:{0}".format(job_name))
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from __future__ import print_function
|
||||
#import sys
|
||||
#import os
|
||||
#import mysql.connector
|
||||
@ -1664,6 +1666,10 @@
|
||||
#import time
|
||||
#import re
|
||||
#
|
||||
#if sys.version_info.major == 3:
|
||||
# def cmp(a, b):
|
||||
# return (a > b) - (a < b)
|
||||
#
|
||||
#class UpgradeParams:
|
||||
# log_filename = 'upgrade_checker.log'
|
||||
# old_version = '4.0.0.0'
|
||||
@ -1691,12 +1697,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -1705,12 +1711,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def set_parameter(cur, parameter, value):
|
||||
# sql = """alter system set {0} = '{1}'""".format(parameter, value)
|
||||
@ -1728,7 +1734,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == 0:
|
||||
# logging.info("""{0} is sync, value is {1}""".format(key, value))
|
||||
# break
|
||||
@ -1738,7 +1744,7 @@
|
||||
# times -= 1
|
||||
# if times == 0:
|
||||
# logging.exception("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# raise e
|
||||
# raise MyError("""check {0}:{1} sync timeout""".format(key, value))
|
||||
# time.sleep(5)
|
||||
#
|
||||
##### --------------start : opt.py --------------
|
||||
@ -1875,10 +1881,10 @@
|
||||
#def deal_with_local_opt(opt):
|
||||
# if 'help' == opt.get_long_name():
|
||||
# global help_str
|
||||
# print help_str
|
||||
# print(help_str)
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts():
|
||||
# global g_opts
|
||||
@ -1961,7 +1967,7 @@
|
||||
#
|
||||
# if len(versions) != 4:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# major = int(versions[0])
|
||||
# minor = int(versions[1])
|
||||
@ -1970,7 +1976,7 @@
|
||||
#
|
||||
# if major > 0xffffffff or minor > 0xffff or major_patch > 0xff or minor_patch > 0xff:
|
||||
# logging.exception("""version:{0} is invalid""".format(version_str))
|
||||
# raise e
|
||||
# raise MyError("""version:{0} is invalid""".format(version_str))
|
||||
#
|
||||
# version = (major << 32) | (minor << 16) | (major_patch << 8) | (minor_patch)
|
||||
# return version
|
||||
@ -1982,7 +1988,7 @@
|
||||
# if len(results) != 1:
|
||||
# fail_list.append('min_observer_version is not sync')
|
||||
# elif cmp(results[0][0], upgrade_params.old_version) < 0 :
|
||||
# fail_list.append('old observer version is expected equal or higher then: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
# fail_list.append('old observer version is expected equal or higher than: {0}, actual version:{1}'.format(upgrade_params.old_version, results[0][0]))
|
||||
# logging.info('check observer version success, version = {0}'.format(results[0][0]))
|
||||
#
|
||||
#def check_data_version(query_cur):
|
||||
@ -2423,18 +2429,18 @@
|
||||
# # all check func should execute before check_fail_list
|
||||
# check_fail_list()
|
||||
# modify_server_permanent_offline_time(cur)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#if __name__ == '__main__':
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -2457,17 +2463,18 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", timeout=\"%s\", log-file=\"%s\"',\
|
||||
# host, port, user, password.replace('"', '\\"'), timeout, log_filename)
|
||||
# do_check(host, port, user, password, timeout, upgrade_params)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_health_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from __future__ import print_function
|
||||
#import sys
|
||||
#import os
|
||||
#import time
|
||||
@ -2504,12 +2511,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute sql: %s, rowcount = %d', sql, rowcount)
|
||||
# return rowcount
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
# def exec_query(self, sql, print_when_succ = True):
|
||||
# try:
|
||||
# self.__cursor.execute(sql)
|
||||
@ -2518,12 +2525,12 @@
|
||||
# if True == print_when_succ:
|
||||
# logging.info('succeed to execute query: %s, rowcount = %d', sql, rowcount)
|
||||
# return (self.__cursor.description, results)
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connector error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error, fail to execute sql: %s', sql)
|
||||
# raise e
|
||||
# raise
|
||||
##### ---------------end----------------------
|
||||
#
|
||||
##### --------------start : opt.py --------------
|
||||
@ -2663,10 +2670,10 @@
|
||||
#def deal_with_local_opt(opt):
|
||||
# if 'help' == opt.get_long_name():
|
||||
# global help_str
|
||||
# print help_str
|
||||
# print(help_str)
|
||||
# elif 'version' == opt.get_long_name():
|
||||
# global version_str
|
||||
# print version_str
|
||||
# print(version_str)
|
||||
#
|
||||
#def deal_with_local_opts():
|
||||
# global g_opts
|
||||
@ -2767,9 +2774,9 @@
|
||||
# for r in results:
|
||||
# tenant_id_list.append(r[0])
|
||||
# return tenant_id_list
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('fail to fetch distinct tenant ids')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#def set_default_timeout_by_tenant(query_cur, timeout, timeout_per_tenant, min_timeout):
|
||||
# if timeout > 0:
|
||||
@ -2853,7 +2860,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.warn("""check {0} job timeout""".format(job_name))
|
||||
# raise e
|
||||
# raise MyError("""check {0} job timeout""".format(job_name))
|
||||
# time.sleep(10)
|
||||
#
|
||||
## 开始健康检查
|
||||
@ -2876,18 +2883,18 @@
|
||||
# check_server_version_by_zone(query_cur, zone)
|
||||
# if True == need_check_major_status:
|
||||
# check_major_merge(query_cur, timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
# finally:
|
||||
# cur.close()
|
||||
# conn.close()
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('connection error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
#if __name__ == '__main__':
|
||||
# upgrade_params = UpgradeParams()
|
||||
@ -2911,18 +2918,19 @@
|
||||
# logging.info('parameters from cmd: host=\"%s\", port=%s, user=\"%s\", password=\"%s\", log-file=\"%s\", timeout=%s, zone=\"%s\"', \
|
||||
# host, port, user, password.replace('"', '\\"'), log_filename, timeout, zone)
|
||||
# do_check(host, port, user, password, upgrade_params, timeout, False, zone) # need_check_major_status = False
|
||||
# except mysql.connector.Error, e:
|
||||
# except mysql.connector.Error as e:
|
||||
# logging.exception('mysql connctor error')
|
||||
# raise e
|
||||
# except Exception, e:
|
||||
# raise
|
||||
# except Exception as e:
|
||||
# logging.exception('normal error')
|
||||
# raise e
|
||||
# raise
|
||||
#
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#filename:upgrade_post_checker.py
|
||||
##!/usr/bin/env python
|
||||
## -*- coding: utf-8 -*-
|
||||
#
|
||||
#from my_error import MyError
|
||||
#import sys
|
||||
#import os
|
||||
#import time
|
||||
@ -2946,7 +2954,7 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) == 0:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# tenant_count = len(results)
|
||||
# tenant_ids_str = ''
|
||||
# for index, row in enumerate(results):
|
||||
@ -2957,7 +2965,7 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# server_count = results[0][0]
|
||||
#
|
||||
# # check compatible sync
|
||||
@ -2977,7 +2985,7 @@
|
||||
# result = cur.fetchall()
|
||||
# if len(result) != 1 or len(result[0]) != 1:
|
||||
# logging.exception('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif result[0][0] == parameter_count:
|
||||
# logging.info("""'compatible' is sync, value is {0}""".format(current_data_version))
|
||||
# break
|
||||
@ -2987,7 +2995,7 @@
|
||||
# times -= 1
|
||||
# if times == -1:
|
||||
# logging.exception("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
# raise e
|
||||
# raise MyError("""check compatible:{0} sync timeout""".format(current_data_version))
|
||||
# time.sleep(5)
|
||||
#
|
||||
# actions.set_session_timeout(cur, 10)
|
||||
@ -2998,10 +3006,10 @@
|
||||
# (desc, results) = query_cur.exec_query(sql)
|
||||
# if len(results) != 1 or len(results[0]) != 1:
|
||||
# logging.warn('result cnt not match')
|
||||
# raise e
|
||||
# raise MyError('result cnt not match')
|
||||
# elif 2 * tenant_count != results[0][0]:
|
||||
# logging.warn('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# raise e
|
||||
# raise MyError('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(current_data_version, tenant_count, results[0][0]))
|
||||
# else:
|
||||
# logging.info("all tenant's target_data_version/current_data_version are match with {0}".format(current_data_version))
|
||||
#
|
||||
@ -3021,7 +3029,7 @@
|
||||
#
|
||||
# if times == -1:
|
||||
# logging.warn('check root inspection failed!')
|
||||
# raise e
|
||||
# raise MyError('check root inspection failed!')
|
||||
# logging.info('check root inspection success')
|
||||
#
|
||||
## 4 开ddl
|
||||
@ -3053,13 +3061,14 @@
|
||||
# enable_rebalance(cur, timeout)
|
||||
# enable_rereplication(cur, timeout)
|
||||
# enable_major_freeze(cur, timeout)
|
||||
# except Exception, e:
|
||||
# except Exception as e:
|
||||
# logging.exception('run error')
|
||||
# raise e
|
||||
# raise
|
||||
####====XXXX======######==== I am a splitter ====######======XXXX====####
|
||||
#sub file module end
|
||||
|
||||
|
||||
from __future__ import print_function, absolute_import
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
@ -3115,7 +3124,7 @@ def split_py_files(sub_files_dir):
|
||||
if i >= cur_file_lines_count:
|
||||
raise SplitError('invalid line index:' + str(i) + ', lines_count:' + str(cur_file_lines_count))
|
||||
elif (sub_file_module_end_line + char_enter) == cur_file_lines[i]:
|
||||
print 'succeed to split all sub py files'
|
||||
print('succeed to split all sub py files')
|
||||
break
|
||||
else:
|
||||
mark_idx = cur_file_lines[i].find(sub_filename_line_prefix)
|
||||
@ -3137,5 +3146,7 @@ if __name__ == '__main__':
|
||||
sub_files_dir = cur_file_short_name + sub_files_dir_suffix
|
||||
sub_files_short_dir = cur_file_real_name + sub_files_dir_suffix
|
||||
split_py_files(sub_files_dir)
|
||||
exec('from ' + sub_files_short_dir + '.do_upgrade_pre import do_upgrade_by_argv')
|
||||
sub_files_absolute_dir = os.path.abspath(sub_files_dir)
|
||||
sys.path.append(sub_files_absolute_dir)
|
||||
from do_upgrade_pre import do_upgrade_by_argv
|
||||
do_upgrade_by_argv(sys.argv[1:])
|
||||
|
Reference in New Issue
Block a user