标签: postgresql

Postgres vs MySQL:哪一个更难横向扩展?

根据您的经验,哪个数据库服务更难扩展?MySQL 还是 Postgres?我知道 MySQL 有几个开箱即用的缩放/集群功能,但是对于 Postgres,没有一个是开箱即用的。CMIIW。

编辑:

对不起,这里的混淆,我的问题是指横向扩展(水平扩展),即集群、分片等。我知道两者都可以水平扩展,但哪个更容易实现?

谢谢你的分享。

mysql postgresql scaling

8
推荐指数
2
解决办法
7342
查看次数

如何使 pg_dump 减少资源贪婪

我已将 cron 配置为使用以下规则每天调用 pg_dump:

# xyz database backups:
00 01 * * * root umask 077 && pg_dump --user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz
Run Code Online (Sandbox Code Playgroud)

基本上,它有效。数据库增长相对较快且呈指数增长(但指数不是很大)。目前,压缩后的转储大约需要 160MB。当数据库被转储时,系统开始爬行。我使用该top命令看到的平均负载约为200, 200, 180. 基本上服务器几乎没有响应。

第一个问题是如何确定瓶颈在哪里。性能低下是I/O操作繁重导致的吗?是由表锁定问题引起的吗?也许这是一个内存问题?pg_dump命令的输出通过管道传输到gzip命令。它是顺序的,即整个转储放在内存中(交换问题?)然后压缩或并发(即 gzip 压缩它得到的东西并等待更多)?可能是由其他因素引起的吗?

在第二个问题是如何使倾倒操作该系统的主要功能侵扰程度较低。据我了解,由于数据库完整性,转储不能花费太多时间。有表写锁等。我可以做些什么来限制问题(或延迟它,考虑到数据库增长)。

在第三个问题:是否已经时间来了解更多的高级数据库配置?系统工作正常,当不执行数据库备份时,但也许数据库转储问题是传入问题的第一个症状?

postgresql performance database-backup

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

PostgreSQL 服务 initdb 不起作用

我以类似于此处提到的方法在我的 Fedora 16 上安装了 PostgreSQL 9.1.2 ,并对其进行了测试,这意味着我的安装工作正常。

但是当我这样做时:service postgresql initdb甚至service postgresql-9.0 initdb我得到错误:

Redirecting to /bin/systemctl  initdb postgresql.service
Unknown operation initdb
Run Code Online (Sandbox Code Playgroud)

因此,我也无法启动 pgAdmin3。

我错过了什么?

postgresql database

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

对等身份验证对 postgresql 意味着什么?

我正在尝试登录我的数据库并收到此错误...

root@---:~# psql -U user database
psql: FATAL:  Peer authentication failed for user "user"
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我很确定我可以通过将 peer 放入我的 pg_hba.conf 来修复它,但我不确定我是否应该这样做......

postgresql

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

为什么 Postgres 闲置 95%,没有文件 I/O?

我有一个 TileMill/PostGIS 堆栈在 OpenStack 云上的 8 核 Ubuntu 12.04 VM 上运行。这是一个非常相似的系统的重建,该系统上周在非常相似的硬件(相同的云,但不同的物理硬件,我相信)上运行良好。我试图重建与原来完全相同的堆栈(使用我构建的一些脚本)。

一切都在运行,但数据库执行查询的速度非常缓慢,这最终表现为非常缓慢的 tile 生成。一个示例查询(计算澳大利亚每个城镇半径内的酒吧数量),以前需要 10-20 秒,现在需要 10 多分钟:

explain (analyze, buffers) update places set pubs = 
(select count(*) from planet_osm_point p where p.amenity = 'pub' and st_dwithin(p.way,places.way,scope)) +
(select count(*) from planet_osm_polygon p where p.amenity = 'pub' and st_dwithin(p.way,places.way,scope)) ;
 Update on places  (cost=0.00..948254806.93 rows=9037 width=160) (actual time=623321.558..623321.558 rows=0 loops=1)
   Buffers: shared hit=132126300
   ->  Seq Scan on places  (cost=0.00..948254806.93 rows=9037 width=160) (actual time=68.130..622931.130 rows=9037 loops=1)
         Buffers: shared hit=132107781
         SubPlan 1 …
Run Code Online (Sandbox Code Playgroud)

postgresql performance bottleneck diagnostic postgis

8
推荐指数
1
解决办法
4443
查看次数

Windows 上的 PostgreSQL Stack Builder 安装代理设置

我已经在运行 Windows 8.1(64 位)的开发人员机器上下载并安装了 PostgreSQL 9.3(64 位)。此开发人员机器需要使用代理服务器来访问 LAN 外部的主机。

StackBuilder 3.1.1 向导/安装程序从 IE 中提取代理设置,它们看起来是正确的,但是当单击“下一步”按钮时,我收到一个“堆栈生成器错误”对话框,指示:

