From 585cd8b53217e14d7c9c151aa9da46f0fa5c3344 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Wed, 15 May 2024 04:06:15 +0800 Subject: [PATCH] update_dev --- plugins/mysql/index.py | 55 ++++++++++++++++++++++++++++++++++++++++ plugins/mysql/install.sh | 5 ++-- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/plugins/mysql/index.py b/plugins/mysql/index.py index 7f6922978..48aba1a78 100755 --- a/plugins/mysql/index.py +++ b/plugins/mysql/index.py @@ -3018,6 +3018,58 @@ def dumpMysqlData(version=''): return 'fail' +############### --- 重要 数据补足同步 ---- ########### + +def syncDatabaseRepair(version=''): + args = getArgs() + data = checkArgs(args, ['db','sign']) + if not data[0]: + return data[1] + + sync_args_db = args['db'] + sync_args_sign = args['sign'] + conn = pSqliteDb('slave_sync_user') + if sync_args_sign != '': + data = conn.field('ip,port,user,pass,mode,cmd').where('ip=?', (sync_sign,)).find() + else: + data = conn.field('ip,port,user,pass,mode,cmd').find() + + # print(data) + user = data['user'] + apass = data['pass'] + port = data['port'] + ip = data['ip'] + + # 本地数据 + local_db = pMysqlDb() + + # 远程数据 + sync_db = mw.getMyORM() + # MySQLdb | + sync_db.setPort(port) + sync_db.setHost(ip) + sync_db.setUser(user) + sync_db.setPwd(apass) + sync_db.setDbName(sync_args_db) + + tables = local_db.query('show tables from `%s`' % sync_args_db) + table_key = "Tables_in_" + sync_args_db + for tb in tables: + table_name = sync_args_db+'.'+tb[table_key] + + # 比较总数 + cmd_count_sql = 'select count(*) as num from '+table_name + local_count_data = local_db.query(cmd_count_sql) + sync_count_data = sync_db.query(cmd_count_sql) + + print(local_count_data,sync_count_data) + + + + data = sync_db.query("select version()") + print(data) + return True + ############### --- 重要 同步---- ########### def asyncTmpfile(): @@ -3028,6 +3080,7 @@ def asyncTmpfile(): def writeDbSyncStatus(data): path = asyncTmpfile() mw.writeFile(path, json.dumps(data)) + return True def doFullSync(version=''): @@ -3516,5 +3569,7 @@ if __name__ == "__main__": print(doFullSync(version)) elif func == 'dump_mysql_data': print(dumpMysqlData(version)) + elif func == 'sync_database_repair': + print(syncDatabaseRepair()) else: print('error') diff --git a/plugins/mysql/install.sh b/plugins/mysql/install.sh index 4b1bfee60..de9ce8fa9 100755 --- a/plugins/mysql/install.sh +++ b/plugins/mysql/install.sh @@ -6,8 +6,9 @@ export PATH # https://www.cnblogs.com/whiteY/p/17331882.html # cd /www/server/mdserver-web/plugins/mysql && bash install.sh install 8.2 -# cd /www/server/mdserver-web && source bin/activate && python3 /www/server/mdserver-web/plugins/mysql/index.py try_slave_sync_bugfix {} -# cd /www/server/mdserver-web && python3 /www/server/mdserver-web/plugins/mysql/index.py do_full_sync {"db":"xxx","sign":"","begin":1} +# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py try_slave_sync_bugfix {} +# cd /www/server/mdserver-web && python3 plugins/mysql/index.py do_full_sync {"db":"xxx","sign":"","begin":1} +# cd /www/server/mdserver-web && python3 plugins/mysql/index.py sync_database_repair {"db":"xxx","sign":""} curPath=`pwd` rootPath=$(dirname "$curPath") rootPath=$(dirname "$rootPath")