Articles of postgresql

磁盘上的数据库文件结构

我对目前正在开发的一个项目的数据库基础感兴趣。 特别是磁盘上的物理存储以及行和索引如何存储在文件中。 大部分我理解SQLite数据文件的布局。 我似乎无法find关于PostgreSQL和SQL Server如何在磁盘上存储数据以及如何构build文件结构的见解。 只是要清楚,我正在寻找关于数据库如何在磁盘上存储数据的技术描述,特别是文件布局。 有谁知道在哪里可以find关于这个话题的更多信息?

psql:如何在\ d输出中包含注释

在PostgreSQL中,可以向表格列添加注释。 这些将出现在“extended describe” \d+命令的psql输出中,但是它们不会出现在标准\d输出中。 有一个psql设置或默认,可以调整,使这些评论出现在\d输出? 这里的动机是大多数人主要使用\d来检查模式,我想使模式文档更容易被发现。

在Ubuntu上更改kernel.shmmax和kernel.shmmal?

我们有一个6GB的RAM的Ubuntu服务器。 我们正在尝试安装Postgres,但build议我们增加kernel.shmmax和kernel.shmmal的值。 服务器完全是一个Postgres数据库服务器,我们想把这两个数字改成 4GB的shmmax,所以4294967296 1048576 shmall 我已经阅读了如何进行更改,并尝试过 sudo sysctl -w kernel.shmmax=4294967296 sudo sysctl -w kernel.shmmal=1048576 然后完成cat / proc / sys / kernel / shmmax来检查结果 – 这仍然显示旧的数字。 我究竟做错了什么? 我将它们放在/etc/sysctl.conf中,以便在重新启动后保留它们。 我得到的错误是: FATAL: could not create shared memory segment: No space left on device DETAIL: Failed system call was shmget(key=1, size=36, 03600). HINT: This error does not mean […]

pgpool2并行模式:非超级用户必须在连接string中提供密码

我有两个AWS RDS postgres节点支持EC2上的并行模式pgpool设置。 使用pgbench填充testing表后,我从testing查询中得到奇怪的行为。 任何使用函数的查询都会产生主题行中提到的错误,而其他查询则按预期工作。 三个例子显示成功,预期失败和意外失败: 成功 – 产生预期的logging集: psql -c "SELECT aid FROM pgbench_accounts" "host=localhost port=9999 user=pgpool password=pass dbname=bench_parallel" # Giant record set is returned here. 由于后端节点在RDS上,所以需要md5authentication。 在非function查询的情况下,身份validation看起来工作正常,可以通过用不正确的密码replace上面的正确密码来看到。 预期的身份validation失败: psql -c "SELECT aid FROM pgbench_accounts" "host=localhost port=9999 user=pgpool password=notmypass dbname=bench_parallel" psql: FATAL: password authentication failed for user "pgpool" 这是让我感到困惑的部分 – 如果我把一个像min()或count()这样的函数放到查询中,我得到了身份validation问题: psql -c "SELECT […]

Vmware上的CentOS 6.5不能ping主机

我已经在VMware Workstation 10上安装了所有在Windows 7 64bit上运行的CentOS 6.5,互联网工作正常,但是我无法从CentOS副主机ping主机,它告诉我Destination Host Unreachable,我正在使用桥接模式,我可以平谷歌和默认网关罚款,我想解决这个ping问题,所以我可以使用Windows中的pgAdmin,你认为是什么造成这个问题?

如何从Postgres 9.1升级到9.3,在升级过程中允许读取访问

"PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit"在Debian 6.0中工作Squeeze它包含12个数据库,由100个访问互联网用户。 使用md5密码authentication方法。 所有自定义格式的数据库压缩备份文件的总大小是10 GB。 我需要时间范围types,所以我正在寻找一种方法来升级到9.3或9.4 我在同一台服务器上安装Postgers 9.3并行。 如何将数据库,用户名和密码从9.1移动到9.3? 我find了指示 http://no0p.github.io/postgresql/2014/03/29/upgrading-pg-ubuntu.html 这将在Debian Squeeze中工作吗? 这使用pg_upgrade,在升级过程中需要访问9.1数据库。 如何升级,以便在升级过程中可以进行旧的数据库读取访问? 是可以使用旧的psql创buildpipe道到新的psql或其他想法? 数据库访问可以在晚上切换一段时间,这是有帮助的。

