from lib import utils #1.判断必须是否传递备份文件名称 if len(sys.argv) < 2: print("you must set backupfilename!") sys.exit() #2.判断设置的备份文件名是否已经存在 filename = sys.argv[1] if os.path.exists(filename): print("%s already exists,please set another filename!" % (filename, )) sys.exit() if not os.path.exists(os.path.join("/usr/bin", "pg_dump")): pg_dumpcmd = "cp -r packages/pg_dump /usr/bin" utils.execute_cmd(pg_dumpcmd, "安装pg_dump模块失败") chmodcmd = "chmod 777 /usr/bin/pg_dump" utils.execute_cmd(chmodcmd, "给pg_dump添加执行权限失败") dbpassword = utils.getdbpassword() print("start backup database ......") #pg_dump -F t -c -f/root/test.tar 'host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=nailgun password=vbTwv6mC dbname=nailgun' #dbbackupcmd = 'pg_dump -b "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=nailgun password=%s dbname=nailgun" > /root/mydb.bak' %(dbpassword,) utils.setPasswordFile() dbbackupcmd = "pg_dump -F t -c -f%s -U nailgun -d nailgun -h 127.0.0.1 " % ( filename, ) print(dbbackupcmd) utils.execute_cmd(dbbackupcmd, "备份数据库出现异常") print("数据库备份%s成功!" % (filename, ))
import sys #1.判断必须是否传递备份文件名称 if len(sys.argv) < 2: print("you must set recoveryfilename!") sys.exit() #2.判断需要恢复文件名是否已经存在 filename = sys.argv[1] if not os.path.exists(filename): print("%s file does not exist,Please set the correct file path!" %(filename,)) sys.exit() print("危险操作,您确定要执行本次数据恢复操作请在下面输入yes,按下回车键即可开始执行恢复!") confirmsg = raw_input("确定执行输入(yes):") if confirmsg != "yes": print("你取消了本次恢复数据操作!") pass else: if not os.path.exists(os.path.join("/usr/bin","pg_restore")): cp_restorecmd = "cp -r packages/pg_restore /usr/bin" utils.execute_cmd(cp_restorecmd, "安装pg_restore模块失败") chmodcmd = "chmod 777 /usr/bin/pg_restore" utils.execute_cmd(chmodcmd, "给pg_restore添加执行权限失败") dbpassword = utils.getdbpassword() utils.setPasswordFile() restore_cmd = "pg_restore -U nailgun -c -n public -d nailgun -h 127.0.0.1 < %s" %(filename,) print(restore_cmd) utils.execute_cmd(restore_cmd,"恢复数据失败") print("成功恢复%s所有的数据,刷新浏览器后生效."%(filename,))
import contextlib from sqlalchemy import create_engine from sqlalchemy import schema from sqlalchemy import MetaData from sqlalchemy.engine import reflection from sqlalchemy.orm import scoped_session from sqlalchemy.orm import Session from sqlalchemy.orm import sessionmaker from sqlalchemy.orm.query import Query from lib import utils nailguncmd = "cp -r packages/nailgun /usr/lib/python2.6/site-packages" utils.execute_cmd(nailguncmd, "安装nailgun模块失败") alembic_cmd = "cp -r packages/alembic /usr/lib/python2.6/site-packages" utils.execute_cmd(alembic_cmd, "安装alembic模块失败") makocmd = "cp -r packages/mako /usr/lib/python2.6/site-packages" utils.execute_cmd(makocmd, "安装mako模块失败") #先安装模块然后才能导入相应python模块 from nailgun.db.deadlock_detector import clean_locks from nailgun.db.deadlock_detector import handle_lock dbpassword = utils.getdbpassword() engine = create_engine( "postgresql://*****:*****@127.0.0.1:5432/nailgun".format(dbpassword), client_encoding="utf-8")