Thread: Database cluster binary compatibility accross CPU platforms

Database cluster binary compatibility accross CPU platforms

From
Aleš Zelený
Date:
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

Re: Database cluster binary compatibility accross CPU platforms

From
Tom Lane
Date:
=?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



Re: Database cluster binary compatibility accross CPU platforms

From
Aleš Zelený
Date:
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:
Aleš Zelený <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