74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
|
|
from subprocess import run
|
|
from pydantic import BaseModel
|
|
from typing import Optional, Union
|
|
import json
|
|
import os
|
|
from ops.common import run_cmd
|
|
from ops.plog import get_log
|
|
import datetime
|
|
|
|
|
|
def get_log(log_path_files="/data/logs/ops/ops.log"):
|
|
logger.add(log_path_files, rotation="500 MB", enqueue=True)
|
|
return logger
|
|
|
|
|
|
logger = get_log("~/temp/combine_pre")
|
|
|
|
|
|
class CombineConfig(BaseModel):
|
|
serverid: int
|
|
redis_host: str
|
|
redis_port: int
|
|
|
|
|
|
def get_config():
|
|
alls = list()
|
|
logger.info(f"base dirs {os.path.abspath('.')}")
|
|
for item in os.listdir("tools/combine_db/tools_conf"):
|
|
if item.split('.')[-1] == "json" and item.split('.')[0].split('_')[0] == "server":
|
|
with open(os.path.join("tools/combine_db/tools_conf", item)) as f:
|
|
data = json.loads(f.read())
|
|
for line in data:
|
|
cc = CombineConfig(**line)
|
|
alls.append(cc)
|
|
|
|
return alls
|
|
|
|
|
|
def back_mysql(i):
|
|
#CombineConfig(serverid=496, redis_host='10.10.6.186', redis_port=6381)
|
|
now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
|
|
cmd = f"mysqldump --default-character-set=utf8 -uwjtx -pmMWA4DKCfeOL -h10.10.6.2 legend_{i.serverid} >back/legend_{i.serverid}_{now}.sql"
|
|
status, out = run_cmd(cmd)
|
|
if not status:
|
|
logger.error(f"back mysql failed,serverid={i.serverid},out={out}")
|
|
return False
|
|
else:
|
|
logger.debug(f"back mysql {i.serverid} success!")
|
|
return True
|
|
|
|
|
|
def back_game_redis(i):
|
|
now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
|
|
back_redis_cmd = f"redis-cli -h {i.redis_host} -p {i.redis_port} --rdb back/{i.serverid}_{now}.rdb "
|
|
status, out = run_cmd(back_redis_cmd)
|
|
if not status:
|
|
logger.error(f"back redis failed,serverid={i.serverid},out={out}")
|
|
return False
|
|
else:
|
|
logger.debug(f"back redis {i.serverid} success!")
|
|
return True
|
|
|
|
|
|
def main():
|
|
alls = get_config()
|
|
for i in alls:
|
|
back_mysql(i)
|
|
back_game_redis(i)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|