def fetch_mysql_metadata(cluster):
cluster_name = cluster.cluster_name
cluster_port = cluster.cluster_port
# ????????????????????????
dictSlaveConn = getSlaveConnStr(cluster_name)
if dictSlaveConn:
dictConn = dictSlaveConn
else:
dictConn = getMasterConnStr(cluster_name)
Host = dictConn['Host']
Port = dictConn['Port']
User = dictConn['User']
Password = dictConn['Password']
# ?????????
sqlContent = "select table_schema,table_name,table_type,engine,row_format,table_rows,avg_row_length," \
"data_length,max_data_length,index_length,data_free,auto_increment,create_time,table_collation," \
"create_options,table_comment from tables where table_schema not in {}".format(
('mysql', 'sys', 'mondmm', 'test', 'information_schema', 'performance_schema'), )
cluster_db = "information_schema"
try:
_, results = mdb_query(sqlContent, Host, Port, User, Password, cluster_db, True)
except Exception as e:
print("Mysql Error : %s" % e)
return None
# ??????????
for result in results:
table_schema = result.get('table_schema')
table_name = result.get('table_name')
_, res = mdb_query("show create table {}".format(table_name), Host, Port, User, Password, table_schema)
create_statement = pymysql.escape_string(res[0][1])
result['create_statement'] = create_statement
# ?????,????????????????. (cluster_port, table_schema, table_name??????unique??)
metadatas = mysql_cluster_metadata.objects.filter(
Q(cluster_port=cluster_port) & Q(table_schema=table_schema) & Q(table_name=table_name))
if metadatas:
metadata = metadatas[0]
else:
metadata = mysql_cluster_metadata()
metadata.cluster_name = cluster_name
metadata.cluster_port = cluster_port
metadata.table_schema = result['table_schema']
metadata.table_name = result['table_name']
metadata.table_type = result['table_type']
metadata.engine = result['engine']
metadata.row_format = result['row_format']
metadata.table_rows = result['table_rows'] if result['table_rows'] else 0
metadata.avg_row_length = result['avg_row_length']
metadata.data_length = result['data_length']
metadata.max_data_length = result['max_data_length']
metadata.index_length = result['index_length']
metadata.data_free = result['data_free']
metadata.auto_increment = result['auto_increment'] if result['auto_increment'] else 0
metadata.create_time = result['create_time']
metadata.table_collation = result['table_collation']
metadata.create_statement = result['create_statement']
metadata.create_options = result['create_options']
metadata.table_comment = result['table_comment']
metadata.save()
评论列表
文章目录