无法打开应用程序列表:
http://www.postgresql.org/applications-v2.xml

错误:无法打开指定的 URL。

我已经能够使用 IE 和 Chrome 使用安装程序最初从 IE 中提取的相同代理设置成功下载应用程序列表。

我尝试过的其他事情:

  • 在代理服务器主机名之前添加协议“http://”
  • 使用代理服务器的 IP 地址而不是主机名
  • 完全删除了代理设置

在前两种情况下,安装程序几乎立即响应上述错误消息。最后,在响应上述错误消息之前大约有 5 秒的延迟。

一个类似的问题似乎被记录为PostgreSQL 错误跟踪器上的一个错误,但没有对初始报告作出回应。

有没有人熟悉这个问题,如果是这样,在使用 Stack Builder 安装程序时发现哪些变通办法是有效的?

postgresql windows installation proxy

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

pg_dump: [archiver (db)] 与数据库的连接失败:致命:用户“postgres”的对等身份验证失败

我正在尝试将我的 Postgres 数据库备份到另一台服务器,但我一直被拒绝访问。

我的 pg_hba.conf 文件如下所示:

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain …
Run Code Online (Sandbox Code Playgroud)

postgresql psql database-backup

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

Docker:使用 ADD 添加的文件夹的权限被拒绝

我正在尝试使用 docker 配置 postgresql 安装。

FROM ubuntu:13.10

ADD . /db

# install postgres
# ...

RUN chown postgres:postgres /db -R && \
    chmod 700 /db -R

USER postgres
RUN /etc/init.d/postgresql start &&\
    createdb test &&\
    psql -d test -f /db/all.sql
Run Code Online (Sandbox Code Playgroud)

我可以访问文件夹/db,但不能访问/db/plpgsql(其中包含由/db/all.sql 执行的文件)

我在 /db/plpgsql 上尝试了 chmod 777 但它也不起作用,权限被拒绝。

postgres@c364bdd94652:/$ ls -l | grep db
drwxrwxrwx   5 postgres postgres 4096 Jul 10 17:39 db
postgres@c364bdd94652:/$ cd db/
postgres@c364bdd94652:/db$ ls -l
-rwxrwxrwx  1 postgres postgres   2567 Jul 10 16:34 Dockerfile
-rwxrwxrwx  1 …
Run Code Online (Sandbox Code Playgroud)

postgresql linux permissions docker

7
推荐指数
1
解决办法
3195
查看次数

postgis 2.1.6 -> 2.2.0 升级后无法升级 postgresql 9.4 -> 9.5beta2

这是我的情况:

  1. 我从 Postgresql 9.4.5 和 Postgis 2.1.6 开始。一切顺利。两者都是从源代码安装的。
  2. 我将 Postgis 升级到 2.2.0(下载源、配置、制作、制作安装,然后ALTER EXTENSION postgis UPGRADE TO '2.2.0';)。这似乎有效(在安装了 postgis 的两个数据库上都select postgis_full_version()显示POSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTER了),尽管旧的postgis-2.1.so留在了 lib 目录中。
  3. 我尝试将 Postgresql 从 9.4.5 升级到 9.5beta2。我下载源代码、配置、制作、安装、安装 Postgis 2.2.0、initdb,并准备运行pg_upgrade. pg_upgrade失败:

您的安装引用了新安装中缺少的可加载库。您可以将这些库添加到新安装中,或者从旧安装中删除使用它们的功能。问题库列表在文件中:loadable_libraries.txt

loadable_libraries.txt 包含:

无法加载库“$libdir/rtpostgis-2.1”错误:无法访问文件“$libdir/rtpostgis-2.1”:没有这样的文件或目录

无法加载库“$libdir/postgis-2.1”错误:无法访问文件“$libdir/postgis-2.1”:没有这样的文件或目录

我不知道为什么新版本的 Postgresql 需要旧版本的 Postgis ......它不应该被删除吗?我从 9.4 的 lib 目录中移动了旧文件postgis-2.1.so和rtpostgis-2.1.so文件,但错误仍然存​​在。

我还尝试针对 Postgresql 9.5beta2 …

postgresql postgis

7
推荐指数
1
解决办法
1857
查看次数

在 Centos 上为 Postgres 配置防火墙规则的问题

我试图按照本指南允许远程连接到 postgres http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html
目前我遇到了防火墙问题。
我有它的设置,所以我有一个/tmp/v4我可以修改并从中恢复我的防火墙规则。
我尝试了 2 种设置。
指南推荐的一种:

-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 00.000.000.00  --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 00.000.000.00 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

当我使用这个设置和运行nc ipofserver 5432,我得到Ncat: connection timed out
如果我尝试设置

-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT
-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我运行相同的 ncat 命令,我得到 …

postgresql firewall centos centos7

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