基于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=#


相关推荐
茯苓gao9 分钟前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾22 分钟前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
阿里嘎多哈基米22 分钟前
SQL 层面行转列
数据库·sql·状态模式·mapper·行转列
抠脚学代码31 分钟前
Ubuntu Qt x64平台搭建 arm64 编译套件
数据库·qt·ubuntu
jakeswang1 小时前
全解MySQL之死锁问题分析、事务隔离与锁机制的底层原理剖析
数据库·mysql
DKPT1 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
Miracle&1 小时前
2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
linux·网络·tcp/ip
Heliotrope_Sun1 小时前
Redis
数据库·redis·缓存
ST.J1 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
一成码农1 小时前
MySQL问题7
数据库·mysql