标签: postgresql

无法通过 SSH 连接到远程 Postgresql 数据库

我正在尝试通过 pgAdmin3 GUI 连接到端口 5432 上远程服务器 myHost 上的 Postgresql 数据库。

服务器端 :

  • 我有一个与 postgresql 角色匹配的 Unix myUser。
  • pg_hba.conf 是:
    local all all tr​​ust
    host all all all 127.0.0.1/32 trust

客户端 :

  • 我打开一个 ssh 隧道:ssh -L 3333:myHost:5432 myUser@myHost
  • 我通过 pgAdmin3 (或通过 psql -h localhost -p 3333 )连接到服务器。

我收到以下错误消息:
服务器意外关闭了连接 这可能意味着服务器在处理请求之前或处理请求时异常终止。

我尝试使用 psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser 访问具有超级用户角色的特定数据库,但没有成功。

我在设置中忘记了什么?
谢谢

postgresql ssh

9
推荐指数
2
解决办法
2万
查看次数

如何计算唯一值?

我正在尝试获取唯一 ip_addresses 的数量(在本例中为“3”)。该表如下所示:

结构:

CREATE TABLE bandits (
  key text NOT NULL,
  ip_address inet,
  offence text,
  count bigint DEFAULT 1);
Run Code Online (Sandbox Code Playgroud)

数据:

从标准输入复制强盗(key、ip_address、offence、count);
127.0.0.1_testing 127.0.0.1 测试 1
127.0.0.2_testing 127.0.0.2 测试 3
127.0.0.2_testing2 127.0.0.2 testing2 1
127.0.0.3_testing 127.0.0.3 测试 1

postgresql sql

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

PostgreSQL 在处理大量数据库时的表现如何?

我们有一个 Web 应用程序,其架构要求任何注册用户(实际上是一家公司)都应该彼此隔离,即,我将使用相同的数据模型运行相同的 Web 应用程序,但为每个客户使用不同的数据集。

所以,我们确实考虑过在 Postgres 中为每个客户创建一个不同的数据库。这个解决方案可以扩展到 10-20K 的数据库吗?多好?

有没有人对此有更好的解决方案?

提前致谢。

postgresql database-administration database-performance

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

Postgresql 性能 - 调整 SHMMAX 和 SHMALL

我已经阅读了网上关于提高 postgres 性能的所有内容,但是 SHMMAX 和 SHMALL 的“正确”值仍然让我难以理解。

共识似乎是 SHMMAX = total_memory/4 和 SHMALL = total_memory/2 是安全的起始值。

但是,SHMALL 可以以页数或字节数来衡量,我找不到任何有关在 Ubuntu 上使用的信息。

Ubuntu(或更普遍的 Debian)是否为 SHMALL 使用页面或字节?

postgresql ubuntu debian shmmax sysctl

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

如何有效地扩展 OpenStreetMap 数据

一年多以来,我一直在运行一个充满 OSM 数据的内部 PostGIS 服务器,用于基于 Mapnik 的瓦片生成和基于 Nominatim 的地理编码,并使用日复制更新。这很好用。

然而,随着使用量呈指数级增长,我希望通过添加额外的 PostgreSQL 服务器来实现更好的可靠性和性能。我有点迷失了。

由于 PostgreSQL 似乎不能自己处理复制,我会考虑使用像 PgPool-II 这样的中间件来保持服务器同步。但恐怕对于这种用法来说,这只是必要的:非常高的读写比率,所有写入每天都在同一确切时间完成。

我的问题很简单:你会怎么做才能使这些服务器保持同步?而且,OpenStreetMap Foundation、MapQuest、Mapbox 或 CloudMade 为此做了什么?

谢谢。

postgresql replication postgis

9
推荐指数
1
解决办法
1581
查看次数

postgresql 日志查询单个数据库

我将 PostgreSQL (8.3) 与多个数据库一起使用......我想知道是否有某种方法可以记录仅在其中一个数据库(不是全部)中进行的查询。

或者每个数据库有一个日志文件...

我知道我可以log_line_prefix = "%d"用来记录数据库的名称,然后过滤,但这不是问题。

我应该使用 log_analyzer 来解决这个问题吗?你有什么建议 ?

谢谢

postgresql

9
推荐指数
1
解决办法
6798
查看次数

我想我安装了多个 postgresql 服务器,如何识别和删除“额外”的服务器?

