【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
密钥管理服务KMS,1000个密钥,100个凭据,1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。


前言:


以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。

以下,enjoy:

 1995789-20220419215410550-845658430.png


 

 

# PostgreSQL


## PostgreSQL的发展历程


### 始于1986年的Postgres项目


### 1994年,新增了SQL语言解释器,Postgres95诞生


### 1996年,更名 PostgreSQL,版本号从6.0开始


## PostgreSQL的安装


### yum安装


- https://www.postgresql.org/download/linux/redhat/


   - yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

   -  yum install -y postgresql14-server

   -  /usr/pgsql-14/bin/postgresql-14-setup initdb

   - systemctl enable postgresql-14

   - systemctl start postgresql-14


- 其他操作


   - 关闭selinux


       - setenforce 0

       - sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


   - 关闭防火墙


       - systemctl status firewalld.service

       - systemctl stop firewalld.service

       - systemctl disable firewalld.service


   - 修改环境变量  /etc/profile


       - export PATH=/usr/pgsql-14/bin/:$PATH

       - source /etc/profile


### rpm安装


- https://yum.postgresql.org/rpmchart/


   - postgresql14

   - postgresql14-contrib

   - postgresql14-libs

   - postgresql14-server


- rpm -ivh postgresql14*


### 源码的安装


- wget https://ftp.postgresql.org/pub/source/v13.3/postgresql-13.3.tar.gz

tar xf postgresql-13.3.tar.gz

- 重要的依赖:readline,flex,bison


   - yum install -y bison flex readline-devel zlib-deve1 zlib zlib-devel gcc openssl-devel


- ./configure && make && make install | install-world

- 编译


   - cd postgresql-xx/

   - ./configure --prefix=/XXX/postgresql --with-openssl

   - gmake world && gmake install-world


- 授权


   - chown -R postgres. /XXX/postgresql


- 环境变量  /etc/profile


   - export PATH=/XXX/postgresql/bin:$PATH

export PGDATA=/XXX/postgresql/data

   - source /etc/profile


- 初始化


   - su - postgres

initdb -D $PGDATA


- 启动


   - pg_ctl -D $PGDATA start


- 使用系统管理


   -  修改: /usr/lib/systemd/system/postgresql-xx.service


       - [Unit]

Description=PostgreSQL database server

After=network.target

[Service]

Type=forking

User=postgres

Group=postgres

Environment=PGPORT=5432

Environment=PGDATA=/XXX/postgresql/data/

OOMScoreAdjust=-1000

ExecStart=/XXX/postgresql/bin/pg_ctl start -D PGDATAso"pPGDATA−s−o"−p{PGPORT}" -w -t 300

ExecStop=/XXX/postgresql/bin/pg_ctl stop -D ${PGDATA} -s -m fast

ExecReload=/XXX/postgresql/bin/pg_ctl reload -D ${PGDATA} -s

TimeoutSec=300

[Install]

WantedBy=multi-user.target


   - 重新加载:systemctl daemon-reload

   - 使用systemctl启动


       - systemctl start postgresql-xx.service

systemctl enable postgresql-xx.service


### 二进制的安装


- EDB


## PostgreSQL的安装(其他)


### 初始化命令


- 运行initdb创建数据库实例:


   - $ su - postgres

   - $ initdb -D


       - 指定数据目录。没有指定,将使用环境变量PGDATA


   - $ initdb -U


       - 指定数据库超级用户名字


   - -E


       - 指定数据库字符编码


   - -n


       - 错误后不清理文件


   - -W


       - 初始化时给数据库设置密码


   - -x


       - 预写日志目录位置


   - --wal-segsize=XXX


       - 指定 WAL 段大小(单位 M),默认是 16M,最大 1G


### 启动和关闭


- system管理方式


   - systemctl start postgresql-xx

systemctl enable postgresql-xx

systemctl status postgresql-xx

systemctl stop postgresql-xx


- postgresql自带的命令


   - pg_ctl start

pg_ctl stop

pg_ctl status

   - pg_ctl -D $PGDATA stop -m smart

pg_ctl -D $PGDATA stop -m fast

pg_ctl -D $PGDATA stop -m immediate


       - smart 等待客户端断开连接(执行之后会特别慢)

       - fast 回滚未完成的事务,断开客户端连接(推荐用法)

       - immediate 强行终止进程,数据库没有干净的关闭


- 启动\停止有关日志


   - vim /var/lib/pgsql/xx/data/log/postgresql-Mon.log


### 注意事项


