PostgreSQL的 PITR实战---运用 recovery_target_time
磨砺技术珠矶,践行数据之道,追求卓越价值
回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页
看了很多的例子,没有发现具体讲 recovery_target_time的例子,于是自己作一个吧
在开始之前,先把postgresql.conf的配置设置好:
wal_level = archive # minimal, archive, or hot_standby
# (change requires restart) # - Archiving - archive_mode = on # allows archiving to be done
# (change requires restart)
archive_command = 'cp %p /usr/local/pgsql/arch/%f' # command to use to archive a logfile segment
#archive_timeout = # force a logfile segment switch after this
# number of seconds; disables
然后启动PostgreSQL:
[postgres@pg201 pgsql]$ ./bin/pg_ctl -D ./data start
在开始备份前,先作一条数据:此时,时间大约是13:40之前:
postgres=# create table test(id integer);
CREATE TABLE
postgres=# insert into test values(100);
INSERT 0 1
然后开始进行基础备份:
postgres=# select pg_start_backup('gao');
pg_start_backup
-----------------
0/2000020
(1 row)
tar命令打包:
tar -cvf ./base.tar ./data
结束基础备份:
postgres=# select pg_stop_backup();
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
pg_stop_backup
----------------
0/20000A0
(1 row)
此时大约是13:40左右,再插入一条数据:
postgres=# insert into test values(200);
INSERT 0 1
等待,到13:50左右,再插入一条数据:
postgres=# insert into test values(300);
INSERT 0 1
为了方便操作,进行一次强制的日志切换:
postgres=# select pg_switch_xlog();
pg_switch_xlog
----------------
0/30002A0
(1 row) postgres=#
现在,模拟崩溃,强制杀掉进程:
[root@pg201 ~]# kill -s SIGQUIT Postmaster进程号
然后,原有data目录改名保存,开始恢复过程:
[postgres@pg201 pgsql]$ mv ./data ./data.bak
[postgres@pg201 pgsql]$ tar -xvf base.tar ./data
把崩溃时后的online wal log 也准备好:
[postgres@pg201 pgsql]$ rm -rf ./data/pg_xlog
[postgres@pg201 pgsql]$ cp -r ./data.bak/pg_xlog/ ./data
[postgres@pg201 pgsql]$ cd ./data/pg_xlog
[postgres@pg201 pg_xlog]$ [postgres@pg201 archive_status]$ pwd
/usr/local/pgsql/data/pg_xlog/archive_status
[postgres@pg201 archive_status]$ rm -f *
[postgres@pg201 archive_status]$
作一个 recovery.conf文件,指明要恢复到13:45,也就是200数据已经出现,300数据尚未插入的时候
[postgres@pg201 data]$ pwd
/usr/local/pgsql/data [postgres@pg201 data]$ cat recovery.conf
restore_command = 'cp /usr/local/pgsql/arch/%f %p' recovery_target_time = '2013-08-07 13:45:00+08' [postgres@pg201 data]$
再次启动PostgreSQL,发生了恢复:
[postgres@pg201 pgsql]$ ./bin/pg_ctl -D ./data start
pg_ctl: another server might be running; trying to start server anyway
server starting
[postgres@pg201 pgsql]$ LOG: database system was interrupted; last known up at -- :: CST
LOG: starting point-in-time recovery to -- ::+
LOG: restored log file "" from archive
LOG: redo starts at /
LOG: consistent recovery state reached at /
LOG: restored log file "" from archive
LOG: recovery stopping before commit of transaction , time -- ::05.407695+
LOG: redo done at /
LOG: last completed transaction was at log time -- ::44.338862+
cp: cannot stat `/usr/local/pgsql/arch/.history': No such file or directory
LOG: selected new timeline ID:
cp: cannot stat `/usr/local/pgsql/arch/.history': No such file or directory
LOG: archive recovery complete
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
验证:
[postgres@pg201 ~]$ cd /usr/local/pgsql
[postgres@pg201 pgsql]$ ./bin/psql
psql (9.1.2)
Type "help" for help. postgres=# select * from test;
id
-----
100
200
(2 rows) postgres=# \q
回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页
磨砺技术珠矶,践行数据之道,追求卓越价值
PostgreSQL的 PITR实战---运用 recovery_target_time的更多相关文章
- PostgreSQL的PITR中,对 unfilled wal log 如何处理为好
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 通过实验,可以发现,PostgreSQL中使 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
- PostgreSQL基于时间点故障恢复PITR( point-in-time recovery )
PostgreSQL在使用过程中经常会发生一些失误的操作,但往往是可以弥补的.但是如果真遇到了无法挽回的误操作,只能寄希望于有备份了. 接下来的故障恢复也是基于有备份的情况,没有备份的情况,目前还没有 ...
- 给小白的 PostgreSQL 容器化部署教程(上)
作者:王志斌 编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿.从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上.文章分为上下两部分,第一部分 ...
- WAL
WAL record format typedef struct XLogRecord{pg_crc32 xl_crc; /* CRC for this record */XLogRe ...
- recovery.conf文件详解
在恢复过程中,用户可以通过使用recovery.conf文件来指定恢复的各个参数,如下: 归档恢复设置 restore_command:用于获取一个已归档段的XLOG日志文件的命令 archive_c ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- PostgreSQL PITR实验
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 看PostgreSQL中与PITR相关的设定 ...
- postgresql基于备份点PITR恢复
实验目的: 01.基于备份点直接恢复数据库 02.基于备份点后续增量wal日志恢复到特定的时间点 实验环境: centos7 postgresql9.5 01.安装postgresql9.5 post ...
随机推荐
- pyspark视频
在一个网课上买了一个pyspark视频,贼贵,本来是想把视频解压密码记下来分享出来的,可是其实用的是EVPLAYER,一机一码,一共只有3个激活码 这里我分享视频链接,百度网盘: https://pa ...
- .NET Core 控制台项目中的Nuget打包类库及引用
由于使用的是MAC版本的VSCode,所以全部是通过dotnet命令来完成的. 1.dotnet new lib 创建类库项目: 2.编辑项目根目录下的.csproj文件,添加版本号(建议): < ...
- 【原创】MySQL 生产环境备份还原
公司需要对生产环境的数据库进行备份,我接下了这份任务. 1. 首先谷歌了以下大家的备份方法 许多都使用到了Xtrabackup这个工具,超大型的公司可能有其他的的备份方法,这个工具对于中小型公司,甚至 ...
- python subprocess 和 multiprocess选择以及我遇到的坑
The subprocess option: subprocess is 用来执行其他的可执行程序的,即执行外部命令. 他是os.fork() 和 os.execve() 的封装. 他启动的进程不会把 ...
- JNI学习笔记
JNI是什么->一套c和java的互掉规则 为什么使用JNI 1.非常多敏感效率的代码已经用C实现了 2. JNI双向.java调用c,c调用java Java集成本地代码问题 1.代码 ...
- Android 4.4中AudioRecord用例 - 录制系统内置声音
通过API 19新加的MediaRecorder.AudioSource.REMOTE_SUBMIX參数能够让系统App录制系统内置的声音,也就是扬声器的声音.以下是一个巨简单的样例来演示样例怎样通过 ...
- Hadoop学习之路(六)HDFS基础
HDFS前言 HDFS:Hadoop Distributed File System ,Hadoop分布式文件系统,主要用来解决海量数据的存储问题 设计思想 1.分散均匀存储 dfs.blocksiz ...
- Apache HttpComponents中的cookie匹配策略
Apache HttpComponents中的cookie匹配策略 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre. ...
- Python pip常用指令
pip listpip list --outdatedpip list --outdated | grep Jinja2pip uninstall pycurlpip show pycurlpip i ...
- regex_match
原型:bool regex_match(InputSequence[,MatchResults] , Regex[ , Flags]); 当模式匹配整个输入序列成功时,返回的是true,否则返回fal ...