On Wed, 7 Apr 2021 at 07:48, Ruben Fitó <r.f...@ubiquat.com> wrote:
> On Wed, Apr 07, 2021 at 08:50:00AM +0200, Ruben Fitó wrote:
> > Tenemos una infraestructura de bases de datos donde disponemos de una
> > replicación lógica en cascada:
> >
> > [master] -> LR -> [esclavo 1] -> LR -> [esclavo 2]
> >
> > Ahora nos vemos en la necesidad de hacer un ALTER COLUMN en una de las
> > tablas.
> >
> > Cómo deberíamos proceder para que no se pierdan datos y no se pare la
> > sincronización?

Detener los DML (INSERT/UPDATE/DELETE)? si, por favor.

estás usando pglogical o replicación lógica nativa? si es pglogical
podrías usar pglogical.replicate_ddl_command() para hacer el cambio, esa
función debería encargarse de hacer el cambio en todos los nodos.

Si es replicación lógica nativa, entonces si haz los cambios como
sugieres.

> 
> Se me olvidó decir que el ALTER COLUMN es para hacer un cambio de tipo de
> dato de una columna.
> 
> El cambio deseado sería pasar de un  numeric(10, 0) a varchar(21).
> 

por qué varchar(21) y no text? cuando pones estas restricciones de
tamaño arbitrarias es posible que luego te veas nuevamente cambiando el
tipo de datos, ya tuviste que pasar de numeric(10,0) a varchar(21)! yo
me aseguraría de tenerlo bien esta vez... o simplemente cambiar a text y
agregar un constraint check (char_length(campo)=21)

> 
> All information contained in this document and any attachments are
> CONFIDENTIAL and protected under trade secret laws. If you receive this
> message by mistake, please delete it and notify it immediately to the
> sender.

Esta es una lista pública, al enviar un correo a esta lista aceptaste
que la información que enviaste se enviará a todos los suscriptores
actuales de la lista y que permanecerá pública en múltiples sitios de
archivado en internet, principalmente pero no limitado a:
archi...@postgresql.org

-- 
Jaime Casanova
Director de Servicios Profesionales
SystemGuards - Consultores de PostgreSQL


Reply via email to