- 关闭防火墙


   - systemctl status firewalld.service

   - systemctl stop firewalld.service

   - systemctl disable firewalld.service


- ntp时间同步


   - 服务端配置


       - yum -y install ntp

       - 修改配置文件 /etc/ntp.conf


           - 给本机权限:

restrict 127.0.0.1

restrict ::1

           - 例如授权10.0.0.0网段上所有的机器允许从ntp服务器上查询和同步时间:

restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap

           - 增加时间服务器列表:

0.asia.pool.ntp.org

0.cn.pool.ntp.org

time.nist.gov

server 0.asia.pool.ntp.org iburst

server 1.asia.pool.ntp.org iburst

server 2.asia.pool.ntp.org iburst

server 3.asia.pool.ntp.org iburst

           - 当外部时间不可用时,使用本地时间:

server 127.127.1.0 iburst

fudge 127.127.1.0 stratum 10


       - 设置开机自启动


           - systemctl enable ntpd

systemctl start ntpd

systemctl enable ntpdate

systemctl start ntpdate


       - 查看ntp情况


           - ntpq -p


               - remote: NTP主机的IP或主机名称;

最左边是 + 表示目前正在起作用的上层NTP;如果是 * 表示这个也连接上了,不过是作为次要联机的NTP主机

               - refid: 参考上一层NTP主机的地址

               - st: stratum阶层

               - t: 连接类型


                   - u:单播(unicast)

                   - l:本地(local)

                   - m: 多播(multicast)

                   - b: 广播(broadcast)


               - when: 这个时间之前刚刚做过时间同步

               - poll: 在几秒之后进行下次更新

               - reach: 已经向上层NTP服务器要求更新的次数

               - delay: 网络传输过程中的延迟时间

               - offset: 时间补偿的结果

               - jitter: Linux系统时间和Bios硬件时间的差异时间


       - 与硬件时间进行同步


           - hwclock -w


       - 测试


           - ntpstat


   - 客户端配置


       - yum -y install ntp ntpdate

       - 方法一


           - 重启服务以使配置生效,之后大概要等10分钟左右,才会同步成功


               - echo "server ip" >/etc/ntp.conf

systemctl enable ntpd

systemctl restart ntpd

hwclock -w


       - 方法二


           - systemctl enable ntpdate

/usr/sbin/ntpdate -u ip

hwclock -w

crontab -e

10 23 * * * (/usr/sbin/ntpdate -u ip && /sbin/hwclock -w)&>/var/log/ntpdate.log


- 如果配置主从,尽量保持uid和gid一致


   - 检查uid和gid


       - id postgres


   - 通过usermod,groupmod修改OS用户uid和gid


       - groupmod -g 1000 postgres

usermod -u 1000 -g 1000 postgres


- 关闭selinux


   - setenforce 0

   - sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


- psql参数的使用


   - 参数说明


       - -U


           - 以哪个用户登录


       - -W


           - 强制输入密码


       - -h


           - 主机名/IP地址


       - -p


           - 端口号


       - -d


           - 登录哪个数据库


   - 查看版本信息


       - psql –version

select version();


## PostgreSQL的配置


### 参数的修改


- 文件位置:$ PGDATA/postgresql.conf


   - include_if_exists = 'xxx.conf'


       - 开启参数,并存在可使用的 $PGDATA/xxx.conf 文件才会进行加载


   - include_dir = 'conf.d'


       - 加载目录下的参数文件,$PGDATA/.conf.d/xxx.conf


   - include = 'xxx.conf'


       - 无论参数文件是否存在都会加载  $PGDATA/xxx.conf


   - 数据库启动时,会读取该文件,可手动修改


- postgresql.auto.conf


   - alter system修改后的参数配置,会覆盖postgresql.conf的值


- recovery.conf


   - pg12已经不存在这个文件,已经将此文件的参数合并到了postgresql.conf


