[UPGRADE] Upgrade cluster_version/data_version to 4.2.0.0
This commit is contained in:
@ -4,7 +4,7 @@ include(cmake/Utils.cmake)
|
|||||||
include(cmake/Env.cmake)
|
include(cmake/Env.cmake)
|
||||||
|
|
||||||
project("OceanBase_CE"
|
project("OceanBase_CE"
|
||||||
VERSION 4.1.0.0
|
VERSION 4.2.0.0
|
||||||
DESCRIPTION "OceanBase distributed database system"
|
DESCRIPTION "OceanBase distributed database system"
|
||||||
HOMEPAGE_URL "https://open.oceanbase.com/"
|
HOMEPAGE_URL "https://open.oceanbase.com/"
|
||||||
LANGUAGES CXX C ASM)
|
LANGUAGES CXX C ASM)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Name: %NAME
|
Name: %NAME
|
||||||
Version:4.1.0.0
|
Version:4.2.0.0
|
||||||
Release: %RELEASE
|
Release: %RELEASE
|
||||||
BuildRequires: binutils = 2.30
|
BuildRequires: binutils = 2.30
|
||||||
|
@ -569,10 +569,9 @@ int ObRestoreUtil::check_backup_set_version_match_(share::ObBackupSetFileDesc &b
|
|||||||
if (!backup_file_desc.is_valid()) {
|
if (!backup_file_desc.is_valid()) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid argument", K(ret), K(backup_file_desc));
|
LOG_WARN("invalid argument", K(ret), K(backup_file_desc));
|
||||||
} else if (CLUSTER_VERSION_4_0_0_0 > backup_file_desc.cluster_version_
|
} else if (!ObUpgradeChecker::check_cluster_version_exist(backup_file_desc.cluster_version_)) {
|
||||||
|| CLUSTER_VERSION_4_1_0_0 < backup_file_desc.cluster_version_) { // TODO(chongrong.th) wait yanmu provide the check cluster version exist interface
|
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("data version are not exist", K(ret));
|
LOG_WARN("cluster version are not exist", K(ret));
|
||||||
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "cluster version of backup set");
|
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "cluster version of backup set");
|
||||||
} else if (!ObUpgradeChecker::check_data_version_exist(backup_file_desc.tenant_compatible_)) {
|
} else if (!ObUpgradeChecker::check_data_version_exist(backup_file_desc.tenant_compatible_)) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
@ -794,4 +793,4 @@ int ObRestoreUtil::check_physical_restore_finish(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -282,11 +282,9 @@ int ObClusterVersion::get_tenant_data_version(
|
|||||||
if (tenant_config.is_valid() && tenant_config->compatible.value_updated()) {
|
if (tenant_config.is_valid() && tenant_config->compatible.value_updated()) {
|
||||||
data_version = tenant_config->compatible;
|
data_version = tenant_config->compatible;
|
||||||
} else if (is_sys_tenant(tenant_id)
|
} else if (is_sys_tenant(tenant_id)
|
||||||
|| is_meta_tenant(tenant_id)
|
|| is_meta_tenant(tenant_id)) {
|
||||||
|| get_cluster_version() <= CLUSTER_VERSION_4_1_0_0) {
|
// For sys/meta tenant, circular dependency problem may exist when load tenant config from inner tables.
|
||||||
// 1. For sys/meta tenant, circular dependency problem may exist when load tenant config from inner tables.
|
// For safety, data_version will fallback to last barrier data version until actual tenant config is loaded.
|
||||||
// For safety, data_version will fallback to last barrier data version until actual tenant config is loaded.
|
|
||||||
// 2. To compatible with upgrade path from 4.0 to 4.1
|
|
||||||
data_version = LAST_BARRIER_DATA_VERSION;
|
data_version = LAST_BARRIER_DATA_VERSION;
|
||||||
if (REACH_TIME_INTERVAL(60 * 1000 * 1000L)) {
|
if (REACH_TIME_INTERVAL(60 * 1000 * 1000L)) {
|
||||||
share::ObTaskController::get().allow_next_syslog();
|
share::ObTaskController::get().allow_next_syslog();
|
||||||
|
@ -166,9 +166,10 @@ cal_version(const uint64_t major, const uint64_t minor, const uint64_t major_pat
|
|||||||
#define CLUSTER_VERSION_3_2_3_0 (oceanbase::common::cal_version(3, 2, 3, 0))
|
#define CLUSTER_VERSION_3_2_3_0 (oceanbase::common::cal_version(3, 2, 3, 0))
|
||||||
#define CLUSTER_VERSION_4_0_0_0 (oceanbase::common::cal_version(4, 0, 0, 0))
|
#define CLUSTER_VERSION_4_0_0_0 (oceanbase::common::cal_version(4, 0, 0, 0))
|
||||||
#define CLUSTER_VERSION_4_1_0_0 (oceanbase::common::cal_version(4, 1, 0, 0))
|
#define CLUSTER_VERSION_4_1_0_0 (oceanbase::common::cal_version(4, 1, 0, 0))
|
||||||
|
#define CLUSTER_VERSION_4_2_0_0 (oceanbase::common::cal_version(4, 2, 0, 0))
|
||||||
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
//TODO: If you update the above version, please update CLUSTER_CURRENT_VERSION.
|
//TODO: If you update the above version, please update CLUSTER_CURRENT_VERSION.
|
||||||
#define CLUSTER_CURRENT_VERSION CLUSTER_VERSION_4_1_0_0
|
#define CLUSTER_CURRENT_VERSION CLUSTER_VERSION_4_2_0_0
|
||||||
#define GET_MIN_CLUSTER_VERSION() (oceanbase::common::ObClusterVersion::get_instance().get_cluster_version())
|
#define GET_MIN_CLUSTER_VERSION() (oceanbase::common::ObClusterVersion::get_instance().get_cluster_version())
|
||||||
|
|
||||||
#define IS_CLUSTER_VERSION_BEFORE_4_1_0_0 (oceanbase::common::ObClusterVersion::get_instance().get_cluster_version() < CLUSTER_VERSION_4_1_0_0)
|
#define IS_CLUSTER_VERSION_BEFORE_4_1_0_0 (oceanbase::common::ObClusterVersion::get_instance().get_cluster_version() < CLUSTER_VERSION_4_1_0_0)
|
||||||
@ -179,10 +180,13 @@ cal_version(const uint64_t major, const uint64_t minor, const uint64_t major_pat
|
|||||||
// 3. TODO: If you update data_version below, please update DATA_CURRENT_VERSION & ObUpgradeChecker too.
|
// 3. TODO: If you update data_version below, please update DATA_CURRENT_VERSION & ObUpgradeChecker too.
|
||||||
#define DATA_VERSION_4_0_0_0 (oceanbase::common::cal_version(4, 0, 0, 0))
|
#define DATA_VERSION_4_0_0_0 (oceanbase::common::cal_version(4, 0, 0, 0))
|
||||||
#define DATA_VERSION_4_1_0_0 (oceanbase::common::cal_version(4, 1, 0, 0))
|
#define DATA_VERSION_4_1_0_0 (oceanbase::common::cal_version(4, 1, 0, 0))
|
||||||
|
#define DATA_VERSION_4_2_0_0 (oceanbase::common::cal_version(4, 2, 0, 0))
|
||||||
|
|
||||||
|
#define DATA_CURRENT_VERSION DATA_VERSION_4_2_0_0
|
||||||
|
// ATTENSION !!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
// LAST_BARRIER_DATA_VERSION should be the latest barrier data version before DATA_CURRENT_VERSION
|
||||||
|
#define LAST_BARRIER_DATA_VERSION DATA_VERSION_4_1_0_0
|
||||||
// should check returned ret
|
// should check returned ret
|
||||||
#define LAST_BARRIER_DATA_VERSION DATA_VERSION_4_0_0_0
|
|
||||||
#define DATA_CURRENT_VERSION DATA_VERSION_4_1_0_0
|
|
||||||
#define GET_MIN_DATA_VERSION(tenant_id, data_version) (oceanbase::common::ObClusterVersion::get_instance().get_tenant_data_version((tenant_id), (data_version)))
|
#define GET_MIN_DATA_VERSION(tenant_id, data_version) (oceanbase::common::ObClusterVersion::get_instance().get_tenant_data_version((tenant_id), (data_version)))
|
||||||
#define TENANT_NEED_UPGRADE(tenant_id, need) (oceanbase::common::ObClusterVersion::get_instance().tenant_need_upgrade((tenant_id), (need)))
|
#define TENANT_NEED_UPGRADE(tenant_id, need) (oceanbase::common::ObClusterVersion::get_instance().tenant_need_upgrade((tenant_id), (need)))
|
||||||
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
@ -35,7 +35,8 @@ namespace share
|
|||||||
{
|
{
|
||||||
const uint64_t ObUpgradeChecker::UPGRADE_PATH[DATA_VERSION_NUM] = {
|
const uint64_t ObUpgradeChecker::UPGRADE_PATH[DATA_VERSION_NUM] = {
|
||||||
CALC_VERSION(4UL, 0UL, 0UL, 0UL), // 4.0.0.0
|
CALC_VERSION(4UL, 0UL, 0UL, 0UL), // 4.0.0.0
|
||||||
CALC_VERSION(4UL, 1UL, 0UL, 0UL) // 4.1.0.0
|
CALC_VERSION(4UL, 1UL, 0UL, 0UL), // 4.1.0.0
|
||||||
|
CALC_VERSION(4UL, 2UL, 0UL, 0UL) // 4.2.0.0
|
||||||
};
|
};
|
||||||
|
|
||||||
int ObUpgradeChecker::get_data_version_by_cluster_version(
|
int ObUpgradeChecker::get_data_version_by_cluster_version(
|
||||||
@ -44,14 +45,15 @@ int ObUpgradeChecker::get_data_version_by_cluster_version(
|
|||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
switch (cluster_version) {
|
switch (cluster_version) {
|
||||||
case CLUSTER_VERSION_4_0_0_0: {
|
#define CONVERT_CLUSTER_VERSION_TO_DATA_VERSION(CLUSTER_VERSION, DATA_VERSION) \
|
||||||
data_version = DATA_VERSION_4_0_0_0;
|
case CLUSTER_VERSION : { \
|
||||||
break;
|
data_version = DATA_VERSION; \
|
||||||
}
|
break; \
|
||||||
case CLUSTER_VERSION_4_1_0_0: {
|
|
||||||
data_version = DATA_VERSION_4_1_0_0;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
CONVERT_CLUSTER_VERSION_TO_DATA_VERSION(CLUSTER_VERSION_4_0_0_0, DATA_VERSION_4_0_0_0)
|
||||||
|
CONVERT_CLUSTER_VERSION_TO_DATA_VERSION(CLUSTER_VERSION_4_1_0_0, DATA_VERSION_4_1_0_0)
|
||||||
|
CONVERT_CLUSTER_VERSION_TO_DATA_VERSION(CLUSTER_VERSION_4_2_0_0, DATA_VERSION_4_2_0_0)
|
||||||
|
#undef CONVERT_CLUSTER_VERSION_TO_DATA_VERSION
|
||||||
default: {
|
default: {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("invalid cluster_version", KR(ret), K(cluster_version));
|
LOG_WARN("invalid cluster_version", KR(ret), K(cluster_version));
|
||||||
@ -71,6 +73,14 @@ bool ObUpgradeChecker::check_data_version_exist(
|
|||||||
return bret;
|
return bret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//FIXME:(yanmu.ztl) cluster version should be discrete.
|
||||||
|
bool ObUpgradeChecker::check_cluster_version_exist(
|
||||||
|
const uint64_t version)
|
||||||
|
{
|
||||||
|
return version >= CLUSTER_VERSION_4_0_0_0
|
||||||
|
&& version <= CLUSTER_CURRENT_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
#define FORMAT_STR(str) ObHexEscapeSqlStr(str.empty() ? ObString("") : str)
|
#define FORMAT_STR(str) ObHexEscapeSqlStr(str.empty() ? ObString("") : str)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -596,6 +606,7 @@ int ObUpgradeProcesserSet::init(
|
|||||||
// order by data version asc
|
// order by data version asc
|
||||||
INIT_PROCESSOR_BY_VERSION(4, 0, 0, 0);
|
INIT_PROCESSOR_BY_VERSION(4, 0, 0, 0);
|
||||||
INIT_PROCESSOR_BY_VERSION(4, 1, 0, 0);
|
INIT_PROCESSOR_BY_VERSION(4, 1, 0, 0);
|
||||||
|
INIT_PROCESSOR_BY_VERSION(4, 2, 0, 0);
|
||||||
#undef INIT_PROCESSOR_BY_VERSION
|
#undef INIT_PROCESSOR_BY_VERSION
|
||||||
inited_ = true;
|
inited_ = true;
|
||||||
}
|
}
|
||||||
|
@ -165,11 +165,12 @@ class ObUpgradeChecker
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static bool check_data_version_exist(const uint64_t version);
|
static bool check_data_version_exist(const uint64_t version);
|
||||||
|
static bool check_cluster_version_exist(const uint64_t version);
|
||||||
static int get_data_version_by_cluster_version(
|
static int get_data_version_by_cluster_version(
|
||||||
const uint64_t cluster_version,
|
const uint64_t cluster_version,
|
||||||
uint64_t &data_version);
|
uint64_t &data_version);
|
||||||
public:
|
public:
|
||||||
static const int64_t DATA_VERSION_NUM = 2;
|
static const int64_t DATA_VERSION_NUM = 3;
|
||||||
static const uint64_t UPGRADE_PATH[DATA_VERSION_NUM];
|
static const uint64_t UPGRADE_PATH[DATA_VERSION_NUM];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -188,6 +189,7 @@ private:
|
|||||||
int init_rewrite_rule_version(const uint64_t tenant_id);
|
int init_rewrite_rule_version(const uint64_t tenant_id);
|
||||||
static int recompile_all_views_and_synonyms(const uint64_t tenant_id);
|
static int recompile_all_views_and_synonyms(const uint64_t tenant_id);
|
||||||
};
|
};
|
||||||
|
DEF_SIMPLE_UPGRARD_PROCESSER(4, 2, 0, 0)
|
||||||
/* =========== special upgrade processor end ============= */
|
/* =========== special upgrade processor end ============= */
|
||||||
|
|
||||||
/* =========== upgrade processor end ============= */
|
/* =========== upgrade processor end ============= */
|
||||||
|
@ -481,9 +481,9 @@ DEF_TIME(tablet_meta_table_check_interval, OB_CLUSTER_PARAMETER, "30m", "[1m,)",
|
|||||||
"the time interval that observer compares tablet meta table with local ls replica info "
|
"the time interval that observer compares tablet meta table with local ls replica info "
|
||||||
"and make adjustments to ensure the correctness of tablet meta table. Range: [1m,+∞)",
|
"and make adjustments to ensure the correctness of tablet meta table. Range: [1m,+∞)",
|
||||||
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
DEF_STR(min_observer_version, OB_CLUSTER_PARAMETER, "4.1.0.0", "the min observer version",
|
DEF_STR(min_observer_version, OB_CLUSTER_PARAMETER, "4.2.0.0", "the min observer version",
|
||||||
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
DEF_VERSION(compatible, OB_TENANT_PARAMETER, "4.1.0.0", "compatible version for persisted data",
|
DEF_VERSION(compatible, OB_TENANT_PARAMETER, "4.2.0.0", "compatible version for persisted data",
|
||||||
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::ROOT_SERVICE, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
DEF_BOOL(enable_ddl, OB_CLUSTER_PARAMETER, "True", "specifies whether DDL operation is turned on. "
|
DEF_BOOL(enable_ddl, OB_CLUSTER_PARAMETER, "True", "specifies whether DDL operation is turned on. "
|
||||||
"Value: True:turned on; False: turned off",
|
"Value: True:turned on; False: turned off",
|
||||||
|
@ -18,8 +18,8 @@ class SqlItem:
|
|||||||
self.action_sql = action_sql
|
self.action_sql = action_sql
|
||||||
self.rollback_sql = rollback_sql
|
self.rollback_sql = rollback_sql
|
||||||
|
|
||||||
current_cluster_version = "4.1.0.0"
|
current_cluster_version = "4.2.0.0"
|
||||||
current_data_version = "4.1.0.0"
|
current_data_version = "4.2.0.0"
|
||||||
g_succ_sql_list = []
|
g_succ_sql_list = []
|
||||||
g_commit_sql_list = []
|
g_commit_sql_list = []
|
||||||
|
|
||||||
|
@ -25,6 +25,12 @@
|
|||||||
when_come_from: [4.0.0.0]
|
when_come_from: [4.0.0.0]
|
||||||
|
|
||||||
- version: 4.1.0.0
|
- version: 4.1.0.0
|
||||||
|
can_be_upgraded_to:
|
||||||
|
- 4.2.0.0
|
||||||
require_from_binary:
|
require_from_binary:
|
||||||
value: True
|
value: True
|
||||||
when_come_from: [4.0.0.0, 4.1.0.0]
|
when_come_from: [4.0.0.0, 4.1.0.0]
|
||||||
|
|
||||||
|
- version: 4.2.0.0
|
||||||
|
can_be_upgraded_to:
|
||||||
|
- 4.3.0.0
|
||||||
|
@ -336,7 +336,10 @@ def check_data_version(query_cur):
|
|||||||
min_cluster_version = get_version(results[0][0])
|
min_cluster_version = get_version(results[0][0])
|
||||||
|
|
||||||
# check data version
|
# check data version
|
||||||
if min_cluster_version >= get_version("4.1.0.0"):
|
if min_cluster_version < get_version("4.1.0.0"):
|
||||||
|
# last barrier cluster version should be 4.1.0.0
|
||||||
|
fail_list.append('last barrier cluster version is 4.1.0.0. prohibit cluster upgrade from cluster version less than 4.1.0.0')
|
||||||
|
else:
|
||||||
data_version_str = ''
|
data_version_str = ''
|
||||||
data_version = 0
|
data_version = 0
|
||||||
# check compatible is same
|
# check compatible is same
|
||||||
@ -350,22 +353,26 @@ def check_data_version(query_cur):
|
|||||||
data_version_str = results[0][0]
|
data_version_str = results[0][0]
|
||||||
data_version = get_version(results[0][0])
|
data_version = get_version(results[0][0])
|
||||||
|
|
||||||
# check target_data_version/current_data_version
|
if data_version < get_version("4.1.0.0"):
|
||||||
sql = "select count(*) from oceanbase.__all_tenant"
|
# last barrier data version should be 4.1.0.0
|
||||||
(desc, results) = query_cur.exec_query(sql)
|
fail_list.append('last barrier data version is 4.1.0.0. prohibit cluster upgrade from data version less than 4.1.0.0')
|
||||||
if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
fail_list.append('result cnt not match')
|
|
||||||
else:
|
else:
|
||||||
tenant_count = results[0][0]
|
# check target_data_version/current_data_version
|
||||||
|
sql = "select count(*) from oceanbase.__all_tenant"
|
||||||
sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
|
||||||
(desc, results) = query_cur.exec_query(sql)
|
(desc, results) = query_cur.exec_query(sql)
|
||||||
if len(results) != 1 or len(results[0]) != 1:
|
if len(results) != 1 or len(results[0]) != 1:
|
||||||
fail_list.append('result cnt not match')
|
fail_list.append('result cnt not match')
|
||||||
elif 2 * tenant_count != results[0][0]:
|
|
||||||
fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
|
||||||
else:
|
else:
|
||||||
logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
tenant_count = results[0][0]
|
||||||
|
|
||||||
|
sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
||||||
|
(desc, results) = query_cur.exec_query(sql)
|
||||||
|
if len(results) != 1 or len(results[0]) != 1:
|
||||||
|
fail_list.append('result cnt not match')
|
||||||
|
elif 2 * tenant_count != results[0][0]:
|
||||||
|
fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
||||||
|
else:
|
||||||
|
logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
||||||
|
|
||||||
# 2. 检查paxos副本是否同步, paxos副本是否缺失
|
# 2. 检查paxos副本是否同步, paxos副本是否缺失
|
||||||
def check_paxos_replica(query_cur):
|
def check_paxos_replica(query_cur):
|
||||||
@ -398,38 +405,25 @@ def check_cluster_status(query_cur):
|
|||||||
|
|
||||||
# 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
# 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
||||||
def check_tenant_status(query_cur):
|
def check_tenant_status(query_cur):
|
||||||
min_cluster_version = 0
|
|
||||||
sql = """select distinct value from GV$OB_PARAMETERS where name='min_observer_version'"""
|
# check tenant schema
|
||||||
(desc, results) = query_cur.exec_query(sql)
|
(desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
||||||
if len(results) != 1:
|
if len(results) != 1 or len(results[0]) != 1:
|
||||||
fail_list.append('min_observer_version is not sync')
|
fail_list.append('results len not match')
|
||||||
elif len(results[0]) != 1:
|
elif 0 != results[0][0]:
|
||||||
fail_list.append('column cnt not match')
|
fail_list.append('has abnormal tenant, should stop')
|
||||||
else:
|
else:
|
||||||
min_cluster_version = get_version(results[0][0])
|
logging.info('check tenant status success')
|
||||||
|
|
||||||
# check tenant schema
|
# check tenant info
|
||||||
(desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
# don't support restore tenant upgrade
|
||||||
if len(results) != 1 or len(results[0]) != 1:
|
(desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' and tenant_role != 'STANDBY'""")
|
||||||
fail_list.append('results len not match')
|
if len(results) != 1 or len(results[0]) != 1:
|
||||||
elif 0 != results[0][0]:
|
fail_list.append('results len not match')
|
||||||
fail_list.append('has abnormal tenant, should stop')
|
elif 0 != results[0][0]:
|
||||||
else:
|
fail_list.append('has abnormal tenant info, should stop')
|
||||||
logging.info('check tenant status success')
|
else:
|
||||||
|
logging.info('check tenant info success')
|
||||||
# check tenant info
|
|
||||||
# 1. don't support standby tenant upgrade from 4.0.0.0
|
|
||||||
# 2. don't support restore tenant upgrade
|
|
||||||
sub_sql = ''
|
|
||||||
if min_cluster_version >= get_version("4.1.0.0"):
|
|
||||||
sub_sql = """ and tenant_role != 'STANDBY'"""
|
|
||||||
(desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' {0}""".format(sub_sql))
|
|
||||||
if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
fail_list.append('results len not match')
|
|
||||||
elif 0 != results[0][0]:
|
|
||||||
fail_list.append('has abnormal tenant info, should stop')
|
|
||||||
else:
|
|
||||||
logging.info('check tenant info success')
|
|
||||||
|
|
||||||
# 6. 检查无恢复任务
|
# 6. 检查无恢复任务
|
||||||
def check_restore_job_exist(query_cur):
|
def check_restore_job_exist(query_cur):
|
||||||
|
@ -26,8 +26,8 @@
|
|||||||
# self.action_sql = action_sql
|
# self.action_sql = action_sql
|
||||||
# self.rollback_sql = rollback_sql
|
# self.rollback_sql = rollback_sql
|
||||||
#
|
#
|
||||||
#current_cluster_version = "4.1.0.0"
|
#current_cluster_version = "4.2.0.0"
|
||||||
#current_data_version = "4.1.0.0"
|
#current_data_version = "4.2.0.0"
|
||||||
#g_succ_sql_list = []
|
#g_succ_sql_list = []
|
||||||
#g_commit_sql_list = []
|
#g_commit_sql_list = []
|
||||||
#
|
#
|
||||||
@ -1843,7 +1843,10 @@
|
|||||||
# min_cluster_version = get_version(results[0][0])
|
# min_cluster_version = get_version(results[0][0])
|
||||||
#
|
#
|
||||||
# # check data version
|
# # check data version
|
||||||
# if min_cluster_version >= get_version("4.1.0.0"):
|
# if min_cluster_version < get_version("4.1.0.0"):
|
||||||
|
# # last barrier cluster version should be 4.1.0.0
|
||||||
|
# fail_list.append('last barrier cluster version is 4.1.0.0. prohibit cluster upgrade from cluster version less than 4.1.0.0')
|
||||||
|
# else:
|
||||||
# data_version_str = ''
|
# data_version_str = ''
|
||||||
# data_version = 0
|
# data_version = 0
|
||||||
# # check compatible is same
|
# # check compatible is same
|
||||||
@ -1857,22 +1860,26 @@
|
|||||||
# data_version_str = results[0][0]
|
# data_version_str = results[0][0]
|
||||||
# data_version = get_version(results[0][0])
|
# data_version = get_version(results[0][0])
|
||||||
#
|
#
|
||||||
# # check target_data_version/current_data_version
|
# if data_version < get_version("4.1.0.0"):
|
||||||
# sql = "select count(*) from oceanbase.__all_tenant"
|
# # last barrier data version should be 4.1.0.0
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# fail_list.append('last barrier data version is 4.1.0.0. prohibit cluster upgrade from data version less than 4.1.0.0')
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
# fail_list.append('result cnt not match')
|
|
||||||
# else:
|
# else:
|
||||||
# tenant_count = results[0][0]
|
# # check target_data_version/current_data_version
|
||||||
#
|
# sql = "select count(*) from oceanbase.__all_tenant"
|
||||||
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# (desc, results) = query_cur.exec_query(sql)
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# fail_list.append('result cnt not match')
|
# fail_list.append('result cnt not match')
|
||||||
# elif 2 * tenant_count != results[0][0]:
|
|
||||||
# fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
|
||||||
# else:
|
# else:
|
||||||
# logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
# tenant_count = results[0][0]
|
||||||
|
#
|
||||||
|
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
||||||
|
# (desc, results) = query_cur.exec_query(sql)
|
||||||
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
|
# fail_list.append('result cnt not match')
|
||||||
|
# elif 2 * tenant_count != results[0][0]:
|
||||||
|
# fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
||||||
|
# else:
|
||||||
|
# logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
||||||
#
|
#
|
||||||
## 2. 检查paxos副本是否同步, paxos副本是否缺失
|
## 2. 检查paxos副本是否同步, paxos副本是否缺失
|
||||||
#def check_paxos_replica(query_cur):
|
#def check_paxos_replica(query_cur):
|
||||||
@ -1905,38 +1912,25 @@
|
|||||||
#
|
#
|
||||||
## 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
## 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
||||||
#def check_tenant_status(query_cur):
|
#def check_tenant_status(query_cur):
|
||||||
# min_cluster_version = 0
|
#
|
||||||
# sql = """select distinct value from GV$OB_PARAMETERS where name='min_observer_version'"""
|
# # check tenant schema
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# (desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
||||||
# if len(results) != 1:
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# fail_list.append('min_observer_version is not sync')
|
# fail_list.append('results len not match')
|
||||||
# elif len(results[0]) != 1:
|
# elif 0 != results[0][0]:
|
||||||
# fail_list.append('column cnt not match')
|
# fail_list.append('has abnormal tenant, should stop')
|
||||||
# else:
|
# else:
|
||||||
# min_cluster_version = get_version(results[0][0])
|
# logging.info('check tenant status success')
|
||||||
#
|
#
|
||||||
# # check tenant schema
|
# # check tenant info
|
||||||
# (desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
# # don't support restore tenant upgrade
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
# (desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' and tenant_role != 'STANDBY'""")
|
||||||
# fail_list.append('results len not match')
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# elif 0 != results[0][0]:
|
# fail_list.append('results len not match')
|
||||||
# fail_list.append('has abnormal tenant, should stop')
|
# elif 0 != results[0][0]:
|
||||||
# else:
|
# fail_list.append('has abnormal tenant info, should stop')
|
||||||
# logging.info('check tenant status success')
|
# else:
|
||||||
#
|
# logging.info('check tenant info success')
|
||||||
# # check tenant info
|
|
||||||
# # 1. don't support standby tenant upgrade from 4.0.0.0
|
|
||||||
# # 2. don't support restore tenant upgrade
|
|
||||||
# sub_sql = ''
|
|
||||||
# if min_cluster_version >= get_version("4.1.0.0"):
|
|
||||||
# sub_sql = """ and tenant_role != 'STANDBY'"""
|
|
||||||
# (desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' {0}""".format(sub_sql))
|
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
# fail_list.append('results len not match')
|
|
||||||
# elif 0 != results[0][0]:
|
|
||||||
# fail_list.append('has abnormal tenant info, should stop')
|
|
||||||
# else:
|
|
||||||
# logging.info('check tenant info success')
|
|
||||||
#
|
#
|
||||||
## 6. 检查无恢复任务
|
## 6. 检查无恢复任务
|
||||||
#def check_restore_job_exist(query_cur):
|
#def check_restore_job_exist(query_cur):
|
||||||
|
@ -26,8 +26,8 @@
|
|||||||
# self.action_sql = action_sql
|
# self.action_sql = action_sql
|
||||||
# self.rollback_sql = rollback_sql
|
# self.rollback_sql = rollback_sql
|
||||||
#
|
#
|
||||||
#current_cluster_version = "4.1.0.0"
|
#current_cluster_version = "4.2.0.0"
|
||||||
#current_data_version = "4.1.0.0"
|
#current_data_version = "4.2.0.0"
|
||||||
#g_succ_sql_list = []
|
#g_succ_sql_list = []
|
||||||
#g_commit_sql_list = []
|
#g_commit_sql_list = []
|
||||||
#
|
#
|
||||||
@ -1843,7 +1843,10 @@
|
|||||||
# min_cluster_version = get_version(results[0][0])
|
# min_cluster_version = get_version(results[0][0])
|
||||||
#
|
#
|
||||||
# # check data version
|
# # check data version
|
||||||
# if min_cluster_version >= get_version("4.1.0.0"):
|
# if min_cluster_version < get_version("4.1.0.0"):
|
||||||
|
# # last barrier cluster version should be 4.1.0.0
|
||||||
|
# fail_list.append('last barrier cluster version is 4.1.0.0. prohibit cluster upgrade from cluster version less than 4.1.0.0')
|
||||||
|
# else:
|
||||||
# data_version_str = ''
|
# data_version_str = ''
|
||||||
# data_version = 0
|
# data_version = 0
|
||||||
# # check compatible is same
|
# # check compatible is same
|
||||||
@ -1857,22 +1860,26 @@
|
|||||||
# data_version_str = results[0][0]
|
# data_version_str = results[0][0]
|
||||||
# data_version = get_version(results[0][0])
|
# data_version = get_version(results[0][0])
|
||||||
#
|
#
|
||||||
# # check target_data_version/current_data_version
|
# if data_version < get_version("4.1.0.0"):
|
||||||
# sql = "select count(*) from oceanbase.__all_tenant"
|
# # last barrier data version should be 4.1.0.0
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# fail_list.append('last barrier data version is 4.1.0.0. prohibit cluster upgrade from data version less than 4.1.0.0')
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
# fail_list.append('result cnt not match')
|
|
||||||
# else:
|
# else:
|
||||||
# tenant_count = results[0][0]
|
# # check target_data_version/current_data_version
|
||||||
#
|
# sql = "select count(*) from oceanbase.__all_tenant"
|
||||||
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# (desc, results) = query_cur.exec_query(sql)
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# fail_list.append('result cnt not match')
|
# fail_list.append('result cnt not match')
|
||||||
# elif 2 * tenant_count != results[0][0]:
|
|
||||||
# fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
|
||||||
# else:
|
# else:
|
||||||
# logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
# tenant_count = results[0][0]
|
||||||
|
#
|
||||||
|
# sql = "select count(*) from __all_virtual_core_table where column_name in ('target_data_version', 'current_data_version') and column_value = {0}".format(data_version)
|
||||||
|
# (desc, results) = query_cur.exec_query(sql)
|
||||||
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
|
# fail_list.append('result cnt not match')
|
||||||
|
# elif 2 * tenant_count != results[0][0]:
|
||||||
|
# fail_list.append('target_data_version/current_data_version not match with {0}, tenant_cnt:{1}, result_cnt:{2}'.format(data_version_str, tenant_count, results[0][0]))
|
||||||
|
# else:
|
||||||
|
# logging.info("check data version success, all tenant's compatible/target_data_version/current_data_version is {0}".format(data_version_str))
|
||||||
#
|
#
|
||||||
## 2. 检查paxos副本是否同步, paxos副本是否缺失
|
## 2. 检查paxos副本是否同步, paxos副本是否缺失
|
||||||
#def check_paxos_replica(query_cur):
|
#def check_paxos_replica(query_cur):
|
||||||
@ -1905,38 +1912,25 @@
|
|||||||
#
|
#
|
||||||
## 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
## 5. 检查是否有异常租户(creating,延迟删除,恢复中)
|
||||||
#def check_tenant_status(query_cur):
|
#def check_tenant_status(query_cur):
|
||||||
# min_cluster_version = 0
|
#
|
||||||
# sql = """select distinct value from GV$OB_PARAMETERS where name='min_observer_version'"""
|
# # check tenant schema
|
||||||
# (desc, results) = query_cur.exec_query(sql)
|
# (desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
||||||
# if len(results) != 1:
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# fail_list.append('min_observer_version is not sync')
|
# fail_list.append('results len not match')
|
||||||
# elif len(results[0]) != 1:
|
# elif 0 != results[0][0]:
|
||||||
# fail_list.append('column cnt not match')
|
# fail_list.append('has abnormal tenant, should stop')
|
||||||
# else:
|
# else:
|
||||||
# min_cluster_version = get_version(results[0][0])
|
# logging.info('check tenant status success')
|
||||||
#
|
#
|
||||||
# # check tenant schema
|
# # check tenant info
|
||||||
# (desc, results) = query_cur.exec_query("""select count(*) as count from DBA_OB_TENANTS where status != 'NORMAL'""")
|
# # don't support restore tenant upgrade
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
# (desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' and tenant_role != 'STANDBY'""")
|
||||||
# fail_list.append('results len not match')
|
# if len(results) != 1 or len(results[0]) != 1:
|
||||||
# elif 0 != results[0][0]:
|
# fail_list.append('results len not match')
|
||||||
# fail_list.append('has abnormal tenant, should stop')
|
# elif 0 != results[0][0]:
|
||||||
# else:
|
# fail_list.append('has abnormal tenant info, should stop')
|
||||||
# logging.info('check tenant status success')
|
# else:
|
||||||
#
|
# logging.info('check tenant info success')
|
||||||
# # check tenant info
|
|
||||||
# # 1. don't support standby tenant upgrade from 4.0.0.0
|
|
||||||
# # 2. don't support restore tenant upgrade
|
|
||||||
# sub_sql = ''
|
|
||||||
# if min_cluster_version >= get_version("4.1.0.0"):
|
|
||||||
# sub_sql = """ and tenant_role != 'STANDBY'"""
|
|
||||||
# (desc, results) = query_cur.exec_query("""select count(*) as count from oceanbase.__all_virtual_tenant_info where tenant_role != 'PRIMARY' {0}""".format(sub_sql))
|
|
||||||
# if len(results) != 1 or len(results[0]) != 1:
|
|
||||||
# fail_list.append('results len not match')
|
|
||||||
# elif 0 != results[0][0]:
|
|
||||||
# fail_list.append('has abnormal tenant info, should stop')
|
|
||||||
# else:
|
|
||||||
# logging.info('check tenant info success')
|
|
||||||
#
|
#
|
||||||
## 6. 检查无恢复任务
|
## 6. 检查无恢复任务
|
||||||
#def check_restore_job_exist(query_cur):
|
#def check_restore_job_exist(query_cur):
|
||||||
|
Reference in New Issue
Block a user