postgres12数据库备份方式一

编译目的

本文章通过代码方式讲解Postgres数据库备份与还原。

常用备份方式

  • 流复制备份
  • 归档备份
  • SQL转储备份
  • 热备份

流复制备份

注意事项

  1. 需要准备2台或2台以上服务器。
  2. 应用程序写入数据是从数据库写入。
  3. 主数据写入数据会自动同步到数据库。

1.主服务器配置

#创建归档目录
mkdir -p /data/postgres_archivedir

#归档目录授权
chown postgres:postgres /data/postgres_archivedir

#给归档目前设置读写权限
chmod -R 700 /data/postgres_archivedir


#创建数据存储目录
mkdir -p /data/postgres_dbdata
#授权分组
chown postgres:postgres -R  /data/postgres_dbdata
chmod -R 700 /data/postgres_dbdata

#初始化数据库
su - postgres -c "/usr/local/postgres12/bin/initdb -D /data/postgres_dbdata"


#登录到postgres用户
su - postgres
#创建repl用户,密码设置为p@123456
createuser -p 15432 --replication -P -e repl
#配置postgres安全策略,wq保存
vi /data/postgres_dbdata/pg_hba.conf
#以下策略加到pg_hba.conf文件的97行下面,否则出现问题。
#需要将192.168.207.170和 192.168.207.171改成你的服务器IP
local   all             all                              md5
host    replication     repl      192.168.207.170/32     md5
host    replication     repl      192.168.207.171/32     md5

host    all             all             0.0.0.0/0         md5


#编辑postgres数据库配置文件
vi /data/postgres_dbdata/postgresql.conf
#添加以下内容

listen_addresses = '*'

port = 15432
wal_level = replica
synchronous_commit = on
full_page_writes = on
wal_log_hints = on
min_wal_size = 800MB
archive_mode = on
archive_command ='test ! -f /data/postgres_archivedir/%f && cp %p /data/postgres_archivedir/%f'
max_wal_senders = 10
#还原归档数据
#restore_command = 'cp /data/postgres_archivedir/%f %p'
#清除归档数据
#archive_cleanup_command='pg_archivecleanup /home/sure/mywork/archivedir %r'
#指明要恢复到时间,UTC时间差8小时,所以+08
#recovery_target_time='2022-01-11 14:35:12+08'

#退出postgres用户
exit
#重启postgres服务
systemctl restart postgresql

2.从服务器配置

注意实现

  1. 参考从服务器数据库及配置
#停止postgres服务
systemctl stop postgresql

