pg_basebackup 能否用于异构平台数据同步?

Postgres 在 x86 架构下的实例是否可以通过 pg_basebackup 同步到 arm 架构? 在一个群里看到一个问题: pg_basebackup 是对 Postgres 实例数据文件在目的端的一个精确拷贝: pg_basebackup makes an exact copy of the database cluster’s files, while making sure the server is put into and out of backup mode automatically. 所以这个问题几乎等价于: x86 架构下的 pg 数据是否可以直接用 arm 架构下的 postgres 进程来管理? 群里的讨论中出现了两种对立的观点: 一种认为字节序、对齐(padding)会导致不同架构数据格式的不兼容 一种认为理论上数据库的文件格式可以独立于 cpu 架构,存储格式的字节序跟 cpu 字节序没有直接关系 从 Postgres 的实现来说,第一种观点是正确的;但如果抛开 PG,第二种观点我认为也是一定成立的。 先说第二种观点: 其实这种观点是有依据的,我举一个例子: Parquet 是一种跨平台的数据存储格式,可以在不同的 CPU 架构上使用。这是因为 Parquet 的设计不依赖特定的硬件架构或操作系统,而是通过定义数据的存储结构和元数据来实现数据的高效读写和处理,并提供相关的库对数据进行序列化和反序列化。PG 生态中读写 Parquet 的 FDW 正是通过这些库来实现的。...

June 22, 2024 · 2 min · 262 words · pg-x