PostgreSQL--实现数据库备份恢复详细教学
前言
这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:RodmaChen
PostgreSQL--实现数据库备份恢复详细教学
- 一. 数据库备份
- 二. 数据库恢复
- 三. 存留问题
数据库备份恢复功能是每个产品所需的,以下是简单的脚本案例,满足了大部分备份和恢复需求
关于备份恢复命令可参考这篇文章:PostgreSQL – 备份恢复命令
一. 数据库备份
我创建了back-sql.sh脚本
#!/bin/bash
pg_info=($1)
local_path=$2
ctime=$(date "+%Y%m%d%H%M%S")
backup_path="${local_path}/${ctime}_${pg_info[4]}.sql"
zip_path="${local_path}/${ctime}_sql.zip"
pg_dump --compress=9 --dbname=postgres://${pg_info[0]}:"${pg_info[1]}"@"${pg_info[2]}":${pg_info[3]}/${pg_info[4]} --format=custom --file=${backup_path}
cd ${local_path}/
zip -m ${zip_path} "${ctime}_${pg_info[4]}.sql"
linux上执行以下命令就备份成功了
给脚本执行权限
chmod +x back-sql.sh./back-sql.sh "用户名 密码 地址 端口 数据库" 要备份的路径

这样就能够备份成功了

–compress=9是为了给备份出来的文件压缩,原本备份出来的sql有31M,压缩后就是3M
–format=custom --file=${backup_path}是备份出二进制文件,与pg_restore 配合使用
如果不使用以上两个命令,那么就需要psql命令进行恢复
二. 数据库恢复
我做了点容错,处理逻辑如下