- pg_hba.conf  客户端认证配置文件(PG防火墙)


   - 第一列 TYPE(连接方式)


       - local


           - 使用Unix域套接字的连接,如果没有TYPE为local的条目则不允许通过Unix域套接字连接


       - host


           - 匹配使用TCP/IP建立的连接,同时匹配SSL和非SSL连接


       - hostssl


           - 匹配必须是使用SSL的TCP/IP进行连接。


               - 配置hostssl的3个条件


                   -  户端和服务端都安装openssl

                   -  编译时要指定 --with-openssl 打开ssl支持

                   - 在postgresql.conf中配置ssl = on


       - hostnossl


           - 只匹配使用非SSL的TCP/IP连接


   - 第二列 DATABASE(目标数据库)


       - 标识该行设置对哪个数据库生效


   - 第三列 USER (目标用户)


       - 标识该行设置对哪个数据库用户生效


   - 第四列 ADDRESS (访问来源)


       - 标识该行设置对哪个IP地址或IP地址段生效


   - 第五列 METHOD (认证方式)


       - reject


           - 无条件拒绝连接


       - md5 或 password


           - 双重md5加密和明文加密


       - scram-sha-256


           - postgresql10中新增最安全的加密方式

           - 查看没有用SCRAM加密口令的用户


               - create user foo password 'foopassword';

               - select usename,passwd from pg_shadow where passwd not like 'SCRAM%' or passwd is null;

               - select usename,passwd from pg_shadow ;


       - trust


           - 无条件的允许连接


       - cert


           - 使用SSL客户端证书认证


       - peer


           - 本地操作系统的当前用户名和数据库的用户名一致时,可以直接使用此用户名登录而不需要密码


       - ident


           - 用户映射文件


   - 查看当前的加密方法


       - postgres=# show password_encryption;


   - 修改加密方法


       - postgres=# alter system set password_encryption = 'scram-sha-256';

postgres=# show password_encryption;

postgres=# select pg_reload_conf();


   - 修改密码


       - postgres=# alter user foo password ''Xzzp2008 ';


   - 远程登录


       - psql -h 192.168.1.221 -p 5433 -d postgres -U foo -W


   - 加强口令复杂度管理插件


       - passwordcheck


           - http://www.postgresql.org/docs/current/static/passwordcheck.html


- pg_ident.conf 客户端认证映射文件


### 数据库相关命令


- 查看参数


   - 查询pg_settings系统表


       - SELECT name,setting FROM pg_settings where name ~ ‘xxx’;


   - select name,setting,unit,short_desc from pg_settings where name like 'work_mem%';

   - SELECT current_setting(name);

   - SELECT current_setting('work_mem');

   - 通过show 命令查看


       - show all


- 参数生效几种方式


   - SELECT pg_reload_conf();

   - pg_ctl -D $PGDATA reload;

   - /etc/init.d/postgresql-11.x reload; (el6)

   - systemctl reload service.postgresql-11.x (el7)


- 子主题 3


### 数据库管理


- 客户端工具


   - pgAdmin


       - https://www.pgadmin.org

       - yum / apt install pgadmin


   - psql


       - 连接数据库


           - psql -h localhost -p 5432 database_name


       - 获得psql的帮助


           - \?


       - 获得语法的帮助


           - \h STATEMENT


       - 在shell中执行命令


           - psql -c "STATEMENT"


       - 通过psql执行sql文件


           - psql < f.sql


       - 其他


           - \l 查看有哪些数据库

           - \c 用于切换数据库

           - \d 显示每个匹配关系(表,视图,索引,序列)的信息

           - \d 后面跟一个表名,表示显示表结构定义

           - \d 后跟一个索引名,显示索引的信息

           - \d 后面跟一个视图名,显示视图信息

           - \timing on 显示SQL执行的时间

           - \timing off 关闭计时功能

           - \dn 列出所有的schema

           - \db 显示所有的表空间

           - \du\dg 列出所有的角色或者用户

           - \dp 显示权限分配情况

           - \x 行列互换显示

           - \set AUTOCOMMIT off 将自动提交功能关闭


## 体系结构


### 内存结构


- shared_buffers


   - 共享内存


- work_mem


   - 当使用order by或distinct操作对元组仅从排序时会使用这部分内存


- wal_buffer


   - wal缓存


### 进程结构


- 查看进程


   - --ps –ef |grep post


- background writer


   - 进程将shared buffer pool中的脏数据写到磁盘,检查点总能触发这个进程


- checkpointer


   - 检查点会触发产生这个进程


- autovacuum launcher


   - autovacuum的守护进程,为vacuum process周期性的调用autovacuum work processes

   - autovacuum的作用


       - 删除或重用无效元组的磁盘空间

       - 更新数据统计信息,保证执行计划更优

       - 更新visibility map,加速index-only scans

       - 避免XID回卷造成的数据丢失


- WAL writer


   - 周期性的从wal buffer刷新数据到磁盘


- statistics collector


   - 收集统计信息进程,比如pg_stat_activity 和pg_stat_database的数据。(表和索引进行了多少次插入,更新,删除操作,磁盘块读写次数及行的读写次数)


- logging collector (logger)


   - 将错误信息写入到日志


