标签: postgresql-14

BEGIN ATOMIC 在 PostgreSQL SQL 函数/过程中意味着什么?

在 PG 14 的文档中,在 参考资料CREATE FUNCTION部分中,手册指出函数的主体LANGUAGE SQL可以是单个语句:

RETURN expression
Run Code Online (Sandbox Code Playgroud)

或一个块:

BEGIN ATOMIC
statement;
statement;
...
statement;
END
Run Code Online (Sandbox Code Playgroud)

没有对该块的语义给出任何解释。这看起来类似于BEGIN ... END;PL/pgSQL 中的块,但似乎有些不同。

在 内 或 外 写一组语句有什么区别BEGIN ATOMIC ... END?什么时候需要使用这样的块?关键字是ATOMIC强制的吗?

postgresql functions postgresql-14

18
推荐指数
1
解决办法
8366
查看次数

使用 ALTER SYSTEM 从命令行设置 PostgreSQL 配置

我需要编写一个 shell/bash 脚本来自动更改一些 PostgreSQL 配置。

这是我写的命令:

sudo -u postgres psql -U postgres -d postgres -c "
ALTER SYSTEM SET listen_addresses = '127.0.0.1';
ALTER SYSTEM SET max_connections = '200';
ALTER SYSTEM SET shared_buffers = '24GB';
ALTER SYSTEM SET work_mem = '128MB';
...
"
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误:

ERROR:  ALTER SYSTEM cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个错误?

postgresql psql postgresql-14

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

如果PostgreSQL数据库或服务器异常关闭,脏数据会怎样?

假设我的 PostgreSQL 实例突然异常停止,并且数据是脏的并且没有保存在 RAM 或 WAL 中。那样的话会发生什么?

我可以从哪里恢复这些数据?如果服务器也关闭,在这种情况下脏数据会发生什么?

是否有任何单独的文件来存储脏数据以进行恢复?

postgresql database-design postgresql-performance postgresql-13 postgresql-14

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

使用逻辑复制升级 Postgres 主要版本

我们考虑了一些选项来将我们的 Postgres 服务器从当前 ( 10) 版本升级到最新 ( 14) 版本。我们决定不在主服务器上做任何事情 - 因为我们需要使用链接选项(所以就地,而不是复制),并且如果我们在新的 postgres 服务器启动后看到问题,我们无法回滚。我们认为首先进行复制会更安全。

pg_upgrade因此,我们计划使用复制来进行升级。这是我们到目前为止的计划:

  1. 在主和复制之间设置逻辑复制(因此从当前的流式复制更改)
  2. 复制完成并且它们同步后,停止复制 postgres 服务器 - 运行 Postgres 10。
  3. 执行pg_upgrade复制,然后启动它(逻辑复制将继续)
  4. 复制更新后,将复制切换到主复制,并将主复制切换到复制。
  5. 现在,所有客户端都将连接到 Postgres 14 上的复制
  6. 对新的复制\旧的主数据库执行相同的步骤(停止、pg_upgrade、启动,最后再次切换回来)

在继续之前我有一些问题:

  1. 是否可以从升级前的机制转移streaming replicationlogical replication升级前的机制?在这样做之前有什么需要考虑的吗?
  2. 我们正在考虑即使在升级后也保持复制机制的逻辑性。这是可取的吗?
  3. 该操作预计需要多长时间才能pg_upgrade完成?我知道这取决于各种参数,但是根据数据大小约为 600 GB 的事实进行粗略估计吗?由于这是复制所需的停机时间 - 所以没有备份。
  4. 这是一个好的策略吗?还是有更好的(安全、停机时间最短)选择?

在继续升级之前,请寻求有关这些问题的一些指导。

postgresql upgrade master-slave-replication postgresql-14

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