我目前有两个数据库在生产中运行。一个是主人,另一个是奴隶。我使用流复制。我正在考虑使用 pg_dump 并将文件发送到亚马逊 S3。我已经知道如何执行所有这些后勤工作。但是,我似乎无法运行 pg_dump。
当我运行此命令时:
pgdump -U django_login django_db -Fc > db.backup
Run Code Online (Sandbox Code Playgroud)
我收到以下回复:
No command 'pgdump' found, did you mean:
Command 'pg_dump' from package 'postgresql-client-common' (main)
Run Code Online (Sandbox Code Playgroud)
所以我检查了我是否安装了 postgresql-client-common。为了检查,我跑了:
~$ sudo apt-get install postgresql-client-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
postgresql-client-common is already the newest version.
postgresql-client-common set to manually installed.
Run Code Online (Sandbox Code Playgroud)
所以我知道我已经安装了它。我再次运行命令:
pgdump -U django_login django_db -Fc > db.backup
Run Code Online (Sandbox Code Playgroud)
并收到了同样的回应。我目前正在运行 postgresql 9.1。我该怎么做才能解决这个问题?
今天早上,一台运行 Postgres 8.4.x 服务器的 Windows 7 机器停止正常工作。错误非常奇怪:
事件查看器,其中大部分都存在多次,并且在启动或尝试启动/停止服务器时发生。
PostgreSQL - Error - Se agotó el tiempo de espera al inicio del servidor
2013-12-03 21:33:32 GMT FATAL: el archivo de bloqueo «postmaster.pid» ya existe
2013-12-03 21:33:32 GMT HINT: ¿Hay otro postmaster (PID 2952) corriendo en el directorio de datos «C:/Program Files (x86)/PostgreSQL/8.4/data»?
pg_ctl: no se pudo encontrar el ejecutable postgres
2013-12-03 18:46:34 CET FATAL: no se pudo crear ningún socket …Run Code Online (Sandbox Code Playgroud) 我想为 AWS (PostGreSQL) 中的所有 RDS 实例创建一个只读帐户。我首先创建了一个 IAM 组并附加了 AmazonRDSReadOnlyAccess 策略。我创建了一个新的 IAM 用户并将他放在这个组中。我无法使用这个新的只读用户连接到我们的数据库(使用我们的管理员帐户成功测试就好了)。我现在意识到我在数据库本身中没有只读用户。这向我提出了三个问题:
我正在尝试设置与运行 postgresql 的服务器的远程数据库连接。我已经在使用 LE 证书的远程服务器上运行 nginx。我的问题是 postgresql 证书是否需要像让我们加密这样的 CA 签名,或者自签名证书是否就足够了。我试图了解对我的数据库连接使用自签名证书时的安全风险是什么。
我已经在 Centos 7 上安装了 PostgreSQL 9.3。安装后我可以启动系统服务并登录到 psql。我想将 PGDATA 文件夹移动到另一个分区,所以我尝试了几种方法来更改 DATADIR。
我将/var/lib/pgsql/data文件夹复制到/postgresdata/data,然后创建了一个符号链接:
systemctl stop postgresql
cp -rp /var/lib/pgsql/data /postgresdata/data
mv /var/lib/pgsql/data /var/lib/pgsql/data.old
ln -s /postgresdata/data /var/lib/pgsql/data
systemctl start postgresql
Run Code Online (Sandbox Code Playgroud)
该文件夹/postgresdata/设置为 700,所有者为 postgres。
这会导致以下错误:
postgresql.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status postgresql.service”和“journalctl -xe”。
我也尝试了其他两种方法,都导致相同的错误:
方法一:更改postgresql.conf
data_directory = '/postgresdata/data'
Run Code Online (Sandbox Code Playgroud)
方法二:更改系统服务设置:
vim /usr/lib/systemd/system/postgresql.service
Run Code Online (Sandbox Code Playgroud)
然后改变:
# Environment=PGDATA=/var/lib/pgsql/data
Environment=PGDATA=/postgresdata/data
Run Code Online (Sandbox Code Playgroud)
两者都会导致相同的错误。
当我跑步时,journalctl -xe我得到了这个:
-- Unit postgresql.service has begun starting up.
apr 25 15:08:03 srv001 pg_ctl[15517]: FATAL: could not open file "/postgresdata/data/PG_VERSION": Permission denied …Run Code Online (Sandbox Code Playgroud) 我有一个在 CentOS 7.3 上运行的 PostgreSQL 9.4 数据库。该数据库相当普通,通过https://yum.postgresql.org/安装。
我正在尝试备份此数据库,并在另一台主机上测试恢复。如果我尝试使用 进行恢复--set ON_ERROR_STOP=on,则恢复会失败。为什么是这样?
我的备份过程基于https://www.postgresql.org/docs/9.4/static/backup-dump.html上的建议。在全新安装 Postgres(其中包括 initdb)后,我使用以下命令。
pg_dumpall --clean | gzip | split --suffix-length=4 --numeric-suffixes --additional-suffix=.split.gz --bytes 1G - postgres.pg_dumpall.
Run Code Online (Sandbox Code Playgroud)
这会产生一系列如下文件:
[postgres@db1 backups]$ ls
postgres.pg_dumpall.0000.split.gz
postgres.pg_dumpall.0001.split.gz
...
postgres.pg_dumpall.0040.split.gz
[postgres@db1 backups]$
Run Code Online (Sandbox Code Playgroud)
为了恢复,我想我可以使用cat,gunzip和psql --set ON_ERROR_STOP=on。但这不起作用:
[postgres@db2 ~]$ cat postgres.pg_dumpall.*.split.gz | gunzip | psql --set ON_ERROR_STOP=on postgres
SET
SET
SET
ERROR: database "foo" does not exist
[postgres@db2 ~]$
Run Code Online (Sandbox Code Playgroud)
如果我删除 ,该命令将完成--set ON_ERROR_STOP=on,但我不清楚备份存档是否有效。
我们今天部署了我们的软件更新(3 个 EC2 实例)并迁移到了我们的 RDS(db.t2.medium、Postgres),这将一列添加到了大约 15 行的表中。在迁移之前,我们的 CPU 使用率约为“2”。迁移后,CPU 使用率增加到“60”。数据库重启后,它下降了,但又上升了。
作为旁注:迁移后,我们尝试使用 GUI 进行连接,但它在 SSL 验证时挂起。我们重新启动 GUI,它再次工作。
对此有何建议?这是当前指标的屏幕截图。您可以清楚地看到使用量的增加。
我们目前使用的是 PostgreSQL 9.6.2!
我正在努力寻找一些有用的指南,为我指明正确的方向。我有一个小数据库(~100MB,最大的表有 800k 条记录),但是基于几个组合连接的数据获取似乎很慢,尽管 EXPLAIN 中的语句看起来很好(主要是索引使用,部分是 Seq Scan)。
请告诉我您认为哪些指南有用。
非常感谢!
简单的问题 - 仅使用硬件来提高数据库性能的最佳方法是什么?
在这种情况下,一次有 1-4 个进程会定期查询一些非常非常大的表。
我们正在执行数以千计的查询,其中许多需要 +10 秒才能返回,而且所有查询都只返回少量数据。这向我表明 HDD 寻道时间是瓶颈。
作为此过程的一部分,我们还需要根据原始数据表创建汇总表。其中一个查询可能需要数小时才能运行。
请假设所有软件/数据库优化都已经完成。
假设这是因为我们花了一些时间进行代码/数据库优化,并准备在硬件上花费一些预算。我知道更多的软件/数据库优化是可能的,但这不是当前的重点。
我们目前没有用完 ram,但可能会分配更多给 DB。
当前平台是windows,这可能会根据硬件解决方案而改变。
数据库是 postres 8.4。
谢谢。
Postgres 没有用于 Windows 服务器的 64 位二进制文件
引用 “因为通常没有理由在 Windows 上使用 shared_buffers > 256 - 512MB 运行,所以没有很大的动力去投入 64 位端口所需的努力”
这台服务器有 8Gb 内存,这个数字可能会增加到 12Gb。我们打算将几乎所有的内存分配给 postgres。对于我正在做的事情,我可以很高兴地在没有 UI 的情况下进行。
postgresql ×10
windows ×2
64-bit ×1
amazon-rds ×1
backup ×1
centos7 ×1
database ×1
hardware ×1
lets-encrypt ×1
linux ×1
migration ×1
rds ×1
ssl ×1