#登录到postgres用户
su - postgres
#删除掉之前的数据库
rm -rf /data/postgres_dbdata/*
#将主服务器的数据库备份到从服务器,登录密码:p@123456 
#-p 连接端口
#-h ip地址
#-D 指定数据目录
#-U 指定连接用户
#-P 启用进度报告
#-v 启用详细模式
#-R 允许创建恢复配置:创建一个standby.signal文件,并将连接设置追加到数据目录下的postgresql.auto.conf
#-X 用于在备份中包含所需的预写日志文件(WAL 文件)。流的值表示在创建备份时流式传输 WAL
#-C 允许在开始备份之前创建由  -S 选项命名的复制槽
#-S 指定复制槽名称
#备份过程完成后,会创建一个 standby.signal,并将连接信息设置到postgresql.auto.conf文件中
pg_basebackup -p 15432 -h 192.168.207.170 -D /data/postgres_dbdata -U repl -P -v  -R -X stream -C -S pgstandby1


#查看连接是否追加
cat  /data/postgres_dbdata/postgresql.auto.conf

vi /data/postgres_dbdata/standby.signal
standby_mode = on

#编辑postgres配置文件
vi /data/postgres_dbdata/postgresql.conf
#添加以下内容
hot_standby = on
primary_conninfo = 'user=repl password=Vimicro host=192.168.207.170 port=15432 sslmode=disable sslcompression=0 gssencmode=disable krbsrvname=postgres target_session_attrs=any'
recovery_target_timeline = latest

#注释下面两行,同步数据过来包含这两项
#archive_mode = on
#archive_command ='test ! -f /data/postgres_archivedir/%f && cp %p /data/postgres_archivedir/%f'

exit

#开启服务
systemctl start postgresql

#查看从服务接收状态信息
su - postgres
psql -p 15432
\x
SELECT * FROM pg_stat_wal_receiver;
0 条评论
请不要发布违法违规有害信息,如发现请及时举报或反馈
还没有人评论呢,速度抢占沙发!
相关文章
  • 编写目的根据(postgres12数据库备份方式二)上一章节和配置,可以查看主从服务流复制信息,在这章讲解如何实现主备切换。主备切换#一、先停原主数据节点数据库 systemctl stop post...

  • 编写目的根据(postgres12数据库备份方式三)上一章节和配置,讲解如何实现主备切换,在这章讲解如何实现主服务归档还原。归档还原#1.在主服务器停止到postgres服务 systemctl st...

  • 编写目的根据(postgres12数据库备份方式四)上一章节配置,讲解如何实现归档还原,在这章讲解如如何备份SQL脚本。备份SQL脚本与还原#备份sql脚本,test是数据库名称,根据你的需求改变。 ...

  • 编写目的根据(postgres12数据库备份方式一)上一章节和配置,可以实现主从流复制,在这章讲解流复制中常用的一些命令集。常用的命令#启用同步 ALTER SYSTEM SET synchronou...

  • 背景公司某内部系统属于商业产品,数据库性能已出现明显问题,服务经常卡死,员工经常反馈数据无法查询或不能及时查询,该系统所使用的数据库为SqlServer,SqlServer数据库属于商业数据库,依赖厂...

  • 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也 较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并 且极易造成数...

  • 数据库编程 第一节 存储过程 一、存储过程的基本概念 存储过程是一组为了完成某项特定功能的 SQL 语句集,其实质上就是一段存储在数据库中的代码,它可以由声明式的 SQL 语句(如 CREATE、U...

  • Oracle数据库中没有SCOTT用户解决办法: 一.问题出现 1.新装好oracle-11G先连接管理员账户 2.然后切换到Scott账户 每当这时候对于我这种新手来说头就有点大,怎...

  • 编写API可能对于很多后端开发人员来说,并不是什么难事儿,但如果您主要从事前端功能,那么可能还是有一些门槛。 那么有没有工具可以帮助我们降低编写API的学习门槛和复杂度呢? 今天就来给大家推荐一个不错...

  • 基础 我是在ruoyi-vue已经安装了mybatis-plus的基础上进行的修改 关于SQLite SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。...

  • 深圳华锐分布式技术股份有限公司(简称“华锐技术”)是一家专注于为资本市场提供下一代分布式低时延基础技术及核心业务系统的国家高新技术企业,致力于提升中国金融基础设施自主能力,自主研发了下一代分布式中间件...

  • 最近新开发的一个功能使用到postgresql中的jsonb数据类型。架构师可能考虑到这种数据格式更加便于存储json格式的数据,因此考虑使用这种数据类型。自己以前未曾使用过这种数据类型,因此需要现学...

  • 1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看。 ----1.1  Check Job Fail List...

  • 背景 https://github.com/MobilityDB/MobilityDB https://www.citusdata.com/download/ https://www.postgres...

  • 背景 数据库是信息化的基石,支撑着整个业务系统,发挥着非常重要的作用,被喻为“IT的心脏”。因此,让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几...

  • 相信有过工作经验的同学都知道数据库连接是一个比较耗资源的操作。那么资源到底是耗费在哪里呢? 本文主要想探究一下连接数据库的细节,尤其是在Web应用中要使用数据库来连接池,以免每次发送一次请求就重新建立...

  • 等待分类与解决基本流程 步骤1.定位问题 系统等待往往能直观的反映出系统问题。通过一些常见的等待类型,同样可以找到系统瓶颈,结合性能计数器往往定位更准确。 如:系统中存在大量IO类等待,那么可能...

  • 本次使用 SqlConnection 来连接数据库,使用 DataGridView 来显示查询的结果。最终效果如下: 一、连接数据库 1.获取连接数据库所需的字符串,包括服务器名称,数据库名称,...

  • 作者:NineData 工程师,让每个人用好数据和云 本文整理2023年2月份最新数据库厂商、数据库领域的行业动态、以及各家云数据库厂商的产品动态。 阅读此文你将了解: 数据库厂商、数据库领域的...

  • 很多国内SQL学习者和开发者对Navicat、DBeaver等国外数据库管理工具已经很熟悉了。但是,有没有比他们更适合SQL开发者的数据库管理/SQL工具呢?这里,笔者结合自己的调研来聊一下。 笔者做...