当前位置: 首页 > news >正文

PG逻辑备份与恢复

文章目录

  • 创建测试数据
  • pg_dump 备份
  • pg_restore 恢复
  • pg_restore 恢复并行备份的文件
  • PG 只导出指定函数

创建测试数据

drop database if exists test;
create database test ;
\c test
create table t1(id int primary key);
create table t2(id serial primary key, name varchar);
create table t3(id bigserial primary key, name varchar, age int);CREATE FUNCTION func_test()
RETURNS int 
AS 
$$
BEGINRETURN 0;
END;
$$ LANGUAGE plpgsql;CREATE FUNCTION func_test2()
RETURNS int 
AS 
$$
BEGINRETURN 0;
END;
$$ LANGUAGE plpgsql;

pg_dump 备份

  • pg_dump test -f test.sql

  • pg_dump test -f test2.sql -C -c --if-exists

  • pg_dump test -Fc -f test.dmp

  • pg_restore test.dmp -f test_dump.sql

[pgsql@mysql01 test]$ diff test_dump.sql test.sql
[pgsql@mysql01 test]$ diff test_dump.sql test2.sql
18a19,41
> DROP DATABASE IF EXISTS test;
> --
> -- Name: test; Type: DATABASE; Schema: -; Owner: pgsql
> --
> 
> CREATE DATABASE test WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = 'en_US.utf8';
> 
> 
> ALTER DATABASE test OWNER TO pgsql;
> 
> \connect test
> 
> SET statement_timeout = 0;
> SET lock_timeout = 0;
> SET idle_in_transaction_session_timeout = 0;
> SET client_encoding = 'UTF8';
> SET standard_conforming_strings = on;
> SELECT pg_catalog.set_config('search_path', '', false);
> SET check_function_bodies = false;
> SET xmloption = content;
> SET client_min_messages = warning;
> SET row_security = off;
> 
  • pg_dump test -Fc -f test2.dump -C -c --if-exists

  • pg_restore test2.dump -f test2_dump.sql

[pgsql@mysql01 test]$ diff test2_dump.sql test2.sql
18a19,41
> DROP DATABASE IF EXISTS test;
> --
> -- Name: test; Type: DATABASE; Schema: -; Owner: pgsql
> --
> 
> CREATE DATABASE test WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = 'en_US.utf8';
> 
> 
> ALTER DATABASE test OWNER TO pgsql;
> 
> \connect test
> 
> SET statement_timeout = 0;
> SET lock_timeout = 0;
> SET idle_in_transaction_session_timeout = 0;
> SET client_encoding = 'UTF8';
> SET standard_conforming_strings = on;
> SELECT pg_catalog.set_config('search_path', '', false);
> SET check_function_bodies = false;
> SET xmloption = content;
> SET client_min_messages = warning;
> SET row_security = off;

可见, 即使使用了 -C -c --if-exists 生成的 dmp文件中还是不包含 库的创建信息
因此, 我们在通过 pg_restore 恢复 dmp 文件的时候, 记得一定要先创建好数据库, 再恢复

  • pg_dump test -Fd -f test_dir -j 3 # 并行逻辑备份
[pgsql@mysql01 test]$ ll test_dir
total 20
-rw-rw-r-- 1 pgsql pgsql   25 Aug 20 21:13 2541.dat.gz
-rw-rw-r-- 1 pgsql pgsql   25 Aug 20 21:13 2543.dat.gz
-rw-rw-r-- 1 pgsql pgsql   25 Aug 20 21:13 2545.dat.gz
-rw-rw-r-- 1 pgsql pgsql 5198 Aug 20 21:13 toc.dat

pg_restore 恢复

[pgsql@mysql01 test]$ dropdb test
[pgsql@mysql01 test]$ psql -c "\l test"
psql: error: connection to server on socket "/usr/local/pgsql/data/.s.PGSQL.5432" failed: FATAL:  database "test" does not exist
[pgsql@mysql01 test]$ pg_restore test.dmp -d test          
pg_restore: error: connection to server on socket "/usr/local/pgsql/data/.s.PGSQL.5432" failed: FATAL:  database "test" does not exist
[pgsql@mysql01 test]$ 
[pgsql@mysql01 test]$ createdb  test
[pgsql@mysql01 test]$ pg_restore test.dmp -d test
[pgsql@mysql01 test]$ psql -d test
psql (14.5)
Type "help" for help.test=# \dtList of relationsSchema | Name | Type  | Owner 
--------+------+-------+-------public | t1   | table | pgsqlpublic | t2   | table | pgsqlpublic | t3   | table | pgsql
(3 rows)test=# \dfList of functionsSchema |    Name    | Result data type | Argument data types | Type 
--------+------------+------------------+---------------------+------public | func_test  | integer          |                     | funcpublic | func_test2 | integer          |                     | func
(2 rows)
test=# \dsList of relationsSchema |   Name    |   Type   | Owner 
--------+-----------+----------+-------public | t2_id_seq | sequence | pgsqlpublic | t3_id_seq | sequence | pgsql
(2 rows)