我的机器上似乎安装了一些 postgresql。我不确定这是否是一个错误,或者 Ubuntu 是否出于某种奇怪的原因复制了目录并将它们保留在其他地方。

我有一个 postgresql 目录 /etc

一进 /usr/lib

和一个 /opt

在这一点上我很困惑。

我如何去删除多余的?。
哪些是他额外的?
我还需要确保我的 rails env 中的“pg” gem 指向正确的 posgresql db 服务器。

关于我的问题的任何想法都会很大。

postgresql ubuntu

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

Postmaster 使用过多的 CPU 和磁盘写入

使用 PostgreSQL 9.1.2

我看到过多的 CPU 使用率和大量的 postmaster 任务写入磁盘。即使我的应用程序几乎什么都不做(每分钟插入 10 次),也会发生这种情况。但是,有合理数量的连接打开。

我一直在尝试确定我的应用程序中是什么导致了这种情况。我对 postgresql 很陌生,到目前为止还没有到任何地方。我在我的配置文件中打开了一些日志选项,并查看了 pg_stat_activity 表中的连接,但它们都处于空闲状态。然而,每个连接消耗约 50% 的 CPU,并且正在向磁盘写入约 15M/s(不读取任何内容)。

我基本上是使用股票 postgresql.conf 进行很少的调整。我很感激任何关于我可以做些什么来追踪这个问题的建议或指示。

这是 top/iotop 向我展示的示例:

Cpu(s): 18.9%us, 14.4%sy,  0.0%ni, 53.4%id, 11.8%wa,  0.0%hi,  1.5%si,  0.0%st
Mem:  32865916k total,  7263720k used, 25602196k free,   575608k buffers
Swap: 16777208k total,        0k used, 16777208k free,  4464212k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
17057 postgres  20   0  236m  33m  13m R 45.0  0.1  73:48.78 postmaster                                                                                                                       
17188 postgres  20   0 …
Run Code Online (Sandbox Code Playgroud)

postgresql linux performance

9
推荐指数
1
解决办法
8725
查看次数

PostgreSQL 慢提交性能

我们在 PostgreSQL 配置方面遇到了一些问题。经过一些基准测试后,我发现非常简单的查询需要相对较长的时间,经过进一步检查,实际的 COMMIT 命令似乎非常慢。

我使用下表进行了一个非常简单的测试:

CREATE TABLE test (
    id serial primary key,
    foo varchar(16),
);
Run Code Online (Sandbox Code Playgroud)

在打开所有语句的登录后,我运行了以下查询 10000 次:

BEGIN;
INSERT INTO test (a) VALUES ('bar');
COMMIT;
Run Code Online (Sandbox Code Playgroud)

BEGIN 和 INSERT 需要 < 1ms 才能完成,但 COMMIT 平均需要 22ms 才能完成。

在我自己的 PC 上运行相同的基准测试,它慢得多,对 BEGIN 和 INSERT 语句产生相同的平均值,但平均 COMMIT 大约为 0.4 毫秒(快 20 倍以上)。

经过一番阅读后,我尝试使用该pg_test_fsync工具来确定问题所在。在服务器上,我得到以下结果:

$ ./pg_test_fsync -o 1024
1024 operations per test
O_DIRECT supported on this platform for open_datasync and open_sync.

Compare file sync methods using one 8kB write: …
Run Code Online (Sandbox Code Playgroud)

postgresql linux performance hard-drive

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

Ubuntu 12.04 上的 Postgresql 9.2“无效的语言环境名称”

今天,我通过 apt.postgresql.org 在 Ubuntu precision 上安装了 Postgresql 9.2——一切都相对轻松,直到我陷入“无效的语言环境名称:it_IT.utf8”错误:

root@ubuntu:/tmp# sudo -u postgres psql -Xc "CREATE DATABASE test TEMPLATE template0 ENCODING 'utf8' LC_CTYPE='it_IT.utf8'"
ERROR:  invalid locale name: "it_IT.utf8"
Run Code Online (Sandbox Code Playgroud)

我确实跑locale-gen it_IT.utf8了,事实上:

root@ubuntu:/tmp# locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
it_IT.utf8
POSIX
Run Code Online (Sandbox Code Playgroud)

日志似乎没有关于为什么 postgres 无法识别 it_IT.utf8 的任何有意义的信息...你能帮忙吗?

postgresql ubuntu ubuntu-12.04

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