标签: postgresql

如何有选择地复制 PostgreSQL 数据库

我想保留两个具有相同模式的 PostgreSQL 数据库,但有一个从只保留一小部分实时数据的主数据库复制。

基本上,master 接收实时数据并删除时间窗口之外的旧数据,而复制的 slave 应该保留所有历史数据(至少达到磁盘的限制)。所以本质上,除了删除操作之外,从站应该复制主站。

任何“现成的”PostgreSQL 复制方法都可以做到这一点吗?

postgresql

6
推荐指数
1
解决办法
2187
查看次数

PostgreSQL:更改 psql、createdb 等实用程序使用的默认端口

我在某些服务器上运行了2 个PostgreSQL实例。一个默认端口(5432)和端口5433.有些用户(和工艺)只需要进入二审(5433)其他实例上,我想设置它,这样,当这些用户使用的命令状psqlcreatedb在他们的 shell 中,它会自动将他们引导到正确的 Postgres 实例,而不是他们必须-p 5433随着每个命令一起输入。

我试图在 www.postgresql.org 上查找它,但找不到它……可能是我的错。有谁知道怎么做?

postgresql psql command-line

6
推荐指数
1
解决办法
1万
查看次数

删除大对象的权限

从 PostgreSQL 9.0 开始,每个大对象都有自己的访问权限,这些权限被授予:

GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
  ON LARGE OBJECT loid [, ...]
  TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
Run Code Online (Sandbox Code Playgroud)

SELECT 权限允许以只读模式打开对象,对于 UPDATE,文档说:

 For large objects, this privilege allows writing or truncating the object.
Run Code Online (Sandbox Code Playgroud)

但是如果一个大对象属于user1,我找不到如何授予user2删除(lo_unlink)这个对象的权限。如果 user1 说GRANT UPDATE on LARGE OBJECT xyz TO user2;并且 user2 运行SELECT lo_unlink(xyz);,则会被拒绝: …

postgresql

6
推荐指数
1
解决办法
2176
查看次数

安装 PostGIS v2 for PostgreSQL v9.2

我已经安装了最新的稳定版 PostgreSQL v9.2,我想安装 PostGIS v2 扩展。

我已经找了3天了,但找不到。

然而,我确实找到了 PostGIS v2 for PostgreSQL v9.1,感谢这个网站:http : //linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/

我是 Ubuntu 新手,我更习惯 Windows。

PostgreSQL v9.1 包不起作用。我在哪里可以获得正确的包裹?

postgresql ubuntu postgis

6
推荐指数
1
解决办法
2013
查看次数

一对多关系的查找表

我有一个ticketsid,我需要将它关联到一个查找表,其中该数据的对应项是另一个id受外部源控制的表。

tickets
- id
- sutff

lookup
- outside_data_id
- ticket_id
Run Code Online (Sandbox Code Playgroud)

我只需要知道关联是否存在(因此是lookup表)并且具有一对多的关系。我知道没有别的有关outside_data_id除了id本身和相关ticket_id

此外,我不想更改tickets表格,因为这只会影响少量的ticket_id's。

例子

outside_data_id = 1234
Run Code Online (Sandbox Code Playgroud)

可能与:

ticket_id = 321
ticket_id = 322
ticket_id = 900
Run Code Online (Sandbox Code Playgroud)

下面的查找表结构会起作用还是有更好的方法?

CREATE TABLE lookup
(
   outside_data_id integer, 
   ticket_id integer
)
Run Code Online (Sandbox Code Playgroud)

postgresql database-design clustered-index referential-integrity index-tuning

6
推荐指数
2
解决办法
5119
查看次数

使用不同的数据类型存储应用程序设置

我正在开发一个 Web 应用程序,我计划将应用程序设置存储在数据库中的名称、值字段(一行 = 一个设置)中。

这些设置范围从目录路径到简单的是/否标志。显然,我无法将路径(字符串)存储到布尔字段中。

我唯一的选择是将值字段设为字符串,然后根据设置根据需要解释该值,还是有其他一些策略?

(我使用的是 PostgreSQL,但答案可能适用于任何数据库服务器。)

postgresql configuration

6
推荐指数
1
解决办法
915
查看次数

对 Postgresql 空间查询失败进行故障排除。下一步?

我们有一组失败的空间查询,我正在努力解决它们。我怀疑我们遇到了一些错误,但我想更好地确定一些事情,以确保并确保生成的错误报告既有用又定向到正确的一方(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 troubleshooting postgis

6
推荐指数
1
解决办法
516
查看次数

查询以识别 postgresql 数据库表中使用的所有数据类型

我不想知道所有数据类型,只想知道我的数据库中使用的所有数据类型。这个信息可以查询吗?

PostgreSQL 8.4 和 9.x 版本

我目前需要知道公共(和其他模式)中 200 多个表的所有数据类型

postgresql datatypes information-schema

6
推荐指数
1
解决办法
8799
查看次数

确定合适的隔离级别

这是一道作业题。

对于以下事务,说明将在不降低数据库完整性的情况下最大化吞吐量的隔离级别。解释答案。

将 coursed_id = 'CPSC1350' 标识的课程从一个部门更改为另一个部门。

Courses 表包含有关课程的信息:课程 ID、名称、提供课程的部门、讲师的 ID 以及可以参加课程的最大学生人数 (max_size)。课程(coursed_id:string,cname:string,dept:string,instructor_id:string,max_size:integer) – 主键:coursed_id – 外键:instructor_id 引用 Instructors

假设使用 PostgreSQL。

我相信可以使用提交的读来完成事务,因为

  • 脏读不好,因为有更新正在进行,因此涉及读取
  • 不可重复读取是可以的,因为其他人不太可能更改该值
  • 幻影是可以的,因为没有SELECT陈述

我在正确的轨道上吗?

rdbms postgresql optimization isolation-level

6
推荐指数
1
解决办法
670
查看次数

当 postgresql 发现触发器文件并将它自己从从服务器提升到主服务器时,实际发生了什么?

我在两个 postgres 服务器(主服务器:服务器 A,从服务器:服务器 B)之间进行了流式复制设置。我想知道当我触摸触发器文件并且从设备接管作为主设备时,引擎盖下实际发生了什么?我想知道的一件事是,在教程或文档中似乎没有人提到任何地方,如果我在完成后重新启动以前的奴隶(现在是主人)怎么办?事情不会变得一团糟,因为 .conf 文件仍然反映了旧的从站设置(例如 hot_standby = on)?在我可以安全地重新启动服务器之前,我应该更新那个 .conf 吗?

背景:我所处的情况让我想知道这一切是我需要更换我主控上的硬盘。这是我打算这样做的方式:

  • 故障转移到从站(服务器 B)
  • 更改主(服务器 A)上的硬盘并重新安装
  • 将重新安装的服务器A作为slave启动
  • A服务器赶上B服务器后,将A服务器改回master,然后再把B服务器改回slave

(顺便说一句。如果您对更好的工作流程有建议,请告诉我)

postgresql replication failover

6
推荐指数
1
解决办法
3355
查看次数