Está en la página 1de 47

1 /47

MySQL Meetup Montevideo


8 de Marzo 2012
Alternativas de HA en MySQL
Ing. Nelson Calero, OC
nelson.!alero"g#ail.!o#

2/47
Conceptos
Disponibilidad
Porcentaje de tiempo en que un sistema/recurso est
disponible para ser usado
A = uptime/(uptime + downtime)

Medida con escala de nueves
!!" =# $ d%as& '($) *oras /a+o
!!&!" =# ,-) *oras/a+o o -$., minutos/mes
!!&!!" =# ($ minutos/a+o o -.$, minutos/mes
!!&!!!" =# ( minutos/a+o o /.-- minutos/mes

3/47
Conceptos 0 1isponibilidad

Capacidad de continuar trabajando a pesar de 2allas


(*ardware& so2tware& e3ternas).
4iendo ms 2ormales
Mean 5ime 6etween 7ailures (M567)

5iempo medio estimado entre 2allas.
Mean 5ime to 8epair/8ecover (M558)

5iempo medio para reparar las 2allas
9quivalente A = M567 / (M567 + M558)
9n un sistema& podemos dise+ar la arquitectura para que altos
tiempos de M558 en componentes no a2ecten la
disponibilidad total del sistema.

4/47
4oluciones de :A en M;4<=
:a; varias posibilidades nativas

8eplicaci>n

4tora?e compartido

Cluster

@ varias provistas por terceros

MMM Multi Master replication Mana?er 2or M;4<=.

1861 replicaci>n sincr>nica de bloques usando la red

PacemaAer Cluster resource mana?er

Balera replicaci>n sincr>nica C parc*e

5un?sten replicaci>n a nivel de aplicaci>n





