Articles of postgresql

Pgpool-II不会使用户模式的查询caching无效

我用postgresql (v9.5)configuration了pgpool2 (v3.4.3)来caching这样的查询: memory_cache_enabled = on memqcache_method = 'shmem' memqcache_total_size = 67108864 memqcache_max_num_cache = 10000000 memqcache_expire = 600 memqcache_auto_cache_invalidation = on memqcache_maxcache = 409600 memqcache_cache_block_size = 1048576 memqcache_oiddir = '/var/log/pgpool/oiddir' 我可以确认查询实际上是被caching的。 问题在于即使在更新,插入和删除同一张表之后,caching也不会失效。 这是发生了什么事情: 从表中select一行 – caching不存在 – 执行实际select。 select同一行 – 从caching中检索行。 更新同一行 – 成功。 select同一行 – 从caching中检索行。 高速caching失效在public架构中按预期工作,但不在其他架构中工作。 我已经阅读了常见问题解答 : 当我使用模式限定的表名时,pgpool-II不会在内存查询caching上失效,并且我得到了过时的数据。 为什么? 看来你没有安装“pgpool_regclass”函数。 没有这个函数,pgpool-II将忽略模式限定表名的模式名称pat,并且高速caching失效失败。 我已经在application和postgres数据库上同时安装了pgpool_adm […]

Apache2,PHP5,Code Igniter和PGSQL

我通常熟悉堆栈,我遇到一个奇怪的问题。 当我打电话给一个网页发送一个请求,使得postgres花了很长时间来回应,因为这个表很大。 我的Apache2挂起没有其他请求到我的网站将返回,甚至没有网页查询小表,并返回所有的长。 他们甚至不会在appache access.log中login 组态 **php.ini** max_execution_time 300 **apache2.conf** TimeOut 300 当我重新启动我的服务器werentlogin的请求通过,并被服务,但仍然是一个长期失败。 我的想法是,一个网页不应该影响任何其他请求,因为每个脚本自己运行,并创build一个新的连接到数据库。 我不认为它的操作系统,因为我正在开发一个Windows笔记本电脑(XAMP)和部署在Debian服务器上。 无论是运行在服务器上的Debian或我的本地主机的行为是一样的。

无法通过端口5432上的ssh隧道连接到远程主机

我在运行Debian 8的远程主机上安装了PostgreSQL。我必须通过代理服务器使用ssh隧道来连接到这个远程。 我没有问题: 在通过端口22上的ssh进行连接时, 在远程主机上连接时在本地运行psql。 但是,我不能通过隧道运行psql。 我做了什么: 1)使用-vvv选项创build隧道: ssh proxy-user@proxy-host -L localhost:2222:remote-host:5432 -N -vvv 2)尝试通过隧道运行psql: psql -h 127.0.0.1 -p 2222 -U user db 连接被拒绝,这里是第一个命令的输出: debug1: Connection to port 2222 forwarding to XX.XX.XX.XX port 5432 requested. debug2: fd 7 setting TCP_NODELAY debug2: fd 7 setting O_NONBLOCK debug3: fd 7 is O_NONBLOCK debug1: channel 2: new [direct-tcpip] […]

如何将postgresql 9.6.2设置为在CentOS 7上从源代码构build时自动启动

我已经从源代码运行安装postgresql 9.6.2。 我执行.configure , make和make install命令,完美地安装了数据库。 然后我安装了用户,使用createdb命令创build了数据库,并且能够本地login到postgresql用户来执行本地sql查询。 我的问题是自动启动。 如何设置自动启动function? 命令service postgresql restart错误说no unit 。 我也试过postgresql-9.6 , postgresql-9.6.2 , postgresql-962和其他一些无效。 我如何configuration这个? 谢谢。

PostgreSQL默认不带密码帐户

我有一个PostgreSQL数据库和我们的内部漏洞工具抱怨Default Unpassworded Account 。 我无法知道哪个帐户没有被盗用的问题。 我创build了几个帐户,但每个人都有密码。 postgres帐户也有密码。 当我执行: psql template1 -c '\du'我有以下输出: List of roles Role name | Attributes | Member of ————–+————————————————+———– account1 | Superuser, Create role, Create DB | {} account2 | | {} postgres | Superuser, Create role, Create DB, Replication | {} account3 | Password valid until infinity | {} account4 […]

Postgres on amazon EC2随机断开

