Upgrading PG11 to PG17 without dump/restore

Started by Durumdara11 months ago4 messagesgeneral
Jump to latest
#1Durumdara
durumdara@gmail.com

Hello!

There is a heavily used server, with older debian, and PG11.
The data is more than 1,2 TB.
The PG_Upgrade is not possible because of lesser space and too old debian.

As we see now we have only one way to move this server.
1.) Installing a new server with actual debian.
2.) Installing the newest PG (17) on it.
3.) Stop work on one database. Dump it in the old, restore it in the new
and start the work with that. So we can move them one by one.

But this seems to be very hard, because we need to do this through an
internet connection, and the data is too much.

I have a question about it - is there a better way to do this?

For example we make a new cluster element (a read only slave) with newest
debian/PG, and use it to move the data in the background (replication).
And then we rename it to master. But I don't know if it's possible or not.
Maybe the slaves must be the same version as the master.

The main problem is that debian is too old, and we are afraid to use
PG_Upgrade because of too many version differences (11 < 17).

But maybe you have some good advice, how to do this with less complication.
Users can tolerate short downtimes, but not longer ones.

Thank you!

Best regards
dd

#2Ron
ronljohnsonjr@gmail.com
In reply to: Durumdara (#1)
Re: Upgrading PG11 to PG17 without dump/restore

On Thu, May 1, 2025 at 9:06 AM Durumdara <durumdara@gmail.com> wrote:

Hello!

There is a heavily used server, with older debian, and PG11.
The data is more than 1,2 TB.
The PG_Upgrade is not possible because of lesser space and too old debian.

As we see now we have only one way to move this server.
1.) Installing a new server with actual debian.
2.) Installing the newest PG (17) on it.
3.) Stop work on one database. Dump it in the old, restore it in the new
and start the work with that. So we can move them one by one.

But this seems to be very hard, because we need to do this through an
internet connection, and the data is too much.

The new server isn't in the same data center?

I have a question about it - is there a better way to do this?

For example we make a new cluster element (a read only slave) with newest
debian/PG, and use it to move the data in the background (replication).
And then we rename it to master. But I don't know if it's possible or not.
Maybe the slaves must be the same version as the master.

The main problem is that debian is too old, and we are afraid to use
PG_Upgrade because of too many version differences (11 < 17).

The fear is justified, since collation changes might corrupt text indices.

But maybe you have some good advice, how to do this with less complication.
Users can tolerate short downtimes, but not longer ones.

Logical replication, not physical replication. Works great if there's not
many DDL changes.

Another possibility is COPY TO / COPY FROM in chunks. This will work if
most of the 1.2TB is inserted, and then never updated or deleted. That
way, at cutover, you only need to COPY TO / COPY FROM and dump/restore
(which is really a wrapper around COPY TO / COPY FROM) and "pg_restore
--section=post-data".

You (hopefully) know your system better than we do, so you'd have to decide
which is better.

--
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Durumdara (#1)
Re: Upgrading PG11 to PG17 without dump/restore

On 5/1/25 06:06, Durumdara wrote:

Hello!

There is a heavily used server, with older debian, and PG11.
The data is more than 1,2 TB.
The PG_Upgrade is not possible because of lesser space and too old debian.

1) Specify what the old and new versions of Debian are.

2) I don't understand what the following means: "The PG_Upgrade is not
possible because of lesser space ..." .

But this seems to be very hard, because we need to do this through an
internet connection, and the data is too much.

An Internet connection can be dial up speed or direct fiber speed, you
will need to be more specific about the connection capabilities.

Best regards
dd

--
Adrian Klaver
adrian.klaver@aklaver.com

#4Justin Clift
justin@postgresql.org
In reply to: Durumdara (#1)
Re: Upgrading PG11 to PG17 without dump/restore

On 2025-05-01 23:06, Durumdara wrote:
<snip>

The PG_Upgrade is not possible because of lesser space and too old
debian.

As a data point, pg_upgrade has an option to do an in-place upgrade
which
reuses the vast majority of the data files as they are on disk, rather
than
making a copy.

It's useful for larger databases, and for situations where you don't
have
much space.

BUT, you *do* have backups don't you?

Because stuff *can* go wrong, even though it's not common. ;)

Regards and best wishes,

Justin Clift