Articles of postgresql

关于checkpoint_segments参数

我不知道参数“checkpoint_segments”非常好,我个人的观点是这意味着沃尔沃日志文件的数量; 我将参数的值configuration为64,但是我可以在pg_xlog目录中看到131个文件。 有人可以解释这个参数吗? –detail postgres=# show checkpoint_segments; checkpoint_segments ——————— 64 (1 row) [postgres@pg_root]$ cd $PGDATA [postgres@pg_root]$ ls -lrt pg_xlog | wc -l 132

PostgreSQL不会启动,因为它“无法分配内存”

我在Ubuntu 10.04上运行PostgreSQL 8.4.5。 我运行一个ECN实例,在nginx上运行几个站点。 大多数这些网站在Django上运行并连接到这个Postgres实例。 出于某种原因,今天晚上8:45,Postgres倒下了。 我login到机器,我看到这个错误消息: * Starting PostgreSQL 8.4 database server * The PostgreSQL server failed to start. Please check the log output: 2011-04-17 04:46:49 UTC FATAL: could not create shared memory segment: Cannot allocate memory 2011-04-17 04:46:49 UTC DETAIL: Failed system call was shmget(key=5432001, size=16211968, 03600). 2011-04-17 04:46:49 UTC HINT: This error […]

忘记了postgresql用户的密码。 我如何login?

我忘记了postgresql root用户的密码:postgres 所以我改变了pg_hba.conf来拥有一切的trust方法(这是我的本地开发框) local all postgres trust local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust 重新启动服务后,它仍然要求我input密码。 @omnipresent:~$ su – postgres Password: su: Authentication failure 虽然,我可以通过psql -U postgreslogin @omnipresent:~$ psql -U postgres psql (8.4.8) Type "help" for help. postgres=# 我在这里混乱,在这一点上,我只想为postgresql做一个新的angular色,并使该用户成为一个pipe理员。 在这种情况下我怎么能这样做呢?

Postgresql:更改默认的数据path

我想在启动时将PostgreSQL服务器指向特定的非默认数据目录。 现在,我必须(手动或在脚本中)使用pg_ctl来停止并使用/new/path/to/data重新启动数据库。 操作系统是Ubuntu,默认数据目录是/var/lib/postgresql/8.4/main

PostgreSQL EC2备份策略

我试图确定在Amazon EC2上备份PostgreSQL数据库的最佳方法。 我已经阅读了几个选项。 1)获取数据库正在使用的EBS卷的每日快照。 我用这种方法看到的问题是在写入快照时发生了什么? 那么我的数据会不会腐败? 2)使用pg_dump,压缩文件并存储在S3中。 pg_dump不会创build损坏的数据,但是从pg_dump恢复数据库可能非常耗时 应该采用什么策略? 选项1似乎很诱人,因为它更容易做和恢复,但是我是否正在冒这个风险?

带有共享磁盘的多个Postgres服务器(一个作者,多个阅读器)

这是一个场景: 一个碎片盘(Gluster) 多个Postgres服务器 要求: 使用共享磁盘来存储数据库文件 使用提供最高效率的configuration 目前发现, 如本文所述,可以使用共享磁盘来存储数据。 但是它也说“另一个问题是备用服务器在主服务器运行时不应该访问共享存储器”。 这意味着所有的服务器(除了主服务器)都没有使用,这几乎是我们无法接受的。 由于我们使用的是共享磁盘,所以不应该有复制。 在这个文档中发现一些configuration(Raw和Master / Slave模式)已经足够了。 但另一个问题是他们可能会导致上述问题。 问题: 网上有很多文档让我对他们的要求和function感到困惑。 我的理解是正确的吗? 如果是这样,是否有任何可能实现这一devise(使用pgpool或其他工具) 如果是这样,你可以请名称的工具和或关键字,所以我可以find更多的信息。 请注意(对于那些有兴趣closures尽可能多的问题的人) – 它发生在我之前。 有人说我正在寻找基于意见的答案。 其实我不是。 我在看的是技术的名称或某种关键词,不pipe是什么。 所以通过使用它们我可以search更多的信息。 有时候,你需要知道一些关键词来search和查找信息。 提前致谢。

在NFS驱动器上移动postgres数据文件夹。 符号链接,重新启动集群,还是修改init.d脚本更好?

我想将我的postgres data文件夹移动到一个NFS驱动器,但我不知道什么是最好的办法做到这一点。 我有三个select: 根据Postgres文档 ,一种方法是使用带有-D选项的initdb命令。 initdb不存在, initdb将尝试创build你指定的目录。 LinuxQuestions.org上列出的另一种方法是更新postgressql init脚本以指向新的目录,在这种情况下,它将是NFS驱动器。 最后,我想我只是将pgsql/data文件夹复制到NFS驱动器,并简单地符号链接文件夹。 即, pgsql/data -> nfs/data Symlinking或更新初始化脚本似乎是对我来说最简单的方法,但我不知道如果他们会是最好的或最安全的方式。 这是我希望有人能帮助我的地方。 任何build议,关注,利弊将不胜感激。 环境信息 红帽企业Linux服务器5.7 PostgreSQL 8.3.6 假定使用-maproot=root选项挂载NFS驱动器,并且root用户将访问NFS驱动器。

lockingPostgreSQL用户进行维护

在PostgreSQL 8.4.9与pgbouncer 1.3.4在pool_mode =会话(但有些用户直接连接到数据库) – 当我作为“超级用户”login psql -U postgres -W postgres 什么命令,请断开所有“普通用户”,并防止他们再次连接,而我进行维护(我想重命名一些表列以更一致的命名,并相应地更改一些存储过程)。 我在三号找不到它。 服务器pipe理文档。 或者我应该编辑pg_hba.conf并重新启动服务/进程?

将postgresql数据库的权限授予其他用户

我试图build立一个每个用户都有一个PostgreSQL数据库的系统,一个关联账户的PHP-FPM资源池。 我需要将数据库的所有权限授予其他用户,但似乎只能对表执行此操作。 我试过了 将数据库用户名的所有权限授予username_shadow 但是这只给予有限的特权。 我已经升级到PGSQL 9.2,它能够在模式上授予权限,但是我不能得到有用的结果。 我如何简单地让另一个用户具有第一个在同一个数据库上的所有权限?

sudo /etc/init.d/postgresql restart(如何select安装?)

我有两个postgresql安装: $ sudo /etc/init.d/postgresql status 9.1/main (port 5432): online 9.2/main (port 5433): online 我被用来重新启动postgres数据库做一个: $ sudo /etc/init.d/postgresql restart …但现在有两个,如何select重启? 更新 :继我从Micah Yoder收到的答复,我做了一个: /usr/lib/postgresql/9.2/bin/pg_ctl -D /var/lib/postgresql/9.2/main restart 遇到“无法打开PID文件/var/lib/postgresql/9.2/main/main/postmaster.pid权限被拒绝”。 当我试图在sudo-i会话中运行pg_ctl时 ,遇到了: pg_ctl: cannot be run as root Please log in (using, eg, "su") as the (unprivileged) user that will own the server process. 我该如何运行pg_ctl程序? 另外我不明白为什么我必须指出重新启动数据文件。 该进程不知道它正在使用哪个数据文件? 更新2最后,我放弃了pg_ctl […]