标签: postgresql

如何将数据库从本地迁移到远程服务器?

我有一个我创建的 postgres 数据库,需要远程部署。从在线阅读我了解到,要做到这一点,我需要修改以下文件:

  1. pg_hba.conf

  2. 配置文件

从我读到的我需要修改它们并以某种方式将它们添加到我的数据库中?

我的问题是:

  1. 如何修改这两个文件以在线部署数据库?我阅读了文档,但它对我的理解来说太复杂了。(即需要什么以及为什么?)

  2. 如何将它们在线添加到我的数据库中?我的想法是创建本地数据库的数据库转储,然后将转储推送到远程计算机上的新数据库上,但这两个文件如何放入其中?应该放在哪里?我找不到这方面的详细信息。

笔记。我以前从未做过分布式编程,我的问题可能很幼稚,但我真的不知道如何进行。

我使用的是 osX 操作系统,但将在远程计算机上使用 linux。

postgresql

4
推荐指数
1
解决办法
4837
查看次数

什么时候使用存储过程/用户定义函数?

我对 SP(存储过程)和 UDF(用户定义函数)的使用感到困惑。通常,也可以在数据库之外的程序中编写代码。

是否有任何一般建议来决定何时使用它们?

postgresql stored-procedures functions

4
推荐指数
1
解决办法
9419
查看次数

我在哪里可以看到 pgAdmin III 中表的确切行数?

我在哪里可以看到 pgAdmin III 中表的确切行数?

我知道在哪里可以找到近似的行数:

在此处输入图片说明

我也知道我可以SELECT COUNT(*) FROM my_table。但是我想知道是否可以在 pgAdmin III 的 GUI 中的某处找到确切的行数,就像我们可以查询前 100 行一样。

在此处输入图片说明

postgresql pgadmin

4
推荐指数
1
解决办法
6031
查看次数

如何在致命错误后恢复 Postgres 复制从站

在 4 个 Debian 8 Jessie 服务器上,我有 PostgreSQL 9.4.3 master + 3 slaves。在 master 上的大量数据更改后,slave 日志显示此错误:

LOG: started streaming WAL from primary at 182/0 on timeline 1 FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000018200000000 has already been removed

我需要哪些步骤来恢复/重建从站?

postgresql replication

4
推荐指数
1
解决办法
9151
查看次数

使用 GROUP BY 和 HAVING 时如何避免调用函数两次?

我有一个带有父子关系表的 PostgreSQL 数据库 (9.2)。我有一个查询,用于查找具有多个父节点的节点。

以下查询有效并返回正确的结果:

SELECT node,parents FROM
(
  SELECT nr.child AS node, COUNT(nr.parent) AS parents 
  FROM node_relation nr 
  GROUP BY nr.child
) AS count WHERE parents > 1;
Run Code Online (Sandbox Code Playgroud)

结果集:

 node   | parents
--------+---------
 n21174 |       2
 n8635  |       2
(2 rows)
Run Code Online (Sandbox Code Playgroud)

表定义为:

            Table "public.node_relation"
   Column    |         Type          |   Modifiers
-------------+-----------------------+---------------
 child       | character varying(50) | not null
 parent      | character varying(50) | not null
Indexes:
    "node_relation_pkey" PRIMARY KEY, btree (child, parent)
Run Code Online (Sandbox Code Playgroud)

我重新编写了查询以不使用子选择:

SELECT child AS node, COUNT(parent) AS parents …
Run Code Online (Sandbox Code Playgroud)

postgresql performance group-by postgresql-9.2 query-performance

4
推荐指数
1
解决办法
1722
查看次数

PostgreSQL:剩余的连接槽是为非复制超级用户连接保留的,已经有太多客户端

我们有使用GolangPostgreSQLsqlx(适配器、连接池)的Web 应用程序,每个请求需要 1 到 8 个查询,有时 1 个事务需要 5-8 个选择和 5-8 个插入查询。

我们已经将 PostgreSQL 设置max_connections为 1024,然后是 4096,但是它开始交换,所以我们将它们减少到 64(这是交换前的限制)。

我们的 RAM 是 2GB,我们将 PostgreSQL 配置working_mem为 16MB、temp_buffers8MB、shared_buffers800MB、effective_cache_size 1536MB(这个配置根本不交换)。

每天 00:00 到 02:35 每秒大约有 18 个请求,每秒大约有 8 个错误,此时每小时只有 10 个事务成功,其他事务失败,错误消息如下:

  • 剩余的连接槽保留用于非复制超级用户连接
  • 已经有太多客户了

除了缓存只读页面(因为页面每分钟可以更新10次左右)或升级机器之外,如何克服这个问题?

postgresql scalability

4
推荐指数
1
解决办法
2万
查看次数

从另一个函数创建一个函数

是否可以从另一个 plpgsql 函数创建一个新函数?像这样的东西:

CREATE OR REPLACE FUNCTION func_test()
RETURNS VOID AS
$BODY$
BEGIN
  CREATE OR REPLACE FUNCTION func_test2()
  RETURNS INT AS
  BEGIN
  $$
    SELECT 1;
  $$
  END
END
$BODY$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我得到:

ERROR:  unexpected end of function definition at end of input
LINE 13: $BODY$`
Run Code Online (Sandbox Code Playgroud)

postgresql ddl plpgsql functions

4
推荐指数
1
解决办法
4761
查看次数

为什么我得到旧数据?

今天我在PostgreSQL 9.5上发现了一些奇怪的东西。(我不知道这是否是因为测试版。)当我想获取数据时,我会从查询中获取旧的和已删除的数据。VACUUM FULL然后我做,然后我得到正确的数据(这是空的)。

我在这里错过了什么吗?PostgreSQL 返回旧数据的原因可能是什么?

注意:自动真空是ON.

postgresql concurrency transaction isolation-level postgresql-9.5

4
推荐指数
1
解决办法
1255
查看次数

将 PostgreSQL 9.4 升级到 9.5:LC_ALL 未设置

我正在尝试将我的 PostgreSQL 9.4 数据库升级到 PostgreSQL 9.5,但每次运行时sudo pg_upgradecluster 9.4 main我都会收到此错误:

Stopping old cluster...
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US.UTF-8",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Error: The locale requested by the environment is invalid.
Error: Could …
Run Code Online (Sandbox Code Playgroud)

postgresql upgrade postgresql-9.4

4
推荐指数
1
解决办法
2790
查看次数

将所有表中的所有外键重新创建为可延迟(批处理)

我想让我的数据库中的所有外键都可以延迟。但是不可能改变现有的约束。所以我需要删除并再次添加每个外键。如何自动完成?

postgresql foreign-key ddl

4
推荐指数
1
解决办法
2641
查看次数