# WAL日志:
# 我们对数据库的增删改查创建之前先是将sql语句记录在WAL日志中,
# 只有日志记录刷新到磁盘后,才能写入数据库文件。
# 遵从这个过程,不需要在每个事务提交时都刷新数据页到数据文件。
# 理论上我们通过WAL日志可以回到数据的任意时间点
# 文件存储位置:$PGDATA/pg_wal # 归档日志:
# 归档日志就是将WAL日志的完整拷贝
# 触发归档日志的条件:
# 手动强制切换 select pg_switch_wall();
# wal日志写满后
# 参数archive_tomeout
# 开启归档日志
alter system set wal_level = replica; # 设置日志级别
alter system set archive_mode = on; # 开启,off是关闭 修改完要重启数据库
# /hgdbbak/archhive为归档存放路劲
alter system archive_command = 'test ! -f /hgdbbak/archhive/%f && cp %p /hgdbbak/archive/%f' # 物理备份和逻辑备份的区别:
# 物理备份后你可以恢复任意时间点,逻辑备份只能恢复到你备份的那个时候 # 物理备份:
# pg_basebackup
# 这个工具会把整个数据库实例的数据拷贝出来,不能进行单张表备份。该工具使用replication协议链接到数据库实例上,所以主数据库中的pg_hba.conf必须允许replication连接。
# 将本地集群中的数据库备份到指定的路劲下。-U指定用户,-D指定备份到哪个目录
pg_basebackup -U highgo -D /hgdbbak
# 将本地集群中的数据库以压缩格式并行备份
pg_basebackup -U highgo -D /hgdbbak -Ft -z -j 5 -P # cp/rsync/tar
# 以数据库超级用户省份连接数据库,然后发出命令:
select pg_start_backup('lable');
# pg_start_backup开启备份后,你可以使用任何方便的文件系统工具,比如:tar、rsync、cp等,直接吧数据库目录赋值到备份位置,这些操作过程中既不需要关闭数据库,也不需要组赛数据库的任何操作。操作完成后直接执行:
select pg_stop_backup(); # pg_basebackup、cp/rsync/tar备份的恢复
# 1.对压缩文件进行解压缩
# 2.修改解压缩目录下的postgresql.auto.conf文件,追加如下内容:
restore_command = 'cp /hgdbbak/archive/%f %p'
# 3.如果需要恢复到某一个时间点的话就追加以下内容:
recovery_target_time = '2020-10-01 17:50:00'
# 4.启动数据库 # HG_RMAN
# 该备份工具具有备份集管理功能,只需要进行简单的配置,就可以实现对数据库备份的全面管理。
# 1.最小备份单元:基于物理块备份。
# 2.备份结果集管理:历史记录,保留策略,有效性校验等
# 3.备份模式:支持全量、增量及归档日志在线备份
# 4.恢复模式:支持Point-In-Time Recovery(PITR)也就是时间点恢复,支持完全恢复,支持不完全恢复,支持数据块恢复
# 5.独有的技术:块变化跟踪Block Change Tracking(BTC)技术,块介质修复Block Media Recovery(BMR)技术。这两个技术的实现,及时前台在做业务也不会有任何影响。
# 6.高性能,高存储利用率:备份压缩,快速完成增量备份。独有的增量备份机制,可以有效减少备份的存储空间占用。
# 冷备
# 冷备份就是停止数据库,然后将$PGDATA目录压缩成tar进行备份。这是最快最安全的方法
# 备份命令
tar -zcvf -f /dbbak/dbbak20211109.tar.gz $PGDATA
# 恢复备份
tar -zxvf -f /dbbak/dbbak20211109.tar.gz -C /pgdata # 逻辑备份:
# pg_dump和pg_dumpall的区别
# pg_dump支持指定丁所要被的的对象(表、schema、database),备份转储文件的时候并不会影响其他用户的访问。转储的文件可以是脚本(也就是包含SQL命令的村文本文件),也可以是自定的的文件格式,但自定义的文件格式必须用pg_restore奇异使用重建数据库。
# pg_dumpall仅支持导出全部库数据。备份的时候不影响其他用户的访问。并且只能以脚本的方式保存。
# 仅导出数据库对象结构
pg_dump -U odoo -s -f odoodb.sql highgo
# 备份某个数据库,备份结果以自定义压缩格式输出
pg_dump -h localhost -p 5432 -U odoo -F c -b -v -f odoodb.back odoodb
# 备份某个数据库中一个或者多个schema,压缩并导出
pg_dump -h localhost -p 5432 -U odoo -F c -b -v -n schema1 -n schema2 -j 5 -f odoodb_sch1_sch2.backup odoodb
# pg_dumpall 仅导出定义,不到处数据
pg_dumpall -h localhost -U odoo --PORT 5432 -f odoodb.sql -s
# pg_dumpall 导出所有数据库
pg_dumpall -U odoo > /dbbak/odoo_all.dmp # 通过pg_dumpall或者pg_dump命令指定文本格式导出的,在检查文件无误后可以直接使用psql进行导入恢复
psql -d odoodb -U odoo < /dbbak/odoodb_all.dmp
# 其他自定义格式,需要借助pg_restore工具进行恢复
pg_restore -d odoodb -U odoo /dbbak/odoodb_all.dmp # copy && \copy
# 该命令的主要作用是在数据库表和文件之间复制数据
# copy 与 \copy的区别
# 使用copy是从服务端寻找文件,使用\copy是从客户端寻找文件
# copy一般使用超级用户执行;copy .. to file, copy file to ..中的文件都是数据库服务器所在的服务器上的文件。具有pg_read_server_files权限的用户也可执行
# \copy一般用户即可执行;\copy保存或者读取的文件是在客户端所在的服务器中。
# 比如使用192.168.100.53 连上 192.168.100.52的数据库
# 当使用copy tb1 to '/home/pc1/test.sql',该test.sql文件是存放在52上;当使用copy tb1 to '/home/pc1/test.sql',该文件是存放在53上。
# 将表test_tab打印至屏幕,并使用'|'作为分隔符(STDOUT 无需pg_read_server_files权限)
COPY test_tab TO STDOUT (DELIMITER '|');
# 将表test_tab拷贝至文件中
COPY test_tab TO '/backup/test_tab_data';
# 按查询条件导出到文件
COPY (select * from test_db where name like 'A%') TO '/backup/test_tab_data' (DELIMITER '|');
# 将表数据拷贝至压缩文件中
COPY test_tab TO PROGRAM 'gzip > /backup/test_tab_data.gz'
COPY test_tab TO PROGRAM 'zip > /backup/test_tab_data.gz'
# 把数据从文件中复制到表中
COPY test_tab FROM '/backup/test_tab_data';
COPY test_tab(name) FROM '/backup/test_tab_data';
# \copy 将表数据拷贝至文件中
\copy sometable to sonmefile.text
# \copy 将文件中的数据插入表中
\copy sometable from somefile.txt