网站性能不佳 – 高CPU和磁盘使用率

在过去的几天里,我的网站performance一直很不好,查询花了很多时间来执行。 我的CPU使用率在本周四次达到100%左右。 这里是top的输出 top – 00:08:03 up 3 days, 21:47, 2 users, load average: 6.06, 1.95, 0.84 Tasks: 92 total, 2 running, 90 sleeping, 0 stopped, 0 zombie %Cpu(s): 86.1 us, 12.9 sy, 0.0 ni, 0.0 id, 0.0 wa, 1.0 hi, 0.0 si, 0.0 st KiB Mem: 1017948 total, 773520 used, 244428 free, 107200 buffers […]

Ubuntu 2节点群集Postgresql 9.3与起搏器和stream式复制

我正在尝试使用Postresql 9.3和Streaming Replication来设置2节点群集。 stream式复制已成功configuration。 师父正在收听,正在发送给奴隶。 我可以通过使用rsync更新数据目录创build触发文件和故障恢复主服务器来手动执行故障转移,将旧的主服务器再次作为从服务器升级为故障转移。 在这一点上,一切工作正常。 现在我想用起搏器设置虚拟(浮动)IP的自动故障转移。 主设备总是要让VIP接受客户端连接进行读写操作。 如果作为master的postgresql服务closures,故障转移应该触发一个浮动IP应该移到slave(新的master) 我尝试通过以下configuration指南https://github.com/t-matsuo/resource-agents/wiki/Resource-Agent-for-PostgreSQL-9.1-streaming-replication https://github.com/t-matsuo/资源代理/维基,但不幸的是,postgres不是由起搏器启动的,只有vip-master被分配给首先启动的主机。 我的心脏起搏器configuration是: property \ no-quorum-policy="ignore" \ stonith-enabled="false" \ crmd-transition-delay="0s" primitive pgsql ocf:heartbeat:pgsql \ params \ pgctl="/usr/bin/pg_ctlcluster" \ psql="/usr/bin/psql" \ pgdata="/database/postgresql/9.3/main/" \ start_opt="-p 5432" \ rep_mode="sync" \ node_list="robin marshall" \ restore_command="" \ primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" \ master_ip="172.16.1.1" \ stop_escalate="0" \ op start timeout="60s" interval="0s" on-fail="restart" […]

autopostgresqlbackup postgresvalidation错误

我想在ec2实例的ubuntu上使用autopostgresqlbackup。 我可以在命令行上使用psqllogin,它正在拾取我的.pgpass文件,一切都很正常。 当我运行“sudo autopostgresqlbackup”它只是挂起,我的错误文件提到它正在等待postgres用户的密码。 这是我的configuration文件和错误日志。 我正在使用ubuntu用户,并且我的/home/ubuntu/.pgpass文件设置了0600权限。 我猜这是与我login的用户以及在SU_USERNAMEconfiguration行中指定的用户有关。 我应该设置SU_USERNAME = ubuntu吗? 任何帮助在这里将不胜感激。 谢谢。 在/ etc /默认/ autopostgresqlbackup # =============================== # === Debian specific options === #================================ # By default, on Debian systems, only 'postgres' user # is allowed to access PostgreSQL databases without password. # In order to dump databases we need to run pg_dump/psql # […]

无法在主从设置中的Bucardo中执行复制

当我试图执行从主服务器到服务器的复制时,复制能够在主服务器上运行,但从服务器数据库中的表没有收到并应用更改。 根据Bucardo邮件列表,要查看执行同步所需的模式,请键入/dn命令以显示它。 在主方面,命令显示了这一点: postgres=#\dn List of schemas Name | Owner bucardo | bucardo public | postgres test | postgres testschema | postgres 然而在奴隶方面: postgres=#\dn List of schemas Name | Owner public | postgres 另一个build议是把数据插入到主端的表中,看看从端有没有改变,但没有改变。 在主服务器上运行bucardo status时,会显示: PID of Bucardo MCP: 1852 Name State Last Good Time Last I/D Last Bad ========================================================================= Example Good Dec 10, […]