Está en la página 1de 22

Destripando el sistema

de replicacin de
PostgreSQL 9.0
Ernesto Quiones A. - CT
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

=Ad(ertencia>
Esta c:arla es para e?plicar como "unciona por dentro el
sistema de replicacin de PostgreSQL 9.0 no para
ensear a instalar un sistema de replicacin.
@Por!ueA Lo otro lo pueden aprender le$endo el manual.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

@Que es un sistema de replicacin de .ase de datosA
En simple3 es
mantener una *da
.ase de datos
alterna con la data
id2ntica a la
principal.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

@Por!ue de.er#a tener un sistema de replicacin para mi
d.msA

Para tener un sistema tolera.le a "allas.

Para .alancear la carga de tra.aBo en di(ersos ser(idores.

Para aplicaciones de alto consumo en consultas 4C.%.6

Para tener un am.iente de prue.as o desarrollo lo mDs parecido al


am.iente de produccin.

Euc:as otras !ue se puedan imaginar F..



E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

G @Por donde empeHamosA

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

Caracter#sticas de la replicacin interna de PgSQL 9.0
Es Streaming &eplication Iot Stand.$

Jo re!uiere :ard<are especial

Jo re!uiere de ser(idores;ser(icios especiales

Jo so.recarga el ser(idor principal

Jo re!uiere de un sistema de resolucin de con"lictos 4al menos no


adicionales al !ue $a implementa la .ase de datos6

Si se ca$era la replicacin al menos tendr2 acceso de lectura

Point-%n-Time &eco(er$K es decir permite recuperar la data al tiempo


pasado mDs cercano donde esta se encuentre .ien.

-sa LAL como m2todo de cac:eK esta t2cnica permite asegurar !ue solo
las operaciones .ien realiHadas actualicen la data 4atomicidad $
dura.ilidad6.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

@Qu2 no :a$A

E1ltiples ser(idores maestros;principales

Asegurar !ue ante una "alla el ser(idor principal nunca (a a perder la data

Controlar la replicacin a ni(el de ta.las



E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

@Como "uncionaA
En simple es3

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net
Servidor primario Servidor secundario
WAL
Data Data Data Data
WAL
pg_xlog/ pg_xlog/
Conexin de
red
Traspasando
datos

El LAL es...
CDsicamente es un .u""er donde se lle(an a ca.o las
operaciones a la data $ una (eH terminada se pasan al
almacenamiento de datos principalK si algo pasara
entonces el Drea de datos permanecerD intacto solo se
perderD lo !ue esta en el LAL.
LAL genera segmentos de data de /+m. 4con"igura.le6
en arc:i(os "#sicos !ue tiene pDginas de datos de MN.
4con"igura.le6.

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

El LAL es...
typedef struct XLogRecord
{
pg_crc32 xl_crc; /* CRC for this record */
XLogRecPtr xl_prev; /* ptr to previous record in log */
r!ns!ction"d xl_xid; /* x!ct id */
uint32 xl_tot_len; /* tot!l len of entire record */
uint32 xl_len; /* tot!l len of r#gr d!t! */
uint$ xl_info; /* fl!g %its& see %elo' */
R#gr"d xl_r#id; /* resource #!n!ger for this record */
( XLogRecord;
typedef struct XLogRec)!t!
{
ch!r *d!t!; /* st!rt of r#gr d!t! to include */
uint32 len; /* length of r#gr d!t! to include */
*uffer %uffer; /* %uffer !ssoci!ted 'ith d!t!& if !ny */
%ool %uffer_std; /* %uffer h!s st!nd!rd pd_lo'er/pd_upper */
struct XLogRec)!t! *next; /* next struct in ch!in& or +,LL */
( XLogRec)!t!;
typedef struct Chec-point.t!ts)!t!
{
i#est!#p/ c-pt_st!rt_t; /* st!rt of chec-point */
i#est!#p/ c-pt_'rite_t; /* st!rt of flushing %uffers */
i#est!#p/ c-pt_sync_t; /* st!rt of fsyncs */
i#est!#p/ c-pt_sync_end_t; /* end of fsyncs */
i#est!#p/ c-pt_end_t; /* end of chec-point */
int c-pt_%ufs_'ritten; /* 0 of %uffers 'ritten */
int c-pt_segs_!dded; /* 0 of ne' xlog seg#ents cre!ted */
int c-pt_segs_re#oved; /* 0 of xlog seg#ents deleted */
int c-pt_segs_recycled; /* 0 of xlog seg#ents recycled */
( Chec-point.t!ts)!t!;
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

El LAL es...
-na (entaBa del LAL es !ue puede residir en cual!uier directorio $
podemos :acer un enlace sim.lico al directorio donde de.er#a
residir.
En caso de !ue suceda un pro.lema el LAL puede retroceder :acia
el pasado :asta el 1ltimo momento en !ue todo estu(o oN.

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

El LAL es...
LAL maneBa (arios ni(eles para especi"icar !ue tanto deseo
almacenar en este .u""er en el ni(el m#nimo solo contiene
in"ormacin para recuperar una d. en caso de paradas a.ruptas del
ser(icio.
Para realiHar la replicacin re!uerimos aumentar el ni(el de LAL
para reconstruir toda la data de una d..

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

El primer paso3 indicar donde Ocopiaremos el LALP
En los arc:i(os de con"iguracin de.emos indicar donde (amos a duplicar
nuestros LAL "iles tomaremos en cuenta !ue de.e e?istir una
comunicacin en ese "ile s$stem entre los * ser(idores.
Se puede usar JQS para elloK !uiHDs 4a1n no lo :e pro.ado6 podr#a usarse
SSIQS como una "orma mDs sencilla.
Para asegurar !ue se copiarDn todas las transacciones :aremos !ue se
mantenga un .uen numero de segmentos LAL :istoricamenteK pasar data
por red tiene una demora importante !ue de.emos tener en cuenta.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

El primer paso3 indicar donde Ocopiaremos el LALP
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net
Servidor
Principal
Servidor
Replica
NFS

SSH
Server
NFS
Client

SSHFS
client
Conexin
LAN
NFS:
!"s complicado de con#igurar
!"s r"pido por$ue #unciona a nivel
de protocolo m"s %a&o ' coordinado
con el (ernel)
*!enos seguro en la transmisin+
SS,FS:
!"s simple de con#igurar
!"s lento $ue NFS- . a /- por$ue
#unciona en capa m"s alta de tcp/ip
' %"sicamente es un SC0)
*!"s seguro en la transmisin+

El segundo paso3 reconstruir la imagen inicial de la d. en
el ser(idor de destino.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net
La ,erramienta m"s popular para
esto es 1s'nc)
1s'nc tra%a&a en %ase a deltas
%inarios para determinar los cam%ios
%it a %it entre / "r%oles de directorio
' los #iles $ue este contiene)
Se saca un c2ec(sum 3md45 de los
contenidos para veri#icar contra el
espe&o $ue es lo $ue 2a cam%iado)
6n los / anteriores pasos mencionados 2asta el momento existen algunas
venta&as- estamos limitados a replicar 7nicamente a un solo servidor- podemos
reali8ar esto en varios ' en cascada- otra es $ue podemos 2acer esto casi en
caliente)

Tercer paso3 con"igurar el ser(idor r2plica solo como
ser(idor de consulta.
Dado !ue las transacciones se maneBarDn en el ser(idor principal
en las r2plicas no podemos mDs !ue procesar consultasK am.os
ser(icios no pueden escri.ir en la Hona del LAL.
Esto es un ser(idor ITSTAJDCR
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

ITSTAJDCR
Iotstand.$ permite a PostgreSQL correr !uer$s solo de consultaK de
"orma generica el estado Iotstand.$ permite recuperarse :asta un estado
consistente a una d. mientras esta sigue atendiendo cone?iones.
En la replica podemos eBecutar estos tipos de !ueries3
Quer$ access - SELECTK CPR T
Cursor commands - DECLA&EK QETCIK CLSE
Parameters - SILK SETK &ESET
Transaction management commands
CE)%JK EJDK AC&TK STA&T T&AJSACT%J
SASEP%JTK &ELEASEK &LLCACG T SASEP%JT
ETCEPT%J .locNs and ot:er internal su.transactions
LCG TACLEK t:oug: onl$ <:en e?plicitl$ in one o" t:ese modes3
ACCESS SIA&EK &L SIA&E or &L ETCL-S%SE.
Plans and resources - P&EPA&EK ETEC-TEK DEALLCATEK D%SCA&D
Plugins and e?tensions - LAD
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

ITSTAJDCR
-no podr#a iniciar una transaccin pero el sistema nunca le asignarD un
espacio en el LAL por lo tanto nunca se gra.arD nada
Los principales pro.lemas !ue se pueden presentar son3

LocNs de Accesos E?clusi(os en el ser(idor principal !ue .lo!uean ta.las en la


r2plica.

Corrar ta.lespace en el ser(idor principal !ue crean con"lictos con !ueries !ue
los usan en la r2plica.

Corrar una .ase de datos en el ser(idor principal $ !ue en la replica e?istan


cone?iones a esta d..

Correr un "ull (acuum mientras el LAL de la r2plica a1n tiene (isi.le la "ila.

El mismo caso del anterior pero un !uer$ tiene acceso a las pDginas a .orrar.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

ITSTAJDCR
En la ma$or#a de los casos el pro.lema genera un dela$K este puede ser demasiado
grande de.ido al control de concurrencias por eBemplo3
U ser(idor r2plica lanHa un !uer$ con locN e?clusi(o so.re una ta.la
enorme !ue toma /5P
U llega un drop ta.le del ser(idor primario
U ser(idor r2plica sigue procesando el !uer$
U ser(idor primario sigue tra.aBando normalmente
U ser(idor replica tiene paradas las transacciones replicadas del ser(idor
primario :asta !ue no aca.e el !uer$ en la r2plica
U termina el !uer$ en el ser(idor r2plica $ por "in aplica los otros cam.ios
encolados
U tenemos /5P minutos de retraso F si es !ue no pasa de nue(o
Para ello es desea.le con"igurar el tiempo de espera para procesar el LAL
$ no tener este tipo de pro.lemasK los !ueries !ue so.repasen este tiempo
serDn a.ortados.
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

@Qu2 "altaA
Pues nadaK iniciar el ser(idor r2plicaK durante este inicio $
mientras la d. se OsincroniHaP con el ser(idor principal las
cone?iones de clientes no estarDn disponi.les :asta !ue se
llegue a un punto en el cual la in"ormacin $a es consistente.
Luego de este paso todo esta listoK tenemos un ser(idor de
r2plica corriendo 3-6
E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net
Toda la documentacin de esta e?posicin la pueden
encontrar a!u# 3
:ttp3;;tin$url.com;8<uugp!
en simple3
:ttp;;<<<.e!so"t.net;<iNi
4seccin Juestras Ponencias6

E! So"t Consultor#a $ Soporte E.%.&.L.
'r. El(ira )arc#a $ )arc#a *+,* -r.. Los Cipreces- Lima / 0 Per1
Tel2"onos3 45/-/6 5+,57,, 0 997*,,9*+ 0 997008957
E-mail 3 in"ormes9e!so"t.net :ttp3;;<<<.e!so"t.net
9racias por su tiempo)

También podría gustarte