基于Red Hat Enterprise Linux 7操作系统的PostgresSql15的备份恢复(实践笔记)

零、前言

本文是基于阿里云ECS服务器进行的实践操作,操作系统版本:Red Hat Enterprise Linux 7

PG数据库版本:PostgresSql 15

PG安装方式:yum

由于本人新接触pg数据,本次也是出于好奇,就对pg数据库的pg_dump备份操作进行了一次试验,操作过程可能有些不当,敬请谅解。

本文只供留做笔记或新手作为参考,不作为技术指导类文章。操作需具备pg基础及linux基本操作知识。

一、备份

sql 复制代码
--- 1.1、首先新建备份sql输出的目录并授权
# root用户操作
[root@wstech ~]# mkdir -p /usr/pgsql-15/backup

--- 1.2、备份操作
-- 切换postgres用户
su - postgres

cd /usr/pgsql-15/bin
--- 1.3、执行备份:注意文件目录------可执行命令的目录以及输出备份文件的目录,不然恢复的时候找不到。另外需要注意输出目录的磁盘余量。
-bash-4.2$ ./bin/pg_dump mydb > ./backup/mydb.sql
--- 1.4、查看文件
-bash-4.2$ cd pgsql-15/backup/
-bash-4.2$ ll
total 4
-rw-r--r-- 1 postgres postgres 1073 Aug 26 23:42 mydb.sql
--- 1.5、查看备份文件sql文本内容
-bash-4.2$ cat mydb.sql
--
-- PostgreSQL database dump
--

-- Dumped from database version 15.4
-- Dumped by pg_dump version 15.4

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;

SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: weather_info; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.weather_info (
    city character varying(80),
    temp_lo integer,
    temp_hi integer,
    prcp real,
    date date
);


ALTER TABLE public.weather_info OWNER TO postgres;

--
-- Data for Name: weather_info; Type: TABLE DATA; Schema: public; Owner: postgres
--

COPY public.weather_info (city, temp_lo, temp_hi, prcp, date) FROM stdin;
US      46      50      0.25    1994-11-27
UK      43      57      0       1994-11-29
Hayward 37      54      \N      1994-11-29
\.


--
-- PostgreSQL database dump complete
--


--- 1.6、删除数据库mydb
-bash-4.2$ dropdb mydb;
-bash-4.2$ psql
psql (15.4)
Type "help" for help.
--- 1.7、查看是否删除成功(已经没有了,说明删除成功了)
postgres=# \l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 dbname    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 dengyu    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
(5 rows)

二、恢复

sql 复制代码
--- 2.1、新建目标库newdb数据库
-bash-4.2$ createdb newdb;
--- 2.2、进入psql可执行文件目录(bin目录)
-bash-4.2$ cd /usr/pgsql-15/
-bash-4.2$ ls
backup  bin  lib  share
--- 2.3、恢复
-- 执行恢复(注意可执行文件路径及备份文件路径)
-bash-4.2$ ./bin/psql newdb < ./backup/mydb.sql
SET
SET
SET
SET
SET
 set_config
------------

(1 row)

SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
COPY 3
-bash-4.2$

--- 2.4、恢复完成后链接数据库
-bash-4.2$ psql
psql (15.4)
Type "help" for help.
--- 2.5、切换到newdb数据库
postgres=# \c newdb
You are now connected to database "newdb" as user "postgres".
--- 2.6、看数据库中表信息
newdb=# \d
            List of relations
 Schema |     Name     | Type  |  Owner
--------+--------------+-------+----------
 public | weather_info | table | postgres
(1 row)
--- 2.7、查询newdb中恢复的表weather_info的数据
newdb=# select * from weather_info;
  city   | temp_lo | temp_hi | prcp |    date
---------+---------+---------+------+------------
 US      |      46 |      50 | 0.25 | 1994-11-27
 UK      |      43 |      57 |    0 | 1994-11-29
 Hayward |      37 |      54 |      | 1994-11-29
(3 rows)

newdb=#


相关推荐
2301_7950997414 分钟前
让 CSS Grid 自适应容器尺寸的动态布局方案
jvm·数据库·python
2401_8734794027 分钟前
断网时如何实时判断IP归属?嵌入本地离线库,保障风控不中断
运维·服务器·网络
小陈phd29 分钟前
TensorRT 入门完全指南(一)——从核心定义到生态工具全解析
人工智能·笔记
守城小轩35 分钟前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
是上好佳佳佳呀36 分钟前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
FQNmxDG4S37 分钟前
Maven依赖管理:版本冲突解决与生命周期控制
java·数据库·maven
charlie1145141911 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
热爱运维的小七1 小时前
告别内存溢出:ActiveMQ 性能诊断与全流程优化
数据库·it运维·activemq·devops
handler011 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
zhouwy1131 小时前
Linux进程与线程编程详解
linux·c++