PostgreSQL 备份的更多相关文章

  1. PostgreSQL备份工具-pg_backrest(转)

    转自:http://blog.chinaunix.net/uid-7270462-id-5777877.html 官网:https://pgbackrest.org 一.配置集中备份服务器 1.1 备 ...

  2. PostgreSQL备份

    备份与恢复 postgresql自带了两个备份工具: pg_dump:可备份一个指定的database pg_dumpall:可一次性备份所有database数据以及系统全局数据  使用pg_dump ...

  3. PostgreSQL 备份和恢复

    备份和恢复有三种不同的基本方法来备份PostgreSQL数据SQL转储文件系统级备份File system level backup连续归档 1. SQL转储 pg_dump dbname > ...

  4. postgresql备份和恢复

    备份: pg_dump -d m3vg -h localhost -p 5432 -U delta -W -f 1024.dump -F tar 恢复: pg_restore -h localhost ...

  5. postgreSQL 备份+还原多张表

    -U表示用户 -h表示主机 -p表示端口号 -t表示表名 -f表示备份后的sql文件的名字 -d表示要恢复数据库名 一.打开cmd 进入postgresql安装路径下的bin文件夹,以我的为例: cd ...

  6. postgresql 备份数据库结构

    --只备份结构pg_dump -U postgres -d grgzpt -f D:\dump.sql -s --备份结构和数据pg_dump -U postgres -d grgzpt -f D:\ ...

  7. postgreSQL备份数据

    1.pg_dump 备份单一数据库 pg_dump仅导出数据库结构: pg_dump -U TestRole1 -s -f TestDb1.sql TestDb1 2.全部备份采用pg_dumpall ...

  8. PostgreSQL备份和恢复数据表

    备份数据表: pg_dump -U user_name db_name -t table_name -f /tmp/backup_file.suffix 恢复数据表: 方法1: 登录数据库:\i /t ...

  9. postgresql备份数据库

    备份数据库:pg_dump -U username -h localhost -f /me.sql 数据库名; 恢复数据库:psql -U username -h localhost -f /me.s ...

随机推荐

  1. 为什么 Redis 要有哨兵机制?

    作者:小林coding 计算机八股文刷题网站:https://xiaolincoding.com 大家好,我是小林. 这次聊聊,Redis 的哨兵机制. 提纲 为什么要有哨兵机制? 在 Redis 的 ...

  2. 118_Power Pivo周维度度同比、环比相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 在群里看到有人在交流周维度同环比,同时又好多天都没有更新文章了,最近没有什么好的素材,就硬生生的写一个吧. 先来 ...

  3. 记 iTextSharp 剪裁 PDF 指定区域的方法

    原文 引用 itextsharp 5.5.13.2 itextsharp.xtra 5.5.13.2 方法 /// <summary> /// 截取pdf文件,例如把A4截出指定的A6区域 ...

  4. ES6 - promise(2)

    从上一篇中我们知道promise的概念,上一篇也提到了 promise的过程: 启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指 ...

  5. CabloyJS究竟是一款什么样的框架

    CabloyJS是什么样的框架 CabloyJS 是一款自带工作流引擎的 Node.js 全栈框架,一款面向开发者的低代码开发平台,更是一款兼具低代码的开箱即用和专业代码的灵活定制的 PAAS 平台 ...

  6. 2021.05.29【NOIP提高B组】模拟 总结

    T1 题意:给你一个图,可以不花代价经过 \(K\) 条边,问从起点到终点的最短路 考试的想法:设 \(dis_{i,j}\) 表示从起点免费了 \(j\) 条边到 \(i\) 的最短路 然后直接跑 ...

  7. 在sqlbolt上学习SQL

    在sqlbolt上学习SQL 该网站能够学习sql基础,并且能在网页中直接输入sql语句进行查询. 学习网站原网址https://sqlbolt.com/(!部分指令该网站不支持,且存在一些bug!) ...

  8. 五种方式实现 Java 单例模式

    前言 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建自 ...

  9. 3.shell脚本循环试题

    shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...

  10. NC207040 丢手绢

    NC207040 丢手绢 题目 题目描述 "丢丢丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她." 牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的 ...