5/47
M;4<= 0 8eplicaci>n
6asada en trans2erencia ; aplicaci>n de =o? 6inario del master
a slaves& en 2orma asincr>nica o semisincr>nica ((.().

es en un s>lo sentido (one0wa;)


un slave puede tener un solo master

por sentencias& re?istros cambiados ((.')& o mi3to


puede ser parcial& 2iltrando por base ; tablas

controlada por parmetros en m;.cn2 ; comandos para


con2i?uraci>n dinmica
cluster implementa replicaci>n sincr>nica
1os t*read en cada slave
obtiene re?istros de binlo? ; ?enera rela;lo? (D/E t*read)
lee rela;lo? ; aplica re?istros (4<= t*read)

6/47
M;4<= 0 8eplicaci>n

FM;4<= replication b; de2ault is as;nc*ronous. 5*e master
writes events to its binar; lo? but does not Anow w*et*er or
w*en a slave *as retrieved and processed t*em. Git*
as;nc*ronous replication& i2 t*e master cras*es& transactions
t*at it *as committed mi?*t not *ave been transmitted to an;
slave. Consequentl;& 2ailover 2rom master to slave in t*is case
ma; result in 2ailover to a server t*at is missin? transactions
relative to t*e masterF

*ttp//dev.m;sql.com/doc/re2man/(.(/en/replication0semis;nc.*tml


7/47
M;4<= 0 8eplicaci>n 0 2uncionalidades
*asta (.' (H//,)
'. lo? binario de sentencias& re?istros& o mi3to
H. 2iltro de bases& tablas ; transacciones
$. sentencias no determin%sticas
-. disponible para Cluster

en (.( (H/'/)
'. semisincr>nica
H. 2s;nc mejorado en slave
$. recuperaci>n de corrupci>n en rela; lo?
-. *eartbeat
(. 2iltro de eventos por servidor

en (.) (m$)
'. replicationIeventIc*ecAsum

8/47
M;sql 0 8eplicaci>n
Semisincrnica (5.5):
parc*e ori?inal de ?oo?le 0 H//J
slaves con2irman recepci>n de eventos al master

commit se responde al cliente lue?o que un slave *a;a


con2irmado recepci>n de evento
implementado con plu?ins en master ; slave
o
rplIsemiIs;ncImasterIenabled = //'K
o
rplIsemiIs;ncImasterItimeout = LK

'/// = ' se?undo


o
rplIsemiIs;ncIslaveIenabled = //'K
monitoreo
o
4:EG 45A5M4 =DN9 O8plIsemiIs;nc"OK

9/47
M;4<= 0 8eplicaci>n
PC>mo *abilitar lo? binarioQ
lo?0bin R en m;.cn2

4i slaves van a tener *abilitada rSplica& *abilitar que su


binlo? inclu;a cambios aplicados del master
lo?0slave0updates R en m;.cn2
PCundo se ?enera un arc*ivo nuevoQ

al reiniciar el servidor m;sql

al lle?ar al tama+o m3imo (ma3Ibinlo?IsiTe)

ejecutando 7=M4: =EB4


PCundo se borran los arc*ivos de lo?binQ

cuando se lle?a a 9UPD89I=EB4I1A@4

ejecutando PM8BM9 MA4598 =EB4



10/47
M;4<= 0 8eplicaci>n
495 6DL=EBI7E8MA5=VrowWstatementWmi3edWde2aultXK

statement
almacena las sentencias 4<= ejecutadas& 11= ; 1M=.
tama+o independiente del volumen de datos
necesita que todas las tablas de la sentencia estSn
replicadas.
sentencias no determin%sticas no son replicadas

row

almacena datos modi2icados


locAea solo datos necesarios

recomendado cuando *a; poco volumen de cambios



11/47
M;4<= 0 8eplicaci>n
binlo? 2iltrado en master
495 4<=I=EBI6DL=/
binlo?0do0db& binlo?0i?nore0db

2iltrada aplicaci>n en slave
replicate0do/i?nore0db/table& replicate0do0table
m;sql pro3;

LE5A 6inlo? 2iltrado implica que no sirve para recuperaci>n Y
Con2i?urar para consistencia
s;ncIbinlo?=' R escribe binlo? a disco despuSs
de cada escritura
innodbIsupportI3a=' R sincroniTa binlo? con Dnno16
data2iles (ca%das innodb que ?enera rollbacA)

12/47
M;4<= 0 8eplicaci>n
P8eplicaci>n bi0direccionalQ

Lo soportado.
o
9sto quiere decir slave no actualiTa datos en master&
porque el 2lujo de datos es siempre en un sentido del
master al slave.

4e puede con2i?urar master ; slave en un mismo servidor& ;
parece bi0direccional si ambos tienen con2i?uraci>n
simStrica& pero son dos con2i?uraciones distintas.

Problemas a considerar
o
autoincrementos
o
restricciones de unicidad (MNs)
o
cambios 2uera de orden

13/47
M;4<= 0 8eplicaci>n
4entencias inse?uras (unsa2e) no son replicadas en 2ormato
statement
no determin%sticas
aquellas que pueden retornar valor distinto en slave
s;sdate()& user& MMD1()& etc.

otras sentencias no se?uras


update ... limit
insert dela;ed
load data in2ile R desde (.'.(/
al?unas no determin%sticas se consideran se?uras
ej. curtime()& lastIinsertIid()

14/47
M;4<= 0 8eplicaci>n
4oporta cambios e3ternos en la base de datos del slave

cambiar de en?ine en slaves


master Dnno16 ; slave M;D4AM
4erv%a *ace al?unos a+os cuando Dnno16 no ten%a buena
per2ormance. Actualmente es discutible. Puede servir para al?Zn caso
particular. Medirlo en el sistemaY

6lacA*ole 2iltro de datos

cambiar con2i?uraci>n de slaves buscando mejor per2ormance


cambiar %ndices

cambiar con2i?uraci>n raid



15/47
M;4<= 0 8eplicaci>n 0 (.'
8eplicaci>n en cluster
desde (.'.) master/slave. circular desde (.'.',
con2i?uraci>n de m3ima disponibilidad
*ttp//dev.m;sql.com/doc/re2man/(.(/en/m;sql0cluster0replication.*tml

16/47
M;4<= 0 8eplicaci>n
Contras:

no *a; automatiTaci>n o2icial de 2ailover& se requiere
intervenci>n manual o pro?ramaci>n.

escritura en slaves est limitada a un t*read. Multi0t*read en


(.) (est en m)).

es asincr>nica ; no transaccional& por lo que puede perder
datos. Mejorado en (.(.H (semis;nc) ; (.) (cras* recover;)

slave necesita monitoreo ca%das& demoras& consistencia

17/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



18/47
M;4<= 0 4tora?e compartido
Activoactivo

no soportado en Dnno16
M;D4AM
o
sobre cluster 2ile s;stem (EC74H/B74)
o
parmetros necesarios

e3ternal0locAin?

quer;0cac*e=/

dela;IAe;Iwrite=o22
Activopasivo
Lecesita so2tware de terceros para *eartbeat
7ailover
o
Dnno16 aplica recover;
o
M;D4AM necesita que se valide que no *a; tablas
corruptas 00m;isamIrecover como opci>n de arranque o
m;isamc*A antes de levantarlo.

19/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



20/47
M;4<= 0 Cluster
Arquitectura s*ared not*in?
*ttp//dev.m;sql.com/doc/m;sql0cluster0e3cerpt/(.'/en/m;sql0cluster0overview.*tml

21/47
M;4<= 0 Cluster
A partir de m;sql (.(& cluster es una distribuci>n independiente.
Actualmente est en producci>n J.H
Lodo de datos 0 L161 0 Almacena datos e %ndices

1esde J.H soporta varios procesos (nodos) en mismo *ost


Lodo 4<= 0 m;sqld (versi>n (.')
Maneja comunicaci>n con cliente recibe sentencias 4<= ; se
comunica con nodos de datos para ejecutarla
Lodo de Besti>n 0 ndbIm?md
monitoreo& con2i?uraci>n ; control del cluster

1atos se almacenan particionados ; replicados entre L161
2ra?mento activo (primario) ; de 2ailover (secundarios)

parmetro LoE28eplicas es H por de2ecto


o
valores ma;ores soportan ca%das de ms nodos

22/47
M;4<= 0 Cluster
Ca!das soportadas

nodo sql

clientes se desconectan ; transacciones no commiteadas se


pierden
nodo datos

m3imo LoE28eplicas0'
en caso de split0brain& vive el ?rupo con ma;or%a de nodos& ;
desempata nodo rbitro.

nodo ?esti>n
no impacta el 2uncionamiento del cluster

no se pueden a?re?ar nuevos nodos *asta que vuelva



23/47
M;4<= 0 Cluster
[arias operaciones online

bacAup
so2tware up?rade

a?re?ar nodos de datos


s;stem restart en modo Frollin?F
o
?esti>n& datos (de a uno& todos)& sql (idem)

6alanceo de car?a

\ava Connector/\ (./.) jdbcm;sqlloadbalance//



6ase ndbinfo con datos en vivo
nodos activos
memoria usada (tabla memoryusage)
varios contadores de actividad (tabla counters)

24/47
M;4<= 0 Cluster
8ecomendado para

transacciones cortas ; c*icas


sql con joins simples ; bZsquedas por PN

alta disponibilidad
Casos de uso
sistemas de tiempo real

soporte a tele2on%a

Con2i?uraci>n 0 en prctico
Msa un arc*ivo de con2i?uraci>n ?lobal con2i?.ini
local a cada nodo m;.cn2
o
ubicaci>n de nodos de ?esti>n
lo?s por nodo (ndbIRIout.lo?) ; ?lobal (ndbIRIcluster.lo?)

25/47
M;4<= 0 Cluster
Limitaciones

m%nimo tres equipos& m3imo H(( (-, nodos de datos)


lento en joins de muc*o volumen ; a?re?aciones

no soporta %ndices 2ullte3t ni 2orein? Ae;s


datos se almacenan en memoria (solo columnas inde3adas
desde (.(& antes todo)& lo que limita el tama+o m3imo de la
base a la capacidad de los servidores de datos.

estimaci>n de memoria 8AM necesaria en cada nodo


(4iTeo21atabase 3 LumberE28eplicas 3 '.' ) /
LumberE21ataLodes

ndb_size.pl estima memoria necesaria en cluster a partir de
una instancia m;sql comZn.
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-programs-ndb-size-pl.html

26/47
M;4<= 0 Cluster
MCM M;4<= Cluster Mana?er
versi>n comercial MySQL Cluster Carrier Grade Edition
mcmd 00bootstrap R instala cluster de $ nodos con2i?urado
8ed*at/E9= (& 4u49 9='//''

27/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



28/47
M;sql 0 Multi Master Mana?er
*ttp//m;sql0mmm.or?/

4cripts para monitoreo ; 2ailover de replicaciones


master/master con un solo nodo soportando escrituras
4cripts

mmmImond& mmmIa?entd& mmmIcontrol



6u? reportado HJ/-/H/''
*ttps//bu?s.launc*pad.net/m;sql0mmm/+bu?/JJ',-$
Fmovin? slaves to t*e new master can cause inconsistenc; accross
databasesF
pasado a prioridad alta el H(/(& a resolver en vH.H

29/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



30/47
M;4<= 0 1861
1istributed 8eplicated 6locA 1evice 0 http:!!!.drbd.org

m>dulo en Aernel linu3 que implementa replicaci>n


sincr>nica de bloques usando la red (raid0')

31/47
M;4<= 0 1861
Lecesita so2tware de ?esti>n de cluster para automatiTar

*eartbeat / pacemaAer

[entajas
alternativa barata a una caja de stora?e (4AL)
datos quedan locales al servidor activo (per2ormance)
es ms se?uro que replicaci>n nativa (consistencia)
actualiTaciones de *ardware/so2tware usando 2ailover
contras
soportado solo en linu3

a?re?a complejidad
corrupci>n se propa?a

no permite replicar parte de la base



32/47
M;4<= 0 1861
Activo/activo

4obre B74/EC74H
4>lo con M;D4AM
Con =[M

se puede usar debajo ; sobre 1861


snaps*ots s>lo si =[M va debajo

snaps*ots en slave permiten montar el 2iles;stem para


maniobras read0onl;

4oporta mirrorin? sincr>nico ; asincr>nico
necesario para GAL& no recomendado para M;4<=


33/47
M;sql 0 1861
"ar#metros recomendados en MySQL:

lo?0bin=nombre
por de2ecto es *ostname ; puede cambiar

innodbIlo?I2ileIsiTe
ms c*ico permite recover; ms rpido

m;isamIrecover=2orce&bacAup
para c*equeo automtico de corrupci>n en 2ailover

innodbIsupportI3a='
sincroniTa binlo? con innodb data2iles (ca%das innodb que
?enera rollbacA)
s;ncIbinlo?='
escribe binlo? a disco despuSs de cada escritura

34/47
M;4<= 0 1861
Posibles 2allas

master
'. ca%da del servidor
H. tranca sin que 2alle& no liberando recursos. 8equiere 2encin?
del a?ente de cluster (*eartbeat)
$. corte del enlace con secundario
sec$ndario
'. ca%da del servidor
H. corrupci>n de datos por 2allas en stora?e
$. corte del enlace con master

35/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



36/47
PacemaAer
Cluster resource mana?er 0 *ttp//www.clusterlabs.or?/
?pl (vH)& no *a; versi>n enterprise.

Apo;ado por 8ed:at / Lovell / =in6it.



7uncionalidades

soporta in2raestructura de EpenAD4 ; :eartbeat

implementa 45ELD5: para ase?urar inte?ridad de datos

con2i?uraci>n redundante en CD6 (cluster in2ormation base)&


arc*ivo UM=

usa cualquier recurso que pueda ser ?estionado con scripts

soporta varias con2i?uraciones redundantes


activo/pasivo& activo/activo& L+'& etc.

Parte de :eartbeat *asta versi>n H.'.$. =ue?o se independiT>

'./ ms testeado sobre :eartbeat que con Coros;nc



37/47
PacemaAer 4tacA

*ttp//www.clusterlabs.or?/wiAi/Arc*itectureR4upportedIClusterI4tacAs


38/47
PacemaAer Dnternals

*ttp//www.clusterlabs.or?/wiAi/Arc*itectureR4upportedIClusterI4tacAs

39/47
PacemaAer
con M;4<=

?ran comunidad de usuarios

percona0prm M;sql 8eplication Mana?er (alp*a)



Pasos para comenTar a utiliTarlo

Con2i?urar :eartbeat
/etc/*a.d/*a.c2

Con2i?urar recursos
Muc*os parmetros& estudiar bien opciones
4tonit* para producci>n

Probar escenarios Y

40/47
PacemaAer
8ecurso

clase EC7/lsb/le?ac;0*eartbeat/stonit*

parmetros

operaciones de monitoreo

scores usado en toma de decisiones


0 = no usar
+ = usar
DL7DLD5@ = constante

lsb script de inicio cumpliendo Linu" Standard #ase

EC7 $pen Cluster %rame!or&& e3tensi>n de =46



41/47
PacemaAer

9jemplo de con2i?uraci>n para 1861


]# crm con2i?ure edit
primitive drbdIdisA oc2linbitdrbd ^
params drbdIresource=Fm;sqlF ^
op monitor interval=F'(sF
primitive 2sIdrbd oc2*eartbeat7iles;stem ^
params device=F/dev/drbd/F director;=F/varios//'F 2st;pe=Fe3t$F ^
ms msIdrbd drbdIdisA ^
meta master0ma3=F'F master0node0ma3=F'F clone0ma3=FHF ^
clone0node0ma3=F'F noti2;=FtrueF
colocation mntIonImaster in2 2sIdrbd msIdrbdMaster
order mountIa2terIdrbd in2 msIdrbdpromote 2sIdrbdstart

42/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



43/47
M;4<= 0 Balera
8eplicaci>n sincr>nica
http://codership.com/products/galera_replication

44/47
M;4<= 0 Balera
Caracter%sticas

8Splica en tiempo de commit


4incr>nica ; multi0master

?estiona variables de autoincremento


=leva D1 de transacciones para ?arantiTar consistencia

controla datos a replicar al recibirlos ; antes de aplicarlos


(certi2icaci>n)

Dmplementaci>n ?enSrica. Primera versi>n en Dnno16.


Parc*e para M;4<=
Con2i?urable mediante variables en m;.cn2
Owsrep"OK
Publica variables de estado
o
s*ow status liAe Owsrep"OK
control de 2lujo con tri??ers (e3ceso de car?a)

45/47
4oluciones de :A en M;4<=
Lativas
'. 8eplicaci>n
H. 4tora?e compartido
$. Cluster

1e terceros
'. MMM
H. 1861
$. PacemaAer
-. Balera
(. 5un?sten



46/47
M;4<= 0 5un?sten 8eplicator
Epensource& BP= [H& ; versi>n enterprise
*ttp//www.continuent.or?
7uncionalidades
replicaci>n en paralelo& multi0master ; *etero?ena (aplica a
Post?re4<=& M;4<= ; Eracle).
implementa D1 de transacciones ?lobal

mZltiples servicios de replicaci>n por proceso (L0L)



6uena documentaci>n
*ttp//code.?oo?le.com/p/tun?sten0replicator/wiAi/5un?sten8eplicatorCooAbooA
*ttp//code.?oo?le.com/p/tun?sten0replicator/wiAi/5roubles*ootin?

47/47
M;4<= 0 5un?sten 8eplicator
Conector

intermedia entre aplicaci>n ; 61


implementaci>n nativa M;4<= ; Post?re4<=

inclu;e m>dulo router que se comunica con la 61& e


implementa :A
8eplicator captura cambios ; propa?a a otros replicators&
usando protocolo propio 5=:.
Mana?er monitorea estado de componente& mediante m>dulos
monitores replicator& database ; cluster.

También podría gustarte