小编Leo*_*eon的帖子

如何防止 pg_dump 生成“SET default_table_access_method=heap;”?

我有一个由 PostgreSQL v12 客户端附带生成的大转储文件pg_dump,它是自定义格式而不是纯 sql 文本。服务器的版本也是 PostgreSQL v12。

现在我需要将文件重新加载到 PostgreSQL v11 服务器中,并收到一条错误消息:

unrecognized configuration parameter "default_table_access_method"
Run Code Online (Sandbox Code Playgroud)

我猜测这个参数是PG12引入的,所以PG11无法识别它,即使我使用12版本的pg_restore.

由于该文件很大且采用二进制格式,因此我无法编辑它以手动删除该行。

pg_restore test_file -f plain.sql使用测试转储文件对此进行了测试,看起来可以正常工作,并且我可以从纯 SQL 文件中删除该行。但真实的转储文件约为 30GB,从二进制文件扩展的纯 SQL 文件可能更大(工作数据库占用 300GB 磁盘空间)。

有没有办法,我可以干净地将其重新加载到 PG11 中,而无需“SET default_table_access_method = heap;”行?

其实下面这些都可以忽略,因为都是默认值:

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security …
Run Code Online (Sandbox Code Playgroud)

postgresql pg-dump downgrade pg-restore postgresql-12

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

调整 Postgresql 以写入非关键数据库

DB用于存储市场报价,因此一天丢失数据是可以接受的。

所有写入操作均通过单个连接在一天的固定时间连续执行。

每天增加的数据量约为2GB。

由于预算削减,物理存储设备不得不从SSD改为传统硬盘,写入时间从10分钟改为2小时以上。

我应该如何调整 PG 配置以进行写入,尤其是使用传统硬盘?

环境:Ubuntu服务器20.04,Postgresql-11,CPU 4核,RAM 8G,写入时不需要做任何其他事情。

postgresql optimization

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