pg_restore 恢复并行备份的文件

dropdb test
createdb test[pgsql@mysql01 test]$ pg_restore test_dir -j3 -d test
[pgsql@mysql01 test]$ psql -d test
psql (14.5)
Type "help" for help.test=# \dtList of relationsSchema | Name | Type  | Owner 
--------+------+-------+-------public | t1   | table | pgsqlpublic | t2   | table | pgsqlpublic | t3   | table | pgsql
(3 rows)test=# \dfList of functionsSchema |    Name    | Result data type | Argument data types | Type 
--------+------------+------------------+---------------------+------public | func_test  | integer          |                     | funcpublic | func_test2 | integer          |                     | func
(2 rows)test=# \dsList of relationsSchema |   Name    |   Type   | Owner 
--------+-----------+----------+-------public | t2_id_seq | sequence | pgsqlpublic | t3_id_seq | sequence | pgsql
(2 rows)

PG 只导出指定函数

[pgsql@mysql01 test2]$ pg_dump  test -Fc  -s -f test.dmp 
[pgsql@mysql01 test2]$ pg_restore -l test.dmp | grep FUNCTION > function.list
[pgsql@mysql01 test2]$ more function.list 
214; 1255 25865 FUNCTION public func_test() pgsql
215; 1255 25866 FUNCTION public func_test2() pgsql
[pgsql@mysql01 test2]$ 
[pgsql@mysql01 test2]$ 
[pgsql@mysql01 test2]$ pg_restore -L function.list test.dmp > function_list.sql
pg_restore: error: one of -d/--dbname and -f/--file must be specified
[pgsql@mysql01 test2]$ pg_restore -L function.list test.dmp -f function_list.sql
[pgsql@mysql01 test2]$ 
[pgsql@mysql01 test2]$ more function_list.sql 
--
-- PostgreSQL database dump
---- Dumped from database version 14.5
-- Dumped by pg_dump version 14.5SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;--
-- Name: func_test(); Type: FUNCTION; Schema: public; Owner: pgsql
--CREATE FUNCTION public.func_test() RETURNS integerLANGUAGE plpgsqlAS $$
BEGINRETURN 0;
END;
$$;ALTER FUNCTION public.func_test() OWNER TO pgsql;--
-- Name: func_test2(); Type: FUNCTION; Schema: public; Owner: pgsql
--CREATE FUNCTION public.func_test2() RETURNS integerLANGUAGE plpgsqlAS $$
BEGINRETURN 0;
END;
$$;ALTER FUNCTION public.func_test2() OWNER TO pgsql;--
-- PostgreSQL database dump complete
--

相关文章:

PG逻辑备份与恢复

