Converting WAL to SQL

Started by rajesh singarapuabout 4 years ago10 messages
#1rajesh singarapu
rajesh.rs0541@gmail.com

Hi Hackers,

I am wondering if we have a mechanism to convert WAL records to SQL
statements.

I am able to use logical decoders like wal2json or test_decoding for
converting WAL to readable format, but I am looking for a way to convert
WAL to sql statements.

Thanks
Rajesh

#2Peter Eisentraut
peter.eisentraut@enterprisedb.com
In reply to: rajesh singarapu (#1)
Re: Converting WAL to SQL

On 29.12.21 07:18, rajesh singarapu wrote:

I am wondering if we have a mechanism to convert WAL records to SQL
statements.

I am able to use logical decoders like wal2json or test_decoding for
converting WAL to readable format, but I am looking for a way to convert
WAL to sql statements.

Using pglogical in SPI mode has such a logic.

#3Fabrízio de Royes Mello
fabriziomello@gmail.com
In reply to: rajesh singarapu (#1)
Re: Converting WAL to SQL

On Wed, 29 Dec 2021 at 03:18 rajesh singarapu <rajesh.rs0541@gmail.com>
wrote:

Hi Hackers,

I am wondering if we have a mechanism to convert WAL records to SQL
statements.

I am able to use logical decoders like wal2json or test_decoding for
converting WAL to readable format, but I am looking for a way to convert
WAL to sql statements.

Try this:
https://github.com/michaelpq/pg_plugins/tree/main/decoder_raw

--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

#4Michael Paquier
michael@paquier.xyz
In reply to: Fabrízio de Royes Mello (#3)
Re: Converting WAL to SQL

On Wed, Dec 29, 2021 at 08:50:23AM -0300, Fabrízio de Royes Mello wrote:

Try this:
https://github.com/michaelpq/pg_plugins/tree/main/decoder_raw

You may want to be careful with this, and I don't know if anybody is
using that for serious cases so some spots may have been missed.
--
Michael

#5Fabrízio de Royes Mello
fabriziomello@gmail.com
In reply to: Michael Paquier (#4)
Re: Converting WAL to SQL

On Tue, Jan 4, 2022 at 9:22 AM Michael Paquier <michael@paquier.xyz> wrote:

On Wed, Dec 29, 2021 at 08:50:23AM -0300, Fabrízio de Royes Mello wrote:

Try this:
https://github.com/michaelpq/pg_plugins/tree/main/decoder_raw

You may want to be careful with this, and I don't know if anybody is
using that for serious cases so some spots may have been missed.

I used it in the past during a major upgrade process from 9.2 to 9.6.

What we did was decode the 9.6 wal files and apply transactions to the
old 9.2 to keep it in sync with the new promoted version. This was our
"rollback" strategy if something went wrong with the new 9.6 version.

Regards,

--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

#6Michael Paquier
michael@paquier.xyz
In reply to: Fabrízio de Royes Mello (#5)
Re: Converting WAL to SQL

On Tue, Jan 04, 2022 at 10:47:47AM -0300, Fabrízio de Royes Mello wrote:

I used it in the past during a major upgrade process from 9.2 to 9.6.

What we did was decode the 9.6 wal files and apply transactions to the
old 9.2 to keep it in sync with the new promoted version. This was our
"rollback" strategy if something went wrong with the new 9.6 version.

Oh, cool. Thanks for the feedback.
--
Michael

#7Bruce Momjian
bruce@momjian.us
In reply to: Fabrízio de Royes Mello (#5)
Re: Converting WAL to SQL

On Tue, Jan 4, 2022 at 10:47:47AM -0300, Fabrízio de Royes Mello wrote:

On Tue, Jan 4, 2022 at 9:22 AM Michael Paquier <michael@paquier.xyz> wrote:

On Wed, Dec 29, 2021 at 08:50:23AM -0300, Fabrízio de Royes Mello wrote:

Try this:
https://github.com/michaelpq/pg_plugins/tree/main/decoder_raw

You may want to be careful with this, and I don't know if anybody is
using that for serious cases so some spots may have been missed.

I used it in the past during a major upgrade process from 9.2 to 9.6. 

What we did was decode the 9.6 wal files and apply transactions to the
old 9.2 to keep it in sync with the new promoted version. This was our
"rollback" strategy if something went wrong with the new 9.6 version.

How did you deal with the issue that SQL isn't granular enough (vs.
row-level changes) to reproduce the result reliably, as outlined here?

https://momjian.us/main/blogs/pgblog/2019.html#March_6_2019

--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com

If only the physical world exists, free will is an illusion.

#8Julien Rouhaud
rjuju123@gmail.com
In reply to: Bruce Momjian (#7)
Re: Converting WAL to SQL

On Thu, Jan 6, 2022 at 12:19 AM Bruce Momjian <bruce@momjian.us> wrote:

On Tue, Jan 4, 2022 at 10:47:47AM -0300, Fabrízio de Royes Mello wrote:

What we did was decode the 9.6 wal files and apply transactions to the
old 9.2 to keep it in sync with the new promoted version. This was our
"rollback" strategy if something went wrong with the new 9.6 version.

How did you deal with the issue that SQL isn't granular enough (vs.
row-level changes) to reproduce the result reliably, as outlined here?

This is a logical decoding plugin, so it's SQL containing decoded
row-level changes. It will behave the same as a
publication/suscription (apart from being far less performant, due to
being plain SQL of course).

#9Fabrízio de Royes Mello
fabriziomello@gmail.com
In reply to: Julien Rouhaud (#8)
Re: Converting WAL to SQL

On Wed, Jan 5, 2022 at 2:19 PM Julien Rouhaud <rjuju123@gmail.com> wrote:

On Thu, Jan 6, 2022 at 12:19 AM Bruce Momjian <bruce@momjian.us> wrote:

On Tue, Jan 4, 2022 at 10:47:47AM -0300, Fabrízio de Royes Mello wrote:

What we did was decode the 9.6 wal files and apply transactions to the
old 9.2 to keep it in sync with the new promoted version. This was our
"rollback" strategy if something went wrong with the new 9.6 version.

How did you deal with the issue that SQL isn't granular enough (vs.
row-level changes) to reproduce the result reliably, as outlined here?

This is a logical decoding plugin, so it's SQL containing decoded
row-level changes. It will behave the same as a
publication/suscription (apart from being far less performant, due to
being plain SQL of course).

Exactly!

--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

#10rajesh singarapu
rajesh.rs0541@gmail.com
In reply to: Fabrízio de Royes Mello (#9)
Re: Converting WAL to SQL

Thanks much for your suggestions,
I am exploring logical decoding because I have two different platforms and
versions as well.
So my best bet is logical decoding, but I am also wondering if somebody has
done replication/migration from windows to linux or vise-a-versa at
physical level with some tooling.

thanks
Rajesh

On Thu, Jan 6, 2022 at 12:21 AM Fabrízio de Royes Mello <
fabriziomello@gmail.com> wrote:

Show quoted text

On Wed, Jan 5, 2022 at 2:19 PM Julien Rouhaud <rjuju123@gmail.com> wrote:

On Thu, Jan 6, 2022 at 12:19 AM Bruce Momjian <bruce@momjian.us> wrote:

On Tue, Jan 4, 2022 at 10:47:47AM -0300, Fabrízio de Royes Mello

wrote:

What we did was decode the 9.6 wal files and apply transactions to

the

old 9.2 to keep it in sync with the new promoted version. This was

our

"rollback" strategy if something went wrong with the new 9.6 version.

How did you deal with the issue that SQL isn't granular enough (vs.
row-level changes) to reproduce the result reliably, as outlined here?

This is a logical decoding plugin, so it's SQL containing decoded
row-level changes. It will behave the same as a
publication/suscription (apart from being far less performant, due to
being plain SQL of course).

Exactly!

--
Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento