【Python维护数据库】备份PgSQL实例下指定的数据库
2022/4/6 19:19:14
本文主要是介绍【Python维护数据库】备份PgSQL实例下指定的数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Postgresql:12.3
Python:2.7.5
利用py脚本备份PgSQL数据库
$ cat db_backup.py #!/usr/bin/env python # -*- coding: utf8 -*- """pg_dump备份PgSQL实例下指定数据库zedb""" import sys,os,time from datetime import datetime,timedelta,date import shutil db_user = 'backup' #db_pwd = 'xxx' db_port = '5432' db_name = 'zedb' backup_path = '/pgshare/db_dump/' cmd_path = '/usr/local/pgsql/bin/' log_path = backup_path + 'log' # 创建日志函数 def writeLogs(filename,contents): f = file(filename,'aw') f.write(contents) f.close() today = backup_path + time.strftime('%Y-%m-%d') fname = today + os.sep + time.strftime('%Y-%m-%d') + '_' + db_name + '.backup' # 创建备份目录 if not os.path.exists(today): Msg = '-'*30 + time.strftime('%Y-%m-%d,%H:%M:%S') + '-'*30 + '\n' if(os.mkdir(today)) == None: Msg += '** 成功创建备份目录: ' + today + '\n\n' writeLogs(log_path,Msg) else: Msg += '!! 创建备份目录: ' + today + '失败,请检查目录是否可写!\n\n' writeLogs(log_path,Msg) sys.exit() # 备份数据库 cmd_dump = "%spg_dump -h localhost -p %s -U %s -F c -b -v -f %s %s" % \ (cmd_path,db_port,db_user,fname,db_name) # 执行备份命令 if os.system(cmd_dump) == 0: writeLogs(log_path,'数据备份为: ' + fname + '\n') else: writeLogs(log_path,'数据备份失败!\n') ##清理历史备份 def is_valid_date(str): '''判断是否是一个有效的日期字符串''' try: time.strptime(str, "%Y-%m-%d") return True except: return False try: define_date = (date.today() + timedelta(days=-7)).strftime("%Y-%m-%d") print("!!!" + define_date + "之前的备份将进行清理!!!") for f in os.listdir(backup_path): if is_valid_date(f): if f < define_date: rm_f = backup_path + f print(rm_f) writeLogs(log_path, '删除过期的日期目录: ' + rm_f + '\n') shutil.rmtree(rm_f) except OSError as err: print(err)
这篇关于【Python维护数据库】备份PgSQL实例下指定的数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门