72 lines
2.1 KiB
Python
72 lines
2.1 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
|
|
|
|
logger = get_log("/data/logs/ops/combine_pre.log")
|
|
|
|
|
|
class CombineConfig(BaseModel):
|
|
serverid: int
|
|
redis_host: str
|
|
redis_port: int
|
|
|
|
base_redis = {"serverid": 0, "redis_host": "10.10.6.4", "redis_port": 6379}
|
|
|
|
|
|
def get_config():
|
|
alls = list()
|
|
logger.info(f"base dirs {os.path.abspath('.')}")
|
|
for item in os.listdir("../tools_conf"):
|
|
if item.split('.')[-1] == "json" and item.split('.')[0].split('_')[0] == "server" and len(item.split('_')) == 3:
|
|
with open(os.path.join("../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()
|
|
base_redis_i = CombineConfig(**base_redis)
|
|
back_game_redis(base_redis_i)
|
|
for i in alls:
|
|
back_mysql(i)
|
|
back_game_redis(i)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|