Database cluster binary compatibility accross CPU platforms

Started by Aleš Zelenýover 5 years ago3 messagesgeneral
Jump to latest
#1Aleš Zelený
zeleny.ales@gmail.com

Hello,

is it supported to restore binary backup (pg_basebackup) taken on an amd64
platform on arm64 while using the same PostgreSQL version?

I'd like to know, whether there is binary file compatibility to save time
needed for dump & restore migration scenario or all the complexity of using
logical replication to migrate databases already utilizing logical
replication.

Kind regards Ales Zeleny

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Aleš Zelený (#1)
Re: Database cluster binary compatibility accross CPU platforms

=?UTF-8?B?QWxlxaEgWmVsZW7DvQ==?= <zeleny.ales@gmail.com> writes:

is it supported to restore binary backup (pg_basebackup) taken on an amd64
platform on arm64 while using the same PostgreSQL version?

I wouldn't say it's "supported", but you might get away with it,
if the endianness and datatype alignment rules are the same.
The database does do some basic checks on that using known values
stored in the pg_control file, so it's likely you'd find out
immediately at startup if any of those things don't match.

What's significantly more risky, and which we do *not* have good
checks for, is that unless these are different builds of the same
version of the same operating system, the two platforms may not sort
strings the same way; resulting in all your text indexes being
corrupt. You can recover from that by reindexing, but it's hardly
a painless transition.

regards, tom lane

#3Aleš Zelený
zeleny.ales@gmail.com
In reply to: Tom Lane (#2)
Re: Database cluster binary compatibility accross CPU platforms

Thanks for the explanation!
We are still not using ICU, so the reindex (endians - based on what I've
found about Graviton ARM64 cpu are same, but no information about datatype
alignment) will be a pain, so if we really opt for the platform we can give
it a try, but generally I'll expect restoring database from pg_dump taken
backup.

Kind regards Ales Zeleny

čt 27. 8. 2020 v 1:33 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:

Show quoted text

=?UTF-8?B?QWxlxaEgWmVsZW7DvQ==?= <zeleny.ales@gmail.com> writes:

is it supported to restore binary backup (pg_basebackup) taken on an

amd64

platform on arm64 while using the same PostgreSQL version?

I wouldn't say it's "supported", but you might get away with it,
if the endianness and datatype alignment rules are the same.
The database does do some basic checks on that using known values
stored in the pg_control file, so it's likely you'd find out
immediately at startup if any of those things don't match.

What's significantly more risky, and which we do *not* have good
checks for, is that unless these are different builds of the same
version of the same operating system, the two platforms may not sort
strings the same way; resulting in all your text indexes being
corrupt. You can recover from that by reindexing, but it's hardly
a painless transition.

regards, tom lane