我正在考虑更改备份的完成方式,并且想知道是否有办法确定 postgreql 集群中的哪些数据库最近没有更改?
而不是使用 pg_dumpall,我想使用 pg_dump 并且只转储自上次备份以来发生变化的那些数据库(有些数据库不会经常更新)——这个想法是,如果没有任何变化,那么当前备份应该还是不错的。
有谁知道确定特定数据库上次更新/更改时间的方法?
谢谢...
更新:
我希望不必到处写触发器,因为我无法控制在一个特定集群中创建数据库(更不用说在数据库中创建 db 对象了)。
进一步挖掘,看起来 $PGDATA/global/pg_database 文件的内容(特别是第二个字段)和 $PGDATA/base 下的目录名称之间存在相关性。
顺便说一句,我猜 pg_database 文件的第二个字段是数据库 oid,并且每个数据库在 $PGDATA/base 下都有自己的子目录(子目录名称为 oid)。那是对的吗?如果是这样,使用 $PGDATA/base/* 下文件的文件时间戳作为需要备份的触发器是否合理?
...或者,还有更好的方法?
再次感谢...
我们有一组失败的空间查询,我正在努力解决它们。我怀疑我们遇到了一些错误,但我想更好地确定一些事情,以确保并确保生成的错误报告既有用又定向到正确的一方(postgresql,postgis,或其他)。
有人对下一步有什么建议吗?
鉴于:PostgreSQL v9.1 从http://yum.postgresql.org安装在一个完整的 CentOS 5 补丁 32 位安装上
$ rpm -q postgresql91-server
postgresql91-server-9.1.6-1PGDG.rhel5
$ rpm -q geos
geos-3.3.5-1.rhel5
$ rpm -q proj
proj-4.7.0-1.rhel5
$ rpm -q postgis91
postgis91-1.5.5-1.rhel5
$ uname --kernel-name --kernel-release --kernel-version --machine --processor --hardware-platform --operating-system
Linux 2.6.18-308.16.1.el5PAE #1 SMP Tue Oct 2 22:49:17 EDT 2012 i686 i686 i386 GNU/Linux
$ cat /proc/meminfo | grep MemTotal
MemTotal: 5126968 kB
Run Code Online (Sandbox Code Playgroud)
涉及到三个表(为了便于阅读,名称已更改),它们都很小。
db=# select count(1), st_isclosed(the_geom) from table_1 group by st_isclosed(the_geom);
count | st_isclosed
-------+-------------
13268 | …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用 PostgreSQL,现在我错误地删除了我的一个表的一些记录。现在有什么方法可以恢复 PostgreSQL 中已删除的记录吗?