暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片
PostgreSQL 备份恢复技术手册
3694
21页
175次
2020-09-03
免费下载
美河学习在线 www.eimhe.com
PostgreSQL 备份恢复
前言
1、 设置 WAL 日志归档
为持久保存日志文件,需要开启日志归档模式。
在该模式下,可丢弃日志文件被删除前,被拷贝到指定目录。在 postgres.conf 配置文件中
设置三个参数:
wal_level=replica 或更高
archive_mode = on
archive_command = 'cp %p /mnt/server/archivedir/%f'
%p 表示 pg_wal 目录路径和日志文件名
%f 表示日志文件名。
日志被拷贝到/mnt/server/archivedir 目录
日志的归档过程如下:
checkpoint 操作中,当一个日志文件 X 可被覆盖时,在 pg_wal 的 archive_status 目中生成
X.ready 文件。
后台 archive 进程负责日志文件的拷贝。该进程监控 archive_status 目录,当发现有 X.ready
文件名后,使用 archive_command 拷贝文件,并将 X.ready 命名为 X.done
下一次 checkpoint 操作中,将 archive_status 目中 X.done 对应的 X 日志文件改名。
2、数据库的状态
DB_SHUTDOWNED(数据库正常关闭)
DB_SHUTDOWNED_IN_RECOVERY(数据库在恢复时关闭)
DB_SHUTDOWNING(数据库正常关闭过程中崩溃)
DB_IN_CRASH_RECOVERY(数据库在恢复过程中崩溃)
DB_IN_ARCHIVE_RECOVERY(数据库处于归档恢复)
DB_IN_PRODUCTION(数据库处于正常工作状态,等待接受事务处理)
crash recovery
PostgreSQL 正常运行中,直接 kill 主进程,重启 PostgreSQL,将进入 crash recovery 处理流
程,即 Oracle 的实例恢复,从 control 文件中 checkpoint 的 redo lsn 位置开始,使用 pg_wal
目录中的日志文件进行恢复。PostgreSQL 能进行上述处理,是因为将其状态和最近的
checkpoint 记录在在 control 文件中。
⚫ 初始化数据库后,control 文件 DB 状态初始值为 shutdown。
⚫ pg 启动时,当 control 文件 DB 状态为 shutdown,则将状态设置为 production,退出
恢复过程。
⚫ 在正常关闭服务时,执行 checkpoint,并将 control 文件 DB 态设置 shutdown。
⚫ pg 启动时,当 control 文件 DB 状态为 production,则说明发生了从 control 文件读
取最近 checkpoint,从 redo lsn 开始进行恢复,恢复完成后,将状 production 实验示
例
美河学习在线 www.eimhe.com
pg_dump
逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,而且如果表比较
大时,备份时间会很长,而且恢复时间会更长,故一般不采取逻辑备份方式进行数据库备份;
对于小表和跨平台跨版本的数据迁移,适合用逻辑备份。并且逻辑备份可以当作物理备份的
辅助备份手段。
逻辑备份恢复主要以下三种:
pg_dump
pg_dumpall
copy
pg_dump 备份
只能备份单个数据库,不会导出角色和表空间相关的信息
-F c 备份为二进制格式, 压缩存储. 并且可被 pg_restore 用于精细还原
-F p 备份为文本, 大库不推荐
pg_dump 恢复
$ psql dbname -U username < bakfile
或
pg_restore
– pg_restore [option] ... [filename]
– pg_restore -d dbname bakfile
二进制格式的备份只能使用 pg_restore 来还原, 可以指定还原的表, 编辑 TOC 文件,
定制还原的顺序, 表, 索引等。
文本格式的备份还原, 直接使用用户连接到对应的数据库执行备份文本即可 , 例如
$ psql dbname -f bak.sql
pg_dump 备份恢复示例:
1)创建数据库
$ createdb testdb
2)连入数据库 testdb
$ psql testdb
3)创建测试表,插入数据
testdb=# create table tt( espace tbls_t;
testdb=# insert into tt(a) 1);
testdb=# insert into t a) val s(2);
4)查看数据
testdb=# select * from tt;
5)备份
of 21
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