- archiver


   - 将日志归档的进程


- postgremaster


   - 监听


### 数据库集群概念


- 一个数据库集簇(database cluster)=一个数据库实例(简称“实例”)

- 每个数据库实例由数据库目录组成,目录中包含了所有的数据文件和配置文件

- 不同的实例可以通过两种方式引用


   - 数据目录的位置

   - 端口号


- 一个服务器可以管理多个数据库实例


### 物理结构


- 数据目录


   - base


       - 表和索引文件存放目录


   - global


       - 影响全局的系统表存放目录


   - pg_commit_ts


       - 事务提交时间戳数据存放目录


   - pg_stat


       - 统计子系统信息永久文件


   - pg_wal


       - 事务日志(预写日志)


- 相关文件


   - PG_VERSION


       - 版本号文件


   - pg_hba.conf


       - 客户端认证控制文件


   - postgresql.conf


       - 参数文件


   - postgresql.auto.conf


       - 参数文件,只保存ALTER SYSTEM命令修改的参数


   - postmaster.opts


       - 记录服务器最后一次启动时使用的命令行参数


   - pg_ident.conf


       - 控制postgresql用户名映射文件


   - postmaster.pid


       - 记录数据库进程编号、PGDATA、端口等


## 数据库故障排查


### 查看操作系统错误日志


- /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一


### 查看数据库错误日志


- 查看文件$PGDATA/log

默认情况下,一天产生一个日志


## SQL入门


### DDL


- 数据定义语言,用来定义库和表


### DML


- 数据操作语言


### DCL


- 数据控制语言


### DQL


- 数据查询语言


### 数据类型


- 字符类型

- 数字类型

- 日期/时间类型

- 范围类型

- 布尔类型

- 相关约束


### 其他


## 数据库备份相关


### 物理备份


- 热备


   - 全量 pg_basebackup


       -  备份命令:

pg_basebackup -h ip -D /XXX/backup -P -p 5432 -U postgres

       - 恢复命令:

cd /xxx/backup/

tar xf base.tar.gz -C ../data


   - 结合时间点进行恢复


       - 创建归档目录


           - mkdir -p /XXX/archive

           - chown -R postgres. /XXX/


       - 开启归档,并重启数据库


           - wal_level = 'replica'


               - wal_level参数说明


                   - minimal


                       - 记录wal最少,记录数据库异常关闭需要恢复的wal外,其它操作都不记录


                   - replica


                       - 在minimal的基础上还支持wal归档、复制和备库中启用只读查询等操作所需的wal信息


                   - logical


                       - 记录wal日志信息最多,包含了支持逻辑解析(10版本的新特性,逻辑复制使用这种模式)所需的wal,此参数包含了minimal和replica所有的记录


           - archive_mode = 'on'

           - archive_command = 'cp %p /XXX/archive/%f'

           - 重启数据库


               - pg_ctl restart


       - 执行全量备份


           - pg_basebackup -D /xxx/backup -P -p 5432 -U postgres

           - 如果此时的数据有变化,也可以执行增量备份:

pg_receivewal -D /xxx/backup/ -p 5432


       - 启动备份实例,进行数据恢复


           - vim postgresql.conf

recovery_target_time = '2022-04-17 16:00:00.00000+08'

restore_command='cp /xxx/archive/%f %p'

recovery_target_action = 'promote'


       - 创建备库标签


           - touch recovery.signal


       - 启动数据库


           - pg_ctl -D /xxx/backup start


       - 关闭读模式


           - select pg_wal_replay_resume();


   - 结合还原点进行恢复


       - 创建归档目录


           - mkdir -p /xxx/archive

chown -R postgres. /xxx/


       - 开启归档,并重启数据库


           - wal_level = 'replica'

archive_mode = 'on'

archive_command = 'cp %p /xxx/archive/%f'


       - 重启数据库


           - pg_ctl restarat


       - 执行全量备份


           - pg_basebackup -h ip -D /xxx/backup -P -p 5432 -U postgres


       - 如果有变化的数据,可以执行增量备份


           - pg_receivewal -D /xxx/backup/ -p 5432


       - 启动备份实例,进行数据恢复


           - vim postgresql.conf

recovery_target_name = 'huanyuan'

restore_command='cp /xxx/archive/%f %p'

recovery_target_action = 'promote'

           - touch recovery.signal


       - 启动数据库


           - pg_ctl -D /xxx/backup start


       - 关闭读模式


           - select pg_wal_replay_resume();


   - 结合事务进行恢复


       - 创建归档目录


           - mkdir -p /xxx/archive