我安装了一个amazon实例(中等ubuntu)与运行postgres服务器。 我从我的个人电脑连接到该服务器,虽然它通常工作,我经常会得到以下错误(随机): OperationalError: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. 我的连接是好的,实例似乎是好的(它没有崩溃或任何东西,我可以立即重新连接,它的工作完美)。 我看postgres的主要日志,并看到这样的线路匹配断开连接: 2017-04-03 07:26:24.073 UTC [28918] testadmin@test_db FATAL: connection to client lost 哪些不是很有帮助。 我怎样才能解决这个问题? 任何人都有一个想法,为什么这可能发生在亚马逊实例? 它是一个简单的介质实例没有负载平衡器,没有弹性IP(我通过实例的公共DNS连接)。 谢谢!

Postgres pg_trgm扩展名创build错误

我已经安装了Postgres 9.5,试图安装GitLab。 作为该过程的一部分,需要在数据库上创buildpg_trgm扩展( pg_trgm )。 当我发出create语句时,出现以下错误: 错误:无法打开扩展控制文件“/usr/share/postgresql/9.1/extension/pg_trgm.control”:没有这样的文件或目录 据推测以前服务器上有一个Postgres 9.1的版本,扩展控制文件目前在/usr/share/postgresql/9.5/extension/pg_trgm.controlfind。 如何获取psql实例以查看9.5目录中的扩展?

Postgres-Repmgr节点在重启后被标记为不活动

我正在使用2个psql服务器的集群。 我使用repmgr来pipe理复制和故障转移。 复制工作正常,当我的主服务器出现故障时,备用服务器将处于主导地位 我的问题是当我试图把奴隶当奴隶。 我使用这个命令: rm -rf /var/lib/postgresql/9.6/main/* repmgr -h acms-preprod-sql2 -U repmgr -p 5433 -d repmgr -D /var/lib/postgresql/9.6/main standby clone cp /var/lib/postgresql/recovery.template /var/lib/postgresql/9.6/main/recovery.conf //recovery file for this node service postgresql start repmgr standby register –force –wait-sync repmgrd -d –verbose >> /var/log/postgresql/repmgr.log 2>&1 但是当我运行最后的命令,我收到这个消息: [错误]该节点被标记为非活动状态,不能用于故障转移 但是,当我尝试集群秀,这个节点注册为stanby,正在运行所以我不明白wat的事情

Postgres在docker集装箱不工作 – 不断重新启动

我最近搬了我的postgres数据从一个硬盘驱动器复制到另一个。 我的docker运行命令是 docker run –name postgres –restart=always -e POSTGRES_USER= -e POSTGRES_PASSWORD= -e POSTGRES_DB=elevate_recruit -v /media/postgres:/var/lib/postgresql/data -d -p 543 2:5432 postgres:9.5 媒体驱动器是包含postgres备份的驱动器。 当我运行ls -l media/postgres我得到了 drwxrw-rw- 6 sbt springcoil 4096 Jun 20 10:25 base drwxrw-rw- 19 sbt springcoil 4096 Jun 21 13:27 data -rw-rw-rw- 1 sbt springcoil 4 Apr 27 13:38 PG_VERSION 当我运行docker集装箱和docker logs container_id我得到 postgres […]

Postgres-XL失败

我们有一个UPS故障,我们的数据库已损坏 我可以连接到postgres-xl本身,但是在运行查询时有很多错误 我必须有28个表,但目前pgAdmin显示我只有21个表 ,我检查一些表没有在pgAdmin列出但存在于pg_class ,有些不存在pgAdmin和pg_class 奇怪的是,如果我selectpg_class所有logging,我可以看到my_table列在返回的结果中,但是当我运行select * from pg_class where relname='my_table'我没有logging( 这是没有大小写敏感的my_table缺lesstypes ) 另一个错误是 错误:无法打开文件“base / 13303/18834”:没有这样的文件或目录 有时我得到这个错误 错误:无法打开与OID 19826的关系 我运行ANALYZE VERBOSE "my_table" SQL错误[23505]:错误:重复键值违反唯一约束“pg_statistic_relid_att_inh_index”详细信息:键(starelid,staattnum,stainherit)=(18755,1,f)已经存在。 org.postgresql.util.PSQLException:错误:重复键值违反唯一约束“pg_statistic_relid_att_inh_index”详细信息:键(starelid,staattnum,stainherit)=(18755,1,f)已经存在。 所以我运行这个查询 select starelid,staattnum,stainherit,count(*) cnt from pg_statistic group by starelid,staattnum,stainherit having count(1) >1 order by 1,2,3; 我不知道如何重复键值违反,但查询结果是空的,没有重复的logging 另一个问题是 错误:关系“public.my_table”不存在PANIC:无法中止事务212004,它已经提交服务器意外closures连接这可能意味着服务器exception终止