在需要并行并行运行多个pg_restore任务并且需要将其中一些引导到SSD上的表空间而将其他一些引导到SSD上的表空间中的情况下,是否存在某种巧妙的方法来强制对pg_restore任务使用特定表空间标准磁盘?
我们得到了这个用例-每天晚上,我们需要将每日分区复制到新的仓库数据库中。当前使用标准的pg_dump / pg_restore(出于内部策略原因,目前尚无法进行逻辑复制,尽管这是非常可取的)。
更多pg_restore任务在目标数据库上并行运行,因此我需要为特定任务设置特定的目标表空间-因此,全局“ default_tablespace”设置无济于事。我也无法重新配置源数据库以直接在转储中具有适当的表空间,更不用说随着仓库数据库的增长,我将需要不时更改目标表空间。
最初,我认为PG环境变量“ PGTARGETSESSIONATTRS”可能会帮助我为pg_restore的特定会话设置“ default_tablespace”,但看起来该变量无法做到。
数据库是PG 10(源)和PG 11(目标)。
答案 0 :(得分:0)
根据来自@a_horse_with_no_name的评论,我测试了此命令序列,该命令可以满足我的需要: