
PostgreSQL之备份恢复
涉及PostgreSQL数据库备份恢复的逻辑/物理备份恢复、热备恢复等方方面面。
瀚高PG实验室
瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。
展开
-
pg_start_backup() 和 pg_stop_backup()
pg_start_backup() 和 pg_stop_backup()是postgreSQL提供的一种备份方式,由于无法并行备份,现在已经逐渐被pg_basebackup工具(postgresql9.1之后)所替代。今天主要说一下,这两个命令做了什么工作。pg_start_backup()1、强制发生一次checkpoint点。 将未写到磁盘上的脏数据全部刷到磁原创 2017-11-11 11:47:49 · 5240 阅读 · 5 评论 -
postgresql一个有趣的现象
在postgresql中线创建一张表, highgo=# create table abcd (int int); CREATE TABLE 然后再创建一张表,列的数据类型使用刚刚创建的表名。 highgo=# create table abcde (abcd abcd); CREATE TABLE 创建成功了。 创建的每一个表都会同时原创 2018-01-18 11:22:06 · 1515 阅读 · 1 评论 -
postgresql备份恢复
一、数据库备份1、备份数据库结构su - postgrespg_dump -Fc -s -f testdbschema.sql testdb2、备份数据库数据su - postgrespg_dump -Fc -a -f testdbdata.sql testdb3、备份数据库结构和数据su - postgrespg_dump -Fc -f testdbschem原创 2018-01-15 21:36:37 · 848 阅读 · 0 评论 -
导入测试数据的注意事项!
导入测试数据期间,至少应该考虑以下几点:想办法使得测试数据达到最快: 1.如果是双机方案,是否可以关闭归档日志。2.双机方案,是否可以先使用master导入数据,数据导入完成后,再把slave扩展进来。无论是tpc-c、tpc-h、亦或者是其余测试,如上方案可以最大化节约时间。原创 2018-01-30 10:35:08 · 551 阅读 · 0 评论 -
PostgreSQL表间复制语句
在PostgreSQL中的SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据。1.INSERT INTO FROM语句语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们...原创 2018-02-27 22:57:50 · 7560 阅读 · 0 评论 -
pg_dump 迁移表到其他模式
使用pg_dump方式将highgo数据库下的public.test表迁移到highgo数据库下的schema hg下highgo=# select * from pg_tables where tablename='test'; schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastr原创 2017-12-18 15:03:53 · 1656 阅读 · 1 评论 -
Windows下DATA目录的迁移
目录文档用途详细信息文档用途Windows系统下安装完数据库后,想要将数据目录迁移至新的目录详细信息1、先查询当前的data目录 highgo=# show data_directory; data_directory ------------------------------- C:/highgo/database/5.6.4/data 2、关闭数据库,关闭数据库服务开始->管理工具->...原创 2020-06-11 09:35:23 · 962 阅读 · 0 评论 -
Windows下DATA目录的迁移
1、 查看当前数据(或插入新数据)作为标记。highgo=# create table t1(id int,name text);CREATE TABL id | name----+---------------------------------- 1 | cf9920dd1f8a7be7e56a85f8a3e018f6 2 | cf9920dd1f8a原创 2017-12-14 17:44:42 · 1694 阅读 · 3 评论 -
pg_dump的-w参数
我们知道pg_dump -W是强制pg_dump执行的时候连接到一个数据库之前强制提示密码输入。-w则是从不提示密码,但是如果服务器请求密码验证身份认证,而又不能通过其他方式(例如.pgpass文件)来获得,则此命令会导致连接失败。这个选项也长长用在后台脚本中,因为后台脚本无法输入密码。[highgo@hgtest ~]$ pg_dump -h localhost -p 5866 -U hig...原创 2018-06-22 11:38:05 · 3453 阅读 · 0 评论 -
PostgreSQL 之 基于时间点的恢复(续)
基于时间点的恢复的三种方式中(即基于命名的还原点;基于目标时间还原点;基于XID事务还原点),日常恢复场景以基于目标时间还原点较为常见,本节主要通过实验验证基于时间还原点的恢复(postgresql V9.5.7)。过程主要有以下四个部分:基础备份备份完成后执行数据变更删除集群数据库利用基础备份+归档日志执行指定时间还原点的恢复注意:前提是需要将日志归档设置好原创 2018-02-05 11:45:14 · 2243 阅读 · 0 评论 -
PostgreSQL之pgdump(续)
使用unix管道压缩备份恢复pg_dump testdb| gzip > testdbbak.sql.gzgunzip -c testdbbak.sql.gz | psql testdb1备份后直接进行恢复,文件不落地pg_dump testdb| psql testdb1并行备份恢复pg_dump -Fd -j4 -f /dbbak/db.dir testdb原创 2018-02-05 12:59:28 · 340 阅读 · 0 评论 -
PostgreSQL 之 copy 命令基础
COPY命令概述copy 命令用于表与文件(和标准输出,标准输入)之间的相互拷贝;copy to由表至文件,copy from由文件至表;copy 命令始终是到数据库服务端找文件,以超级用户执行导入导出权限要求很高,适合数据库管理员操作;\copy 命令可在客户端执行导入客户端的数据文件,权限要求没那么高,适合开发人员,测试人员使用。COPY基本语法参考:Name原创 2018-01-26 00:15:48 · 18076 阅读 · 2 评论 -
PostgreSQL之 pg_basebackup
pg_basebackup 简介是从postgresql 9.1版本开始提供的一个方便基础备份的工具,它会把整个数据库实例的数据都拷贝出来,而不只是把实例中的部分(如某个数据库或表)单独备份;pg_basebackup工作原理创建检查点,打开FPW,创建备份标签(存储检查点位置,时间等信息);通过流复制协议与数据库建立连接,WAL Sender进程向pg_basebackup原创 2018-01-26 00:06:41 · 3404 阅读 · 0 评论 -
PostgreSQL之pgdump备份恢复
逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份,但逻辑适用于跨平台跨版本的数据迁移;逻辑备份恢复主要以下三种:pg_dumppg_dumpallcopy本小节主要讲解pg_dumppg_dump备份只能备份单个数据库,不会导出角色和表空间相关的信息-F c 备份为二进制格式,压缩存储.并且可被p原创 2018-01-26 00:14:24 · 28349 阅读 · 0 评论 -
PostgreSQL 之 基于时间点的恢复
基于时间点的恢复(PITR)简介数据库的PITR是一般数据库都必须满足的技术;其原理是依据之前的物理备份文件加上wal的预写日志模式备份做的恢复;该技术支持8.*及以上版本。recovery.conf文件还原点控制参数1)命名的还原点recovery_target_name = ‘’ # e.g.‘daily backup 2018-01-14‘指pg_creat原创 2018-01-26 00:09:55 · 7733 阅读 · 0 评论 -
postgresql物理备份之pg_basebackup
pg_basebackup是从postgresql 9.1版本开始提供的一个方便基础备份的工具,它会把整个数据库实例的数据都拷贝出来,而不只是把实例中的部分(如某个数据库或表)单独备份; pg_basebackup 备份过程: 1)开启归档 创建归档目录 mkdir -p /ssd/pg957/arch chown -R postgres:postgres /ssd/pg957/arch原创 2018-01-16 18:33:30 · 4539 阅读 · 0 评论 -
PostgreSQL数据库修改行外存储(TOAST)可能遇到的坑
瀚高PG实验室(Highgo PG Lab)- 徐云鹤PostgreSQL使用固定的页面大小,并且不允许元组跨越多个页面。为了存储大数据,PG引入了TOAST技术-The Oversized-Attribute Storage Technique。这种技术在底层将大的数据压缩或分解成多个物理行,并且这些处理对用户都是无感的。数据库会默认为各类数据类型应用不同的存储类型。对列的存储类型不满意时也可以进行修改。修改列的存储类型的语句是:ALTER TABLE name ALTER [ COLUMN原创 2021-08-10 16:49:26 · 2328 阅读 · 0 评论 -
记一次pg_rman备份postgresql数据库报段错误的处理过程
作者:瀚高PG实验室(Highgo PG Lab)- 徐云鹤数据库备机前期稳定执行备份操作,成功无报错。近期发现pg_rman无法完成备份,提示段错误并产生core文件。通过执行pg_rman debug模式定位到checkpoint后发生错误。postgres@备机:~> pg_rman backup -b incremental -Z -F --keep-data-days=2 --standby-host=x.x.x.x4 --standby-port=5432 -h x.x.x.x3 -原创 2021-08-06 15:49:05 · 2664 阅读 · 0 评论 -
如何将excel表格数据导入postgresql数据库
作者:瀚高PG实验室 (Highgo PG Lab)- 禹晓实际的工作中,我们经常会碰到统计数据的工作,有些维度的统计数据因为工作需要我们需要导出为excel作为报表附件供不同的部门审查。为了方便以后的对比工作,领导会让在数据库中创建一张表,用于专门记录这些数据。此时我们DBA需要将这些excel表格导入到数据库中,copy和\copy命令为我们提供了解决办法,本文主要通过copy命令的使用,介绍如何将excel表格导入至数据库中。关于copy及\copy命令的区别,请广大博友通过另一篇文章《如何将po原创 2021-03-03 11:04:42 · 7259 阅读 · 8 评论 -
如何将postgresql数据库表内数据导出为excel格式
本文主要用于介绍如何使用copy或者\copy命令将postgresql数据库内表的数据导出为excel格式,方便用户查看编辑。copy命令同\copy命令语法上相同,区别在于copy必须使用能够超级用户使用,copy … to file 中的文件都是数据库服务器所在的服务器上的文件,而\copy 一般用户即可执行且\copy 保存或者读取的文件是在客户端所在的服务器。本文主要以copy命令作为介绍重点,使用copy命令将表内数据倒为csv格式文件即为excel格式。1、copy命令语法COPY {原创 2021-03-02 17:38:32 · 4797 阅读 · 4 评论 -
如何决定PostgreSQL数据库备份策略?
作者:瀚高PG实验室(HighgoPGLab) 丹心明月对数据库进行备份,是数据库管理的基本要求,是从数据库灾难场景(例如服务器宕机、数据库崩溃或损坏)中恢复数据的基本保证。无论数据库是运行在Docker,VM或云上,数据库备份都至关重要。话虽如此,但无论对于个人还是组织,如何决定数据库的备份恢复策略,都是一个难题。这要求对于你所用的应用程序、业务逻辑以及成本有个较为深入的了解。那么,让我们开始学习,如何理清头绪,从哪里开始以及如何选择PostgreSQL数据库的备份策略。假设场景如下:...翻译 2020-12-28 13:46:53 · 1584 阅读 · 0 评论