我在同一台服务器(Ubuntu Lucid)上运行 PostgreSQL 8.4 和 9.0。
我通过 apt-get 安装了它们(使用默认包源的 8.4 和从https://launchpad.net/~pitti/+archive/postgresql添加 ppa 后的 9.0 )。
当我从命令行运行“createdb”之类的命令或启动“psql”shell 时,我的系统默认使用 PostgreSQL 8.4 版。
那么,如何强制这些命令使用 PostgreSQL 9.0 而不是 8.4?
如何在单个 sql 文件中调用多个 sql 文件,在 postgres 中
比如我有aaa.sql, bbb.sql, ccc.sql。
我想从 xxx.sql 执行这 3 个文件。
谁能建议我如何做到这一点。
我想为默认的 Postgresql 服务器用户设置密码,postgres. 我是通过使用做到的:
sudo -u postgres psql
# \password postgres
Run Code Online (Sandbox Code Playgroud)
我想在多台机器上做这一步,所以我想创建一个bash脚本来做同样的事情。如何在 bash 中完成此操作?
我正在使用 postgresql 9.3 运行一个正在开发的 rails 应用程序。当我今天尝试启动乘客服务器时,我得到:
PG::ConnectionBad - could not connect to server: Connection refused
Is the server running on host "localhost" (217.74.65.145) and accepting
TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
我觉得没什么大不了的,以前发生过。重启 postgres 总能解决问题。所以我跑了sudo service postgresql restart,得到:
* Restarting PostgreSQL 9.3 database server
* The PostgreSQL server failed to start. Please check the log output:
2014-06-11 10:32:41 CEST LOG: could not bind IPv4 socket: Cannot assign requested address
2014-06-11 10:32:41 CEST HINT: Is another postmaster already running on port …Run Code Online (Sandbox Code Playgroud) 我在 RDS 上有一个 postgres db 设置。它运行良好。但是,我想将其链接到位于 ELB 后面的一组自动扩展的 EC2 实例,这些实例都驻留在单个EC2 security group.
有人告诉我,可以向使用我的 EC2 安全组作为源的 RDS 实例的安全组添加规则。当我转到控制台并编辑 RDS 安全组时,我只能在源列下看到以下选项:Anywhere, Custom IP, and My IP.
在列顶部的信息弹出窗口中,它说:(To specify a security group in another AWS account (EC2-Classic only), prefix it with the account ID and a forward slash, for example: 111122223333/OtherSecurityGroup.看起来它可能只适用于 EC2-Classic)
它不允许我在源下拉框中输入。
在 RDS 部分下,我注意到他们有option groups. 但是,与我的 postgres 实例关联的默认选项组不可编辑。
因此,我尝试创建一个新组。此时我发现 postgres 没有被列为可用的engine. 我选择 mysql 只是为了看看我是否可以添加选项。看起来我可以将安全组添加到 mysql 实例,但不能添加到 postgres 实例。
postgres 实例不支持此预期选项吗?
我有一个 Postgres 服务器,它的用户dev需要一个客户端证书才能登录。我正在使用命令psql "sslmode=require user=dev host=db.prod",它给了我psql: FATAL: connection requires a valid client certificate.
我知道证书在我的服务器上的位置。我的问题是,如何将客户端证书位置指定为psql?
尽管我们将近一半的内存用于 FS 缓存,但我们还是遇到了 OOM 杀手。我们每分钟记录一次内存统计信息(如 top 所报告的),但似乎有很多可用性。
...
Mem: 15339640k total, 15268304k used, 71336k free, 3152k buffers
Swap: 0k total, 0k used, 0k free, 6608384k cached
Mem: 15339640k total, 14855280k used, 484360k free, 13748k buffers
Swap: 0k total, 0k used, 0k free, 6481852k cached
[OOM killer: postgres killed]
Mem: 15339640k total, 8212200k used, 7127440k free, 32776k buffers
Swap: 0k total, 0k used, 0k free, 2394444k cached
...
Run Code Online (Sandbox Code Playgroud)
来自系统日志的 OOM 详细信息:
...
Jun 10 05:45:25 db kernel: [11209156.840462] wal-e invoked oom-killer: …Run Code Online (Sandbox Code Playgroud) 我正在使用 docker swarm 运行 Spring Boot 应用程序,并且我使用 postgres 作为数据库。当我将它们都作为 docker 服务运行时,数据库连接会持续且随机地失败(如您在时间戳上所见),如日志所示:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
我无法理解或发现这样做的原因。我很感激任何想法。
编辑:
我们意识到,在测试应用程序时,它也会抛出这样的错误:
SQLTransientConnectionException: HikariPool-1 - 连接不可用,请求在 937517 毫秒后超时
谢谢。
当询问 Gitlab 支持如何在内部部署的 Gitlab 上进行 3TB 备份时,他们回答使用我们的工具来生成 tarball。
这在所有层面上对我来说都是错误的。这个 tarball 包含 postgres 转储、docker 图像、repo 数据、GIT LFS 等配置等等。将 TB 的静态数据与 KB 非常动态的数据一起备份是不正确的。然后是问题,我们想每小时做一次备份。
题
我真的很想从其他人那里知道他们是如何做到的,以获得一致的备份。
Linux 上的 ZFS 对我来说没问题,如果这是解决方案的一部分。
我们每晚使用 pg_dump 来制作数据库的快照。我们用一个简单的命令就做了很长时间
pg_dump -Fc database_name
这大约需要一个小时,并生成一个 30+GByte 的文件。
我们怎样才能加快速度?