wjtx/tools/combine_db/script/combine_pre.py
pengtao a22b875b91 1
2021-06-30 11:31:02 +08:00

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()