创建一个recover-sql.sh脚本
#!/bin/bash
pg_info=($1)
path=$2
ctime=test_$(date "+%Y%m%d%H%M%S")
sql_path=${path}
psql postgres://${pg_info[0]}:"${pg_info[1]}"@${pg_info[2]}:${pg_info[3]}/postgres <<EOF
CREATE database ${ctime};
EOF
pg_restore --exit-on-error --dbname=postgres://${pg_info[0]}:"${pg_info[1]}"@${pg_info[2]}:${pg_info[3]}/${ctime} ${sql_path}
if [ $? -ne 1 ]; thenecho "pg_restore 命令执行成功"psql postgres://${pg_info[0]}:"${pg_info[1]}"@${pg_info[2]}:${pg_info[3]}/postgres <<EOF
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '${pg_info[4]}' AND pid <> pg_backend_pid();
DROP database IF EXISTS ${pg_info[4]};
ALTER database ${ctime} rename to ${pg_info[4]};
EOF
elseecho "pg_restore 命令执行失败"psql postgres://${pg_info[0]}:"${pg_info[1]}"@${pg_info[2]}:${pg_info[3]}/postgres <<EOF
DROP database IF EXISTS ${ctime};
EOF
fi
linux上执行以下命令就恢复成功了
./recover-sql.sh "用户名 密码 地址 端口 数据库" 你sql文件的地址(列如:/tmp/hwaf2/b.sql)
三. 存留问题
- 备份出来的数据库是明文的,可以被随意查看的
- 可以随便拿一个sql就能进行恢复,修改掉原来的数据库
针对以上问题,我的方案是对sql文件进行加密。
我通过python使用国密的sm2和sm4进行了尝试,发现如果sql文件过大,加密速度变得很慢,所以这种加密方法明显行不通,不知道各位大神有什么解决方案
作者:RodmaChen
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接。
相关文章:
PostgreSQL--实现数据库备份恢复详细教学
前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的,以下是简单的脚本案例&a…...
JDK工具之jstack说明
JDK工具之jstack说明 前言什么是jstack?如何使用jstack?获取Java进程的PID分析jstack输出 常用的jstack命令选项jstack的应用场景结论 前言 作为Java开发人员,在开发和维护复杂的Java应用程序时,我们经常会遇到各种各样的问题&am…...
34 | 牛顿迭代法
文章目录 牛顿迭代法一、原理二、Python实现三、练习题四、总结牛顿迭代法 一、原理 牛顿迭代法(Newton’s Method)是一种用于寻找方程的实根的数值方法。其基本思想是通过一系列逼近来求解方程的根。对于方程 f ( x ) = 0 f(x) = 0 f(x...
ChatGPT如何帮助学生学习
一些教育工作者担心学生可能使用ChatGPT作弊。因为这个AI工具能写报告和计算机代码,画出复杂图表……甚至已经有许多学校把ChatGPT屏蔽。 研究发现,学生作弊的主要原因是想考得好。是否作弊与作业和考试的打分方式有关,所以这与技术的便…...
easyexcel导出excel-50行代码搞定大量数据导出
文章目录 一、写在前面二、使用步骤定义导出的数据实体导出 一、写在前面 场景: 当数据量导出过大时如果一次从数据库取出所有数据会导致内存飙升导致系统奔溃,所以我们采取循环读取和循环写入。 准备: mave导入:easyexcel:3.0.5 二、使用…...
OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南
🦉 AI新闻 🚀 OpenAI宣布安卓版ChatGPT正式上线 摘要:OpenAI今日宣布,安卓版ChatGPT已正式上线,目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载,并计划在下周拓展到更多地区。Chat…...
Rust vs Go:常用语法对比(二)
21. Swap values 交换变量a和b的值 a, b b, a package mainimport "fmt"func main() { a : 3 b : 10 a, b b, a fmt.Println(a) fmt.Println(b)} 103 fn main() { let a 3; let b 10; let (a, b) (b, a); println!("a: {a}, b: {b}", aa,…...
对于Vue3的一些思考
看完 Vue Hooks: 让Vue开发更简单与高效 - 掘金 一些小心得 vue3: 组合式API(是利用架构,强制达到拆分目的) 达到解耦的目的。对于vue3来说 每个模块的每个逻辑都是 一个一个独立的方法。通过 方法方法整体业务 代码风格&#…...
Bean的生命周期 - spring
前言 本篇介绍了Bean的生命周期,认识PostConstruct注释,PreDestroy注释,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1. spring生命周期2. Bean的生命周期3. 为什么先设置…...
入门Linux基本指令(2)
这篇文章主要提供一些对文件操作的Linux基本指令,希望对大家有所帮助,三连支持! 目录 cp指令(复制) mv指令(剪切) nano指令 cat指令(打印文件内容) > 输出重定向 >> 追加重定向 < 输入重定向 more指令 less指令(推荐) …...
【C++】【自用】选择题 刷题总结
文章目录 【类和对象】1. 构造、拷贝构造的调用2. 静态成员变量3. 初始化列表4. 成员函数:运算符重载5. 友元函数、友元类55. 特殊类设计 【细节题】1. 构造 析构 new \ deletet、new[] \ delete[] 【类和对象】 1. 构造、拷贝构造的调用 #include using namespace…...
SkyWalking链路追踪-Collector(收集器)
Collector(收集器) SkyWalking的Collector(收集器)是SkyWalking链路追踪的核心组件之一。它负责接收来自各个Agent的追踪数据,并将其存储到数据存储器(如数据库)中。具体来说,Colle…...
typescript自动编译文件实时更新
npm install -g typescripttsc --init 生成tsconfig.json配置文件 tsc -w 在监听模式下运行,当文件发生改变的时候自动编译...
qt6.5 download for kali/ubuntu ,windows (以及配置选项选择)
download and sign in qt官网 sign in onlion Install 1 2 3 4 5...
【JS 原型链】
JavaScript 原型链是一个重要的概念,它是 JavaScript 语言实现面向对象编程的核心。在 JavaScript 中,每个对象都有一个与之关联的原型,并且该对象继承了原型中的属性和方法。这些原型组成了一个原型链,可以通过该链追溯到顶层的 …...
harmonyOS 开发之UI开发(ArkTS声明式开发范式)概述
UI开发(ArkTS声明式开发范式)概述 基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架,提供了构建OpenHarmony应用UI所必需的能力,主要包括: ArkTS ArkTS是UI开发语言ÿ…...
【人工智能】神经网络、M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义、总代价
M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义 文章目录 M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义M-P 神经元模型激活函数(Activation function)神经网络结构举例训练神经网络学习网络参数代价定义均方误差交叉熵(Cross Entropy)…...
小程序新渲染引擎 Skyline 发布正式版
为了进一步提升小程序的渲染性能和体验,我们推出了一套新渲染引擎 Skyline,现在,跟随着基础库 3.0.0 发布 Skyline 正式版。 我们知道,小程序一直用 WebView 来渲染界面,因其有不错的兼容性和丰富的特性,且…...
网络安全作业1
URL编码 当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。 安全字符,指的是没有特殊用途或者特殊意义的…...
【NLP】视觉变压器与卷积神经网络
一、说明 本篇是 变压器因其计算效率和可扩展性而成为NLP的首选模型。在计算机视觉中,卷积神经网络(CNN)架构仍然占主导地位,但一些研究人员已经尝试将CNN与自我注意相结合。作者尝试将标准变压器直接应用于图像,发现在…...
SwitchyOmega+Burp无感抓包实战:解决HTTPS拦截与流量路由难题
1. 为什么“无感抓包”是BurpSuite日常使用的分水岭刚接触Web安全测试的朋友常有个错觉:装上Burp Suite,配好代理,打开浏览器,点几下网页——流量就该自动进来了。结果现实是:首页打不开、登录态丢失、HTTPS报错满屏、…...
软阴影:那个让虚拟世界“温柔起来“的光影小秘密
一、从一只小猫的影子说起 前几天我在朋友家做客,他家养了一只胖乎乎的橘猫,正趴在阳台的窗边晒太阳。我无意间瞥了一眼那只猫脚边的影子,突然被一个细节震撼了—— 那只猫的影子——并不是一片均匀的黑。 仔细看——猫肚子紧贴地板的地方——…...
3分钟掌握HashCalculator:你的文件完整性守护专家
3分钟掌握HashCalculator:你的文件完整性守护专家 【免费下载链接】HashCalculator 哈希值计算工具,批量计算/批量校验/查找重复文件/改变哈希值等,支持集成到系统右键菜单 项目地址: https://gitcode.com/gh_mirrors/ha/HashCalculator …...
1901-2022年中国气温变化分析实战:用这份1km栅格数据我们能发现什么?
1901-2022年中国气温变化分析实战:如何从1km栅格数据中挖掘气候演变规律当一份覆盖122年、分辨率精确到1公里的气温栅格数据摆在面前时,我们看到的不仅是数字矩阵,更是一部写在经纬度坐标里的气候变迁史诗。这份由逐月数据聚合生成的逐年气温…...
OpenCore Legacy Patcher完全指南:3步让旧款Mac焕发新生的终极方案
OpenCore Legacy Patcher完全指南:3步让旧款Mac焕发新生的终极方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否拥有一台性能尚可但已被…...
树莓派工业GPIO接口板:电气隔离与电平转换实战指南
1. 项目概述:为什么需要一块工业级GPIO接口板?如果你用树莓派做过一些硬件项目,尤其是涉及到控制继电器、电机或者连接工业设备(比如PLC、变频器)时,大概率踩过这样的坑:直接用树莓派的GPIO引脚…...
Facebook登录协议逆向解析:appsecret_proof与e2e加密机制
1. 这不是“爬虫教程”,而是一次对现代Web身份协议的解剖实验你有没有试过,在调试一个Facebook登录集成时,浏览器Network面板里突然冒出一串带sig、access_token、e2e、c_user的请求,参数长度动辄上千字符,加密方式五花…...
DeepSeek模型选型终极指南(附完整Benchmark Excel模板):从MMLU到GPQA、从AIME到LiveCodeBench,一表看透真实能力边界
更多请点击: https://intelliparadigm.com 第一章:DeepSeek模型选型终极指南(附完整Benchmark Excel模板):从MMLU到GPQA、从AIME到LiveCodeBench,一表看透真实能力边界 选择适配业务场景的DeepSeek模型&am…...
DeepSeek注释质量跃迁路径(附12个真实项目对比数据+可复用Prompt模板)
更多请点击: https://codechina.net 第一章:DeepSeek注释质量跃迁路径(附12个真实项目对比数据可复用Prompt模板) 高质量代码注释不再是“锦上添花”,而是模型理解意图、团队高效协同与长期可维护性的核心基础设施。…...
FModel完整部署指南:UE5资源提取与逆向解析实战
1. 为什么FModel不是“另一个UE资源查看器”,而是虚幻项目逆向分析的起点FModel虚幻引擎资源提取工具完整部署指南——这标题里藏着三个被多数人忽略的关键信号:“FModel”不是泛指,“虚幻引擎”特指UE4/UE5原生资产体系,“完整部…...