chown -R postgres. /xxx/


       - 开启归档,并重启数据库


           - wal_level = 'replica'

archive_mode = 'on'

archive_command = 'cp %p /xxx/archive/%f'


       - 重启数据库


           - pg_ctl restarat


       - 执行全量备份


           - pg_basebackup -h ip -D /xxx/backup -P -p 5432 -U postgres


       - 如果有变化的数据,可以执行增量备份


           - pg_receivewal -D /xxx/backup/ -p 5432


       - 启动备份实例,进行数据恢复


           - vim postgresql.conf

recovery_target_xid = '487'

restore_command='cp /xxx/archive/%f %p'

recovery_target_action = 'promote'


touch recovery.signal


       - 启动数据库


           - pg_ctl -D /xxx/backup start


       - 关闭读模式


           - select pg_wal_replay_resume();


   - 结合LSN号码进行恢复


       - 创建归档目录


           - mkdir -p /xxx/archive

chown -R postgres. /xxx/


       - 开启归档,并重启数据库


           - wal_level = 'replica'

archive_mode = 'on'

archive_command = 'cp %p /xxx/archive/%f'


       - 重启数据库


           - pg_ctl restarat


       - 执行全量备份


           - pg_basebackup -h ip -D /xxx/backup -P -p 5432 -U postgres


       - 如果有变化的数据,可以执行增量备份


           - pg_receivewal -D /xxx/backup/ -p 5432


       - 启动备份实例,进行数据恢复


           - vim postgresql.conf

recovery_target_lsn = '0/4011BF8'

restore_command='cp /xxx/archive/%f %p'

recovery_target_action = 'promote'


touch recovery.signal


       - 启动数据库


           - pg_ctl -D /xxx/backup start


       - 关闭读模式


           - select pg_wal_replay_resume();


- 冷备


### 逻辑备份


- 全库备份

- pg_dump


   - 库级别备份


       - 备份


           - pg_dump -U postgres test >test.sql


       - 恢复


           - psql

create database test;

psql -U postgres test < test.sql


       - 指定格式进行备份


           - 备份


               - pg_dump -Fc -U postgres test >test.dmp


           - 恢复


               - psql

create database test;

pg_restore -d test test.dmp


   - 表级别备份


       - 备份库下某个模式所有的表


           - 备份


               - pg_dump -U postgres -t 'schema1.t*' test >test.sql


           - 恢复


               - psql -U postgres test < test.sql


       - 备份单个表


           - 备份


               - pg_dump -t 表名 数据库名 >dump.sql


           - 恢复


               - create database 数据库名;

psql -U postgres 数据库名< dump.sql


   - schema级别备份


- pg_dumpall


   - 全库级别备份


       - 备份


           - pg_dumpall -U postgres > dumpall.sql


       - 恢复


           - psql -U postgres < dumpall.sql


- pg_dump VS pg_dumpall


   - pg_dumpall 是一个用于写出("转储")一个数据库集群里的所有PostgreSQL 数据库到一个脚本文件的工具。

   - pg_dumpall 调用pg_dump

   - pg_dumpall 还转储出所有数据库公用的全局对象。这些信息目前包括数据库用户和组,以及适用于整个数据库的访问权限

   - pg_dumpall 无法转储"大对象",因为pg_dump无法把这样的对象转储到纯文本文件中。如果你的数据库里有大对象,那么你应该使用pg_dump 的非文本输出格式之一转储它们。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
11天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
42 5
|
17天前
|
数据库
|
3月前
|
SQL 存储 关系型数据库
新手如何入门学习PostgreSQL?
新手如何入门学习PostgreSQL?
|
3月前
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
3月前
|
SQL 关系型数据库 Linux
在CentOS 6上安装和使用PostgreSQL的方法
在CentOS 6上安装和使用PostgreSQL的方法
42 2
|
3月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
63 1
|
3月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
47 1
|
3月前
|
存储 Ubuntu 关系型数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
28 1
|
2月前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
69 0
|
3月前
|
关系型数据库 数据库 PostgreSQL
Linux 环境手动备份postgresql数据库
【8月更文挑战第12天】在Docker环境中使用命令行工具对PostgreSQL数据库进行备份和恢复。首先,通过dockerexec进入容器,使用pg_dump进行数据库模式的备份,然后使用dockercp将备份文件导出。接着,若需导入数据到另一数据库,先将备份文件复制到目标容器,再利用psql命令进行数据恢复。整个过程需确保目标数据库无同名模式,以防止导入失败
42 3