文章目录 创建测试数据pg_dump 备份pg_restore 恢复pg_restore 恢复并行备份的文件PG 只导出指定函数 创建测试数据 drop database if exists test; create database test ; \c test create table t1(id int primary key); create table t2(id serial primary key, name varch…...

图数据库_Neo4j和SpringBoot整合使用_实战创建明星关系图谱---Neo4j图数据库工作笔记0010

然后我们再来看一下这个明星关系图谱 可以看到这里 这个是原来的startRelation 我们可以写CQL去查询对应的关系 可以看到,首先查询出来以后,然后就可以去创建 我们可以把写的创建明星关系的CQL,拿到 springboot中去执行 可以看到,这里我们先写一个StarRelationRepository,然…...

Linux网络编程:Socket套接字编程(Server服务器 Client客户端)

文章目录: 一:定义和流程分析 1.定义 2.流程分析 3.网络字节序 二:相关函数 IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结…...

Mac OS下应用Python+Selenium实现web自动化测试

在Mac环境下应用PythonSelenium实现web自动化测试 在这个过程中要注意两点: 1.在终端联网执行命令“sudo pip install –U selenium”如果失败了的话,可以尝试用命令“sudo easy_install selenium”来安装selenium; 2.安装好PyCharm后新建project&…...

每天一道leetcode:934. 最短的桥(图论中等广度优先遍历)

今日份题目: 给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。 你可以将任意数量的 0 变为 1 &#…...

【学习日记】【FreeRTOS】FreeRTOS 移植到 STM32F103C8

前言 本文基于野火 FreeRTOS 教程,内容是关于 FreeRTOS 官方代码的移植的注意事项,并将野火例程中 STM32F103RC 代码移植到 STM32F103C8。 一、FreeRTOS V9.0.0 源码的获取 两个下载链接: 官 网 代码托管 二、源码文件夹内容简介 Source…...

Qt 屏幕偶发性失灵

项目场景: 基于NXP i.mx7的Qt应用层项目开发,通过goodix使用触摸屏,走i2c协议。 问题描述 触摸屏使用过程中意外卡死,现场分为多种: i2c总线传输错误,直观表现为触摸屏无效,任何与触摸屏挂接在同一总线上的i2c设备,均受到干扰,并且在传输过程中内核报错以下代码: G…...

如何在pycharm中指定GPU

如何在pycharm中指定GPU 作者:安静到无声 个人主页 目录 如何在pycharm中指定GPU打开编辑配置点击环境变量添加GPU配置信息推荐专栏在Pycharm运行程序的时候,有时候需要指定GPU,我们可以采用以下方式进行设置: 打开编辑配置 点击环境变量 添加GPU配置信息 添加名称:CU…...

C#判断字符串中有没有字母,正则表达式、IsLetter

要判断字符串中是否包含字母,可以使用正则表达式或者循环遍历字符串的方式。 方法一:使用正则表达式 using System.Text.RegularExpressions;string input "Hello123"; bool containsLetter Regex.IsMatch(input, "[a-zA-Z]");上…...

Jtti:Ubuntu怎么限制指定端口和IP访问

在 Ubuntu 系统中,可以使用防火墙规则来限制特定的端口和IP访问。常用的防火墙管理工具是 iptables,以下是使用 iptables 来限制指定端口和IP访问的步骤: 安装 iptables: 如果系统中没有安装 iptables,可以使用以下命…...

机器学习/深度学习需要掌握的linux基础命令

很多深度学习/机器学习/数据分析等领域(或者说大多数在Python环境下进行操作的领域)的初学者入门时是在Windows上进行学习,也得益于如Anaconda等工具把环境管理做的如此友善 但如果想在该领域继续深耕,一定会与Linux操作系统打交…...

C++11 std::async推荐使用 std::launch::async 模式

async真假多线程 std::launch::async真多线程 std::launch::async | std::launch::deferred可能多线程 std::launch::deferred假多线程 枚举变量说明 枚举定义 enum class launch {async 1, // 0b1deferred 2, // 0b10any async | def…...

没有使用springboot 单独使用spring-boot-starter-logging

如果您不使用Spring Boot框架&#xff0c;但想单独使用Spring Boot Starter Logging&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 添加Maven依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…...

创建Azure资源锁

锁的介绍 在Azure中&#xff0c;资源锁是一种用于保护订阅、资源组或者单个资源的机制。它可以防止对受锁定的资源进行删除或修改操作&#xff0c;帮助确保资源的连续可用性和安全性。 Azure中的资源锁可以分为两种类型&#xff1a; 删除锁&#xff08;CanNotDelete&#xf…...

卷积神经网络教程 (CNN) – 使用 TensorFlow 在 Python 中开发图像分类器

在这篇博客中,让我们讨论什么是卷积神经网络 (CNN) 以及 卷积神经网络背后的架构——旨在解决 图像识别系统和分类问题。 卷积神经网络在图像和视频识别、推荐系统和自然语言处理方面有着广泛的应用。 目录 计算机如何读取图像? 为什么不是全连接网络?...

MyBatis XML映射处理CLOB和BLOB类型

Mybatis的MapperXML映射文件应该处理数据库字段类型为CLOB和BLOB类型的数据呢&#xff1f;首先我们先看下CLOB和BLOB这两种数据类型的介绍。 介绍 使用Mybatis时涉及到两种特殊类型的处理&#xff0c;分别是Blob&#xff08;Binary Large Object&#xff09;和Clob&#xff0…...

FPGA_学习_14_第一个自写模块的感悟和ila在线调试教程与技巧(寻找APD的击穿偏压)

前一篇博客我们提到了&#xff0c;如果要使用算法找到Vbr&#xff0c;通过寻找APD采集信号的噪声方差的剧变点去寻找Vbr是一个不错的方式。此功能的第一步是在FPGA中实现方差的计算&#xff0c;这个我们已经在上一篇博客中实现了。 继上一篇博客之后&#xff0c;感觉过了很久了…...

【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

1 换源 仅适用于Release date: May 3rd 2023、Debian version: 11 (bullseye)这个树莓派OS版本&#xff0c;其他版本不保证有效。 首先使用如下命令&#xff0c;查看自己树莓派的架构。 uname -a结果如下&#xff1a; 如果红圈处显示为aarch64&#xff0c;使用命令sudo na…...

校企合作谋发展 合作共赢谱新篇|云畅科技与湖南民族职业学院签订校企合作协议

产业是经济发展的重要引擎&#xff0c;人才是产业发展的重要资源。为积极探索软件人才培育新路径&#xff0c;共商政产学研协同新机制&#xff0c;8月8日&#xff0c;云畅科技与湖南省民族职业学院教育技术学院软件技术专业签订校企合作协议。 会上&#xff0c;学院副校长王志平…...

vue技术学习

vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue快速入门</title> </head> <body> <!--老师解读 1. div元素不是必须的&#xff0c;也可以是其它元素&#xff0…...

pdf2pptx:LaTeX到PowerPoint的无缝转换终极方案

pdf2pptx&#xff1a;LaTeX到PowerPoint的无缝转换终极方案 【免费下载链接】pdf2pptx Convert your (Beamer) PDF slides to (Powerpoint) PPTX 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2pptx 还在为LaTeX Beamer制作的精美学术幻灯片无法在PowerPoint中完美展…...

WordPress站点AI友好化:LLMs.txt插件配置与Markdown输出实战

1. 项目概述&#xff1a;为你的WordPress站点打造AI友好的内容接口如果你运营着一个WordPress网站&#xff0c;并且希望你的内容能被当下最前沿的大型语言模型&#xff08;LLMs&#xff09;——比如ChatGPT、Claude、Gemini等——更好地发现、理解和利用&#xff0c;那么你很可…...

Windows安卓应用安装器:快速轻量级解决方案终极指南

Windows安卓应用安装器&#xff1a;快速轻量级解决方案终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上轻松安装安卓应用吗&#xff1f;厌倦…...

WebRTC、SIP通话背后的隐形功臣:手把手调试G711A/G711U的PCM音频数据

WebRTC与SIP通话背后的音频基石&#xff1a;G711编解码实战解析 实时音视频通信已经成为现代互联网的基础设施&#xff0c;从在线会议到客服电话&#xff0c;背后都离不开高效的音频编解码技术。在众多音频编码标准中&#xff0c;G711系列以其简单可靠的特性&#xff0c;依然活…...

从数学定义到代码实现:深度解析卷积与互相关的本质差异

1. 卷积与互相关的数学定义 很多人第一次接触卷积和互相关时&#xff0c;都会觉得它们长得太像了。确实&#xff0c;从表面上看&#xff0c;它们都是用一个滑动窗口在输入数据上移动&#xff0c;然后进行加权求和。但如果你仔细研究它们的数学定义&#xff0c;就会发现本质上的…...

Java程序开发第七课

1. Java基础入门 Java特点&#xff1a;跨平台&#xff08;JVM&#xff09;、面向对象、健壮性&#xff08;强类型、垃圾回收&#xff09;。JDK、JRE、JVM关系&#xff1a; JDK &#xff08;开发工具包&#xff09; JRE 开发工具 &#xff08;javac&#xff0c; java&#x…...

为Claude Code配置Taotoken解决账号被封与Token不足的烦恼

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置Taotoken解决账号被封与Token不足的烦恼 对于依赖Claude Code进行编程辅助的开发者来说&#xff0c;直接使用官方…...

数据可视化项目架构全解析:从核心原理到React+ECharts工程实践

1. 项目概述&#xff1a;数据可视化的价值与“SKY-lv/data-visualization”的定位在数据驱动的时代&#xff0c;我们每天都被海量的信息包围。无论是业务报表、用户行为日志&#xff0c;还是传感器采集的时序数据&#xff0c;它们本身只是一堆冰冷的数字。如何让这些数据“开口…...

终极Windows热键侦探指南:3分钟解决快捷键冲突难题

终极Windows热键侦探指南&#xff1a;3分钟解决快捷键冲突难题 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇…...

告别答辩PPT噩梦:百考通AI如何帮你高效搞定毕业答辩

写了大半年的论文&#xff0c;却在最后一步的答辩PPT上栽了跟头&#xff1f;这可能是许多毕业生的真实写照。 01 毕业季的隐形杀手&#xff1a;PPT焦虑症 五月&#xff0c;校园里的玉兰花开得正盛&#xff0c;图书馆的灯光却依然亮到深夜。论文查重通过了&#xff0c;导师点头…...