SlideShare una empresa de Scribd logo
MySQL en la vida real


Muchos consejos obvios, pero útiles...




                                              Davide Ferrari
                                         System Administrator
MySQL hoy en día

    Desarrollado por Sun Microsystem
    Versión estable 5.1.x
         Ya está en beta la 5.4 y en alfa la 6.0
    Es la M de LAMP
    Ya es un proyecto maduro y algunos de los mitos
    de las versiones 3.23/4.0 hay que dejarlos atrás
    Vasto ecosistema opensource
    Hay un fork: Drizzle




30 Octubre 2009             PHP Conference Barcelona                  2
Resumen de las “nuevas” versiones

MySQL 5.1              MySQL 5.4
 Stable después de una  Originalmente no
 laaaaaarga gestación   planeada
 Añade arquitectura a   Orientada a las
 plugins, particiones,  mejoras en
 nueva replicación y    escalabilidad vertical y
 mucho más              rendimiento
 Vivió el cambio MySQL  100% made in Sun y la
 AB/Sun Microsystem     ultima así



30 Octubre 2009   PHP Conference Barcelona         3
Resumen de lo que vamos a ver hoy

    Replicación
         Master-slave(s)
         Master-master
         Otras formas
    DRBD (Distributed Replicated Block Device) y Heartbeat
    Consejos e ideas




30 Octubre 2009            PHP Conference Barcelona          4
La replicación en MySQL




                  Qué és la replicación?




30 Octubre 2009       PHP Conference Barcelona                 5
La replicación en MySQL




   Es hacer que todos los datos importantes en un
  servidor MySQL estén también en otro (o más) y se
       vayan actualizando de forma automática.




30 Octubre 2009     PHP Conference Barcelona                 6
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura




30 Octubre 2009        PHP Conference Barcelona         7
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura
    No ayuda a escalar en escritura. Olvidadlo.




30 Octubre 2009        PHP Conference Barcelona         8
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura
    No ayuda a escalar en escritura. Olvidadlo.
    Puede ayudar a mejorar la disponibilidad




30 Octubre 2009        PHP Conference Barcelona         9
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura
    No ayuda a escalar en escritura. Olvidadlo.
    Puede ayudar a mejorar la disponibilidad
    Puede dar dolores de cabeza




30 Octubre 2009        PHP Conference Barcelona        10
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura
    No ayuda a escalar en escritura. Olvidadlo.
    Puede ayudar a mejorar la disponibilidad
    Puede dar dolores de cabeza
         Cuando se rompe (y lo notas)




30 Octubre 2009           PHP Conference Barcelona       11
La replicación en MySQL: más en detalle



    Ayuda a escalar en lectura
    No ayuda a escalar en escritura. Olvidadlo.
    Puede ayudar a mejorar la disponibilidad
    Puede dar dolores de cabeza
         Cuando se rompe (y lo notas)
         Cuando se corrompe (y no lo notas)




30 Octubre 2009           PHP Conference Barcelona       12
La replicación en MySQL: más en detalle

    Hasta la 5.0, estaba basada en sentencias planas (SBL –
    Statements Based Replic.).
         Falla en algunos casos como por ejemplo UUID(),
         UPDATE|DELETE … LIMIT sin ORDER BY etc
    >= 5.1, soporta una replicación basada en rows (RBR – Row
    Based Replic.) o sea transmitiendo el valor y no la sentencia
    SQL
         Genera un binlog mucho más grande
         Protege de los fallos de la SBR
    También hay una modalidad mixta, que se basa en SBR
    pero utiliza RBR en casos concretos



30 Octubre 2009           PHP Conference Barcelona             13
La replicación en MySQL: más en detalle

    La replicación es un proceso asincrono




30 Octubre 2009        PHP Conference Barcelona        14
La replicación en MySQL: más en detalle

    La replicación es un proceso asincrono
    La replicación es un proceso mono-thread, se
    pierde el paralelismo de las peticiones y, por lo
    tanto, es generalmente más lento que los updates
    directos en el master




30 Octubre 2009        PHP Conference Barcelona         15
La replicación en MySQL: más en detalle

    La replicación un proceso asincrono
    La replicación es un proceso mono-thread, por lo
    tanto se pierde el paralelismo de las peticiones y,
    por lo tanto, es generalmente más lento que los
    updates directos en el master
    Bueno no, en realidad hay dos threads en el slave.
    I/O thread y SQL thread. Uno lee el binlog remoto y
    lo copia en el relay log locale y el otro ejecuta el
    relay log



30 Octubre 2009        PHP Conference Barcelona        16
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común




30 Octubre 2009       PHP Conference Barcelona                  17
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común
    Hay un master donde van las escrituras...




30 Octubre 2009       PHP Conference Barcelona                  18
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común
    Hay un master donde van las escrituras...
         … y algunas lecturas




30 Octubre 2009           PHP Conference Barcelona                  19
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común
    Hay un master donde van las escrituras...
         … y algunas lecturas
         Cuidado con las SELECTs en transacciones (es ACID)




30 Octubre 2009          PHP Conference Barcelona                  20
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común
    Hay un master donde van las escrituras...
         … y algunas lecturas
         Cuidado con las SELECTs en transacciones (es ACID)
    Hay N slaves donde van las lecturas...




30 Octubre 2009          PHP Conference Barcelona                  21
Master - Slave(s)

    Sin dudas és la topología de replicación más
    común
    Hay un master donde van las escrituras...
         … y algunas lecturas
         Cuidado con las SELECTs en transacciones (es ACID)
    Hay N slaves donde van las lecturas...
         … y escrituras. Si no, como se replican los datos? :)




30 Octubre 2009            PHP Conference Barcelona                  22
Master - Slave(s)




    Como distribuir el hardware entre master/slaves?




30 Octubre 2009      PHP Conference Barcelona                  23
Master - slave(s)

                                    Aparantemente, el
                                    master debe tener más
                                    hardware




30 Octubre 2009   PHP Conference Barcelona                  24
Master - slave(s)

                                    Aparantemente, el
                                    master debe tener más
                                    hardware
                                    Recibe todas las
                                    escrituras...




30 Octubre 2009   PHP Conference Barcelona                  25
Master - slave(s)




                       pero...




30 Octubre 2009   PHP Conference Barcelona                  26
Master - slave(s)

    En un contexto web, es
    mucho más probable
    que haya muchísimas
    más lecturas




30 Octubre 2009      PHP Conference Barcelona                  27
Master - slave(s)

    En un contexto web, es
    mucho más probable
    que haya muchísimas
    más lecturas
    Además, los esclavos
    hacen las mismas
    escrituras que el
    master




30 Octubre 2009      PHP Conference Barcelona                  28
Master - slave(s)




                  Más recursos a los esclavos!



30 Octubre 2009            PHP Conference Barcelona                  29
Master-Slave(s): consejos varios

    En los slaves poner siempre el parametro read-
    only en my.cnf. Ahorra muchos problemas.
    Evitar de mezclar versiones distintas entre master
    y slaves. Si hay que mezclar, el slave que sea más
    reciente que el master
    Si puedes tener 2 o más slaves, que 2 sean
    gemelos a nivel HW para poder hacer pruebas de
    tuning.
    Cada server obligatoriamente con su propio
    server ID. Falla todo si falta!!!


30 Octubre 2009       PHP Conference Barcelona          30
Master-Master




                  Qué es el master-master?




30 Octubre 2009         PHP Conference Barcelona              31
Master-Master




És un tipo de replicación entre 2 server donde ambos
                 son master y slave.
   Puede ser activo-pasivo (recomendado) o bien
                     activo-activo.




30 Octubre 2009     PHP Conference Barcelona              32
Master-Master: activo/activo

    No sirve para escalar en escritura
         Como mucho, se gana un poco más de paralelismo
    Si pasa algo con la replicación, es aún peor que un
    master-slave normal
    Puede ayudar a montar un site geograficamente
    distribuido




30 Octubre 2009           PHP Conference Barcelona               33
Master-Master: activo/pasivo

    No ayuda a escalar en escritura (ooooooh)
    Es una muy buena solución para la alta
    disponibilidad
    No sólo en caso de crash físico si no también de
    operaciones lógicas como una ALTER gorda
    MMM (Multi Master replication Manager) puede
    ayudar en la automatización del proceso.




30 Octubre 2009       PHP Conference Barcelona             34
Master-Master: parametros

    En configuración A/A es fundamental setear los
    auto_increment_increment = 2
    auto_increment_offset = N
    Tanto en A/A como en A/P
    log-slave-updates
    Aquí también no olvidarse de los server ID.




30 Octubre 2009      PHP Conference Barcelona              35
DRBD




 DRBD® es una solución 100% opensource de LinBit
   para la alta disponibilidad de un block device




30 Octubre 2009    PHP Conference Barcelona      36
DRBD más en detalle

    Disponible para todas las distro Linux
    Permite replicar bit a bit un disco en 2 servidores
    Transmite solo lo que escribes
    Está pensado para soluciones activo/pasivo
    Puede utilizar hardware totalmente estandar (se
    aconseja por lo menos una Ethernet Gbit dedicada)




30 Octubre 2009       PHP Conference Barcelona                    37
DRBD y MySQL

    MySQL en activo-pasivo con shared disk
    NO es un master-master. No hay replicación de
    Mysql, sólo la de DRBD a nivel de bloque
    2 servidores identicos a nivel de HW
    Mismo my.cnf en ambos




30 Octubre 2009      PHP Conference Barcelona              38
DRBD y MySQL




  Ok, ya tengo los datos en dos servidores, así que si
                 uno muere tengo otro.
              Pero... ¿como me entero?




30 Octubre 2009      PHP Conference Barcelona              39
DRBD y MySQL




  Ok, ya tengo los datos en dos servidores, así que si
                 uno muere tengo otro.
              Pero... ¿como me entero?

                  Usando Heartbeat


30 Octubre 2009      PHP Conference Barcelona              40
Cliente
Cliente
                                 Red interna                               Cliente



                                                                              Cliente




    IP real      IP virtual                      IP real



           MySQL                Heart Beat             MySQL




              sda1            Replicación DRBD             sda1
  Activo                                                          Pasivo

      Servidor A                                   Servidor B
MySQL, Heartbeat y DRBD




                  Y que pasa si Servidor A cae?




30 Octubre 2009           PHP Conference Barcelona             42
Cliente
Cliente
                     Red interna                             Cliente



                                                                Cliente




    IP real                        IP real      IP virtual


           DOWN
           MySQL                         MySQL




              sda1                           sda1
  Muerto                                            Activo

      Servidor A                     Servidor B
MySQL, Heartbeat y DRBD

    Cuando Servidor B se levanta, la base de datos en
    disco está en estado crashed




30 Octubre 2009      PHP Conference Barcelona             44
MySQL, Heartbeat y DRBD

    Cuando Servidor B se levanta, la base de datos en
    disco está en estado crashed
    Para InnoDB (u otros engines ACID) no es un
    problema crítico




30 Octubre 2009      PHP Conference Barcelona             45
MySQL, Heartbeat y DRBD

    Cuando Servidor B se levanta, la base de datos en
    disco está en estado crashed
    Para InnoDB (u otros engines ACID) no es un
    problema crítico
         Aunque si la BD es grande, puede tardar tiempo en
         recuperarse




30 Octubre 2009           PHP Conference Barcelona             46
MySQL, Heartbeat y DRBD

    Cuando Servidor B se levanta, la base de datos en
    disco está en estado crashed
    Para InnoDB (u otros engines ACID) no es un
    problema crítico
         Aunque si la BD es grande, puede tardar tiempo en
         recuperarse
    Las tablas MyISAM pueden corromperse de forma
    más o menos grave (sí, podrías perderlo todo)




30 Octubre 2009           PHP Conference Barcelona             47
Recordad!




                             ¡¡ BACKUP !!
   (sólo hay dos clases de administradores de sistemas: los que han perdido
                     datos y los que aún no lo han hecho)




30 Octubre 2009               PHP Conference Barcelona                        48
Backup – Algunas opciones

    mysqldump (el de toda la vida)
    mk-parallel-dump
    InnoDB Hot Backup
         De pago, de innodb.com (autores de InnoDB)
         Hace backup de InnoDB sin necesidad de parar MySQL
    xtrabackup
         Opensource, de Percona
         También hace hot backup, pero está más verde
    LVM + cold backup (mylvmbackup)
    Cold backup de un slave + copia de binlog

30 Octubre 2009          PHP Conference Barcelona            49
innodb_file_per_table

    innodb_file_per_table Sirve para separar cada tabla
    InnoDB en un archivo dedicado
       Permite recuperar espacio a nivel de SO si se borran tuplas
       Un simple ls y ya sabes cual es la tabla gorda
       Ocupa más file descriptors
       Hay que controlar el espacio que queda libre en disco




30 Octubre 2009           PHP Conference Barcelona               50
innodb_flush_method

    innodb_flush_method Determina como MySQL abre en
    lectura y escritura los archivos de datos (tablespace) y los
    transaction logs a nivel de SO. En *nix puede tener como valor:
       fdatasync (default) utiliza fsync() para los logs y los
       datafiles
       O_DSYNC utiliza O_SYNC para abrir y hacer flush de los
       logs y fsync() para hacer flush de los datafiles
       O_DIRECT utiliza O_DIRECT para abrir los datafiles y
       fsync() para el flush de logs y datos




30 Octubre 2009           PHP Conference Barcelona                    51
innodb_flush_method



                     fdatasync     O_DIRECT           O_DSYNC


                                   open() con
                      fsync()      O_DIRECT,            fsync()
       Tablespace
                                     fsync()


                                                      open() con
       Transaction    fsync()         fsync()
                                                       O_SYNC
           log




30 Octubre 2009                  PHP Conference Barcelona                    52
innodb_flush_method


                                WTF?
    O_SYNC y O_DIRECT son parametros opcionales de open()
       O_SYNC obliga a sincronizar los datos a disco cada vez
       que se quiere escribir algo en un archivo así abierto,
       bloqueando el retorno de la syscall. Las escrituras pero sì
       pasan por la cache del SO.
       O_DIRECT el kernel pone directamente en DMA la
       aplicación en userspace, deshabilitando al 100% el I/O
       buffer del SO. Se evita así el doble buffer (de SO e InnoDB
       en lectura, de SO y hardware en escritura)
    fsync(): si no hay O_SYNC se utiliza siempre, aunque exista
    fdatasync()



30 Octubre 2009           PHP Conference Barcelona                    53
innodb_flush_method



                     Buffer OS        Buffer HW       Media (disco)




                         Si               Si                  Si
         fsync()




       fsync() con      No                Si                  Si
       O_DIRECT


                                   Puede ser que
                     Si, locking                              Si
        O_SYNC                          no




30 Octubre 2009                    PHP Conference Barcelona                    54
Transaction log

    innodb_flush_log_at_trx_commit
         0 write y flush cada segundo, no cada transacción
         1 (default) write y flush del log de la memoria al disco
         cada transacción. Más seguro.
         2 write cada trx, flush cada segundo




30 Octubre 2009             PHP Conference Barcelona                55
maatkit

    Es un set de herramientas que facilitan la vida del
    administrador de MySQL
    mk-table-checksum permite comprobar que dos
    tablas replicadas sean realmente identicas
    mk-slave-delay permite mantener artificialmente un
    slave atrás en el tiempo. Util para recuperar datos
    despues de errores humanos
    mk-parallel-(dump|restore)
    mk-visual-explain
    etc


30 Octubre 2009       PHP Conference Barcelona        56
innotop

    Innotop es una herramienta parecida a top de Unix
    que permite visualizar datos de InnoDB en tiempo
    real
         Queries que se están ejecutando y sus detalles
         Explain directo de una kk-query que está tardando
         Estadisticas de buffer, flushs, writes, prune, consumo
         de memoria en tiempo real
    Fundamentalmente es un front-end a mysqladmin
    proc, mysqladmin ext, y suerte que existe



30 Octubre 2009            PHP Conference Barcelona               57
Links

    <--- Google's that way
    High Performance
    MySQL 2nd Edition (la
    biblia de MySQL)
    http://planet.mysql.com




30 Octubre 2009       PHP Conference Barcelona      58
Contactos

    Davide Ferrari
    Mail: vide80@gmail.com
    LinkedIn: http://www.linkedin.com/in/davideferrari
    Blog: http://anothersysadmin.wordpress.com


                      ¿Preguntas?




30 Octubre 2009       PHP Conference Barcelona           59

Más contenido relacionado

Destacado

Karimpol_BLP_DigitalFormat hall c pdf
Karimpol_BLP_DigitalFormat hall c pdfKarimpol_BLP_DigitalFormat hall c pdf
Karimpol_BLP_DigitalFormat hall c pdf
Peter Smitala
 
Dog house club
Dog house clubDog house club
Dog house club
14027318
 
Dossier idda mede
Dossier idda medeDossier idda mede
Dossier idda mede
Javier Ruiz
 
Seminario 8 Fisiología del embarazo interacción materno infantil
Seminario 8 Fisiología del embarazo interacción materno infantilSeminario 8 Fisiología del embarazo interacción materno infantil
Seminario 8 Fisiología del embarazo interacción materno infantil
Mijail JN
 
20130513 cubrix lezing van vkw
20130513 cubrix lezing van vkw20130513 cubrix lezing van vkw
20130513 cubrix lezing van vkw
Marcel van Marrewijk
 
Luis spota
Luis spotaLuis spota
Luis spota
econovirtual
 
Tips para hacer user research creativamente
Tips para hacer user research creativamenteTips para hacer user research creativamente
Tips para hacer user research creativamente
UX Nights
 
FINGUER TIP OXIMETER
FINGUER TIP OXIMETERFINGUER TIP OXIMETER
FINGUER TIP OXIMETER
ACN
 
Guia para elaboracion de plan operativo
Guia para elaboracion de plan operativoGuia para elaboracion de plan operativo
Guia para elaboracion de plan operativo
Venicio Davila Rocano
 
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellenBorn to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
Markus Erle
 
Babysitters brochure - Tinies
Babysitters brochure - TiniesBabysitters brochure - Tinies
Babysitters brochure - Tinies
Tinies Childcare & Nanny Agency
 
Sigma Alpha Mu Foundation annual report
Sigma Alpha Mu Foundation annual reportSigma Alpha Mu Foundation annual report
Sigma Alpha Mu Foundation annual report
Sigma Alpha Mu Foundation
 
Tarifas canal uno 2012
Tarifas canal uno 2012Tarifas canal uno 2012
Tarifas canal uno 2012
prensaycultura
 
Tendedero
TendederoTendedero
Fitxa selectivitat gòtic: Chartres
Fitxa selectivitat gòtic: ChartresFitxa selectivitat gòtic: Chartres
Fitxa selectivitat gòtic: ChartresAssumpció Granero
 

Destacado (15)

Karimpol_BLP_DigitalFormat hall c pdf
Karimpol_BLP_DigitalFormat hall c pdfKarimpol_BLP_DigitalFormat hall c pdf
Karimpol_BLP_DigitalFormat hall c pdf
 
Dog house club
Dog house clubDog house club
Dog house club
 
Dossier idda mede
Dossier idda medeDossier idda mede
Dossier idda mede
 
Seminario 8 Fisiología del embarazo interacción materno infantil
Seminario 8 Fisiología del embarazo interacción materno infantilSeminario 8 Fisiología del embarazo interacción materno infantil
Seminario 8 Fisiología del embarazo interacción materno infantil
 
20130513 cubrix lezing van vkw
20130513 cubrix lezing van vkw20130513 cubrix lezing van vkw
20130513 cubrix lezing van vkw
 
Luis spota
Luis spotaLuis spota
Luis spota
 
Tips para hacer user research creativamente
Tips para hacer user research creativamenteTips para hacer user research creativamente
Tips para hacer user research creativamente
 
FINGUER TIP OXIMETER
FINGUER TIP OXIMETERFINGUER TIP OXIMETER
FINGUER TIP OXIMETER
 
Guia para elaboracion de plan operativo
Guia para elaboracion de plan operativoGuia para elaboracion de plan operativo
Guia para elaboracion de plan operativo
 
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellenBorn to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
Born to be accessible - Barrierefreie PDFs gemäß PDF/UA effizient erstellen
 
Babysitters brochure - Tinies
Babysitters brochure - TiniesBabysitters brochure - Tinies
Babysitters brochure - Tinies
 
Sigma Alpha Mu Foundation annual report
Sigma Alpha Mu Foundation annual reportSigma Alpha Mu Foundation annual report
Sigma Alpha Mu Foundation annual report
 
Tarifas canal uno 2012
Tarifas canal uno 2012Tarifas canal uno 2012
Tarifas canal uno 2012
 
Tendedero
TendederoTendedero
Tendedero
 
Fitxa selectivitat gòtic: Chartres
Fitxa selectivitat gòtic: ChartresFitxa selectivitat gòtic: Chartres
Fitxa selectivitat gòtic: Chartres
 

Similar a Mysql En La Vida Real

Hack Crack Samba
Hack  Crack SambaHack  Crack Samba
Hack Crack Samba
HxC Store
 
Hack x crack_samba
Hack x crack_sambaHack x crack_samba
Hack x crack_samba
Juan Jose Garcia Sanchez
 
scilab-manual
scilab-manualscilab-manual
scilab-manual
fgu
 
Chamilo portable 2016
Chamilo portable 2016Chamilo portable 2016
Chamilo portable 2016
Chamilo User Day
 
Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan Sacco
Juan Sacco
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
vilna2011
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
vilna2011
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
Francisco Javier Vazquez Umbria
 
Interesante 206370780 configuracion-basica-de-samba
Interesante 206370780 configuracion-basica-de-sambaInteresante 206370780 configuracion-basica-de-samba
Interesante 206370780 configuracion-basica-de-samba
xavazquez
 
Expo taller i
Expo taller iExpo taller i
Expo taller i
yanqui0101
 
Ruby On Rails Jun2009
Ruby On Rails Jun2009Ruby On Rails Jun2009
Ruby On Rails Jun2009
Sergio Alonso
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piña
Grupo PHP Argentina
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
Eduardo Castro
 
JRuby Al Rescate J2EE
JRuby Al Rescate J2EEJRuby Al Rescate J2EE
JRuby Al Rescate J2EE
Jorge Alberto Rodríguez Suárez
 
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
Ichinose 11
 
Manual linux
Manual linuxManual linux
Manual linux
david_nabte
 
Taller de kumbiaPHP Mexico ITSJR
Taller de kumbiaPHP Mexico ITSJRTaller de kumbiaPHP Mexico ITSJR
Taller de kumbiaPHP Mexico ITSJR
Govani Sanchez
 
My SQL
My SQLMy SQL
40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx
Gladys648508
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlas
Decharlas
 

Similar a Mysql En La Vida Real (20)

Hack Crack Samba
Hack  Crack SambaHack  Crack Samba
Hack Crack Samba
 
Hack x crack_samba
Hack x crack_sambaHack x crack_samba
Hack x crack_samba
 
scilab-manual
scilab-manualscilab-manual
scilab-manual
 
Chamilo portable 2016
Chamilo portable 2016Chamilo portable 2016
Chamilo portable 2016
 
Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan Sacco
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
Interesante 206370780 configuracion-basica-de-samba
Interesante 206370780 configuracion-basica-de-sambaInteresante 206370780 configuracion-basica-de-samba
Interesante 206370780 configuracion-basica-de-samba
 
Expo taller i
Expo taller iExpo taller i
Expo taller i
 
Ruby On Rails Jun2009
Ruby On Rails Jun2009Ruby On Rails Jun2009
Ruby On Rails Jun2009
 
Mariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piñaMariano Iglesias: Lithium - Un framework que pega como piña
Mariano Iglesias: Lithium - Un framework que pega como piña
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
JRuby Al Rescate J2EE
JRuby Al Rescate J2EEJRuby Al Rescate J2EE
JRuby Al Rescate J2EE
 
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n4 sistemas_operativos_gilberto_ramos_9-748-1883
 
Manual linux
Manual linuxManual linux
Manual linux
 
Taller de kumbiaPHP Mexico ITSJR
Taller de kumbiaPHP Mexico ITSJRTaller de kumbiaPHP Mexico ITSJR
Taller de kumbiaPHP Mexico ITSJR
 
My SQL
My SQLMy SQL
My SQL
 
40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlas
 

Último

computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
alejandromanuelve
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 

Último (20)

computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
Informe DATA & IA 2024 Primera encuesta sobre el uso de IA en las empresas pe...
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 

Mysql En La Vida Real

  • 1. MySQL en la vida real Muchos consejos obvios, pero útiles... Davide Ferrari System Administrator
  • 2. MySQL hoy en día Desarrollado por Sun Microsystem Versión estable 5.1.x Ya está en beta la 5.4 y en alfa la 6.0 Es la M de LAMP Ya es un proyecto maduro y algunos de los mitos de las versiones 3.23/4.0 hay que dejarlos atrás Vasto ecosistema opensource Hay un fork: Drizzle 30 Octubre 2009 PHP Conference Barcelona 2
  • 3. Resumen de las “nuevas” versiones MySQL 5.1 MySQL 5.4 Stable después de una Originalmente no laaaaaarga gestación planeada Añade arquitectura a Orientada a las plugins, particiones, mejoras en nueva replicación y escalabilidad vertical y mucho más rendimiento Vivió el cambio MySQL 100% made in Sun y la AB/Sun Microsystem ultima así 30 Octubre 2009 PHP Conference Barcelona 3
  • 4. Resumen de lo que vamos a ver hoy Replicación Master-slave(s) Master-master Otras formas DRBD (Distributed Replicated Block Device) y Heartbeat Consejos e ideas 30 Octubre 2009 PHP Conference Barcelona 4
  • 5. La replicación en MySQL Qué és la replicación? 30 Octubre 2009 PHP Conference Barcelona 5
  • 6. La replicación en MySQL Es hacer que todos los datos importantes en un servidor MySQL estén también en otro (o más) y se vayan actualizando de forma automática. 30 Octubre 2009 PHP Conference Barcelona 6
  • 7. La replicación en MySQL: más en detalle Ayuda a escalar en lectura 30 Octubre 2009 PHP Conference Barcelona 7
  • 8. La replicación en MySQL: más en detalle Ayuda a escalar en lectura No ayuda a escalar en escritura. Olvidadlo. 30 Octubre 2009 PHP Conference Barcelona 8
  • 9. La replicación en MySQL: más en detalle Ayuda a escalar en lectura No ayuda a escalar en escritura. Olvidadlo. Puede ayudar a mejorar la disponibilidad 30 Octubre 2009 PHP Conference Barcelona 9
  • 10. La replicación en MySQL: más en detalle Ayuda a escalar en lectura No ayuda a escalar en escritura. Olvidadlo. Puede ayudar a mejorar la disponibilidad Puede dar dolores de cabeza 30 Octubre 2009 PHP Conference Barcelona 10
  • 11. La replicación en MySQL: más en detalle Ayuda a escalar en lectura No ayuda a escalar en escritura. Olvidadlo. Puede ayudar a mejorar la disponibilidad Puede dar dolores de cabeza Cuando se rompe (y lo notas) 30 Octubre 2009 PHP Conference Barcelona 11
  • 12. La replicación en MySQL: más en detalle Ayuda a escalar en lectura No ayuda a escalar en escritura. Olvidadlo. Puede ayudar a mejorar la disponibilidad Puede dar dolores de cabeza Cuando se rompe (y lo notas) Cuando se corrompe (y no lo notas) 30 Octubre 2009 PHP Conference Barcelona 12
  • 13. La replicación en MySQL: más en detalle Hasta la 5.0, estaba basada en sentencias planas (SBL – Statements Based Replic.). Falla en algunos casos como por ejemplo UUID(), UPDATE|DELETE … LIMIT sin ORDER BY etc >= 5.1, soporta una replicación basada en rows (RBR – Row Based Replic.) o sea transmitiendo el valor y no la sentencia SQL Genera un binlog mucho más grande Protege de los fallos de la SBR También hay una modalidad mixta, que se basa en SBR pero utiliza RBR en casos concretos 30 Octubre 2009 PHP Conference Barcelona 13
  • 14. La replicación en MySQL: más en detalle La replicación es un proceso asincrono 30 Octubre 2009 PHP Conference Barcelona 14
  • 15. La replicación en MySQL: más en detalle La replicación es un proceso asincrono La replicación es un proceso mono-thread, se pierde el paralelismo de las peticiones y, por lo tanto, es generalmente más lento que los updates directos en el master 30 Octubre 2009 PHP Conference Barcelona 15
  • 16. La replicación en MySQL: más en detalle La replicación un proceso asincrono La replicación es un proceso mono-thread, por lo tanto se pierde el paralelismo de las peticiones y, por lo tanto, es generalmente más lento que los updates directos en el master Bueno no, en realidad hay dos threads en el slave. I/O thread y SQL thread. Uno lee el binlog remoto y lo copia en el relay log locale y el otro ejecuta el relay log 30 Octubre 2009 PHP Conference Barcelona 16
  • 17. Master - Slave(s) Sin dudas és la topología de replicación más común 30 Octubre 2009 PHP Conference Barcelona 17
  • 18. Master - Slave(s) Sin dudas és la topología de replicación más común Hay un master donde van las escrituras... 30 Octubre 2009 PHP Conference Barcelona 18
  • 19. Master - Slave(s) Sin dudas és la topología de replicación más común Hay un master donde van las escrituras... … y algunas lecturas 30 Octubre 2009 PHP Conference Barcelona 19
  • 20. Master - Slave(s) Sin dudas és la topología de replicación más común Hay un master donde van las escrituras... … y algunas lecturas Cuidado con las SELECTs en transacciones (es ACID) 30 Octubre 2009 PHP Conference Barcelona 20
  • 21. Master - Slave(s) Sin dudas és la topología de replicación más común Hay un master donde van las escrituras... … y algunas lecturas Cuidado con las SELECTs en transacciones (es ACID) Hay N slaves donde van las lecturas... 30 Octubre 2009 PHP Conference Barcelona 21
  • 22. Master - Slave(s) Sin dudas és la topología de replicación más común Hay un master donde van las escrituras... … y algunas lecturas Cuidado con las SELECTs en transacciones (es ACID) Hay N slaves donde van las lecturas... … y escrituras. Si no, como se replican los datos? :) 30 Octubre 2009 PHP Conference Barcelona 22
  • 23. Master - Slave(s) Como distribuir el hardware entre master/slaves? 30 Octubre 2009 PHP Conference Barcelona 23
  • 24. Master - slave(s) Aparantemente, el master debe tener más hardware 30 Octubre 2009 PHP Conference Barcelona 24
  • 25. Master - slave(s) Aparantemente, el master debe tener más hardware Recibe todas las escrituras... 30 Octubre 2009 PHP Conference Barcelona 25
  • 26. Master - slave(s) pero... 30 Octubre 2009 PHP Conference Barcelona 26
  • 27. Master - slave(s) En un contexto web, es mucho más probable que haya muchísimas más lecturas 30 Octubre 2009 PHP Conference Barcelona 27
  • 28. Master - slave(s) En un contexto web, es mucho más probable que haya muchísimas más lecturas Además, los esclavos hacen las mismas escrituras que el master 30 Octubre 2009 PHP Conference Barcelona 28
  • 29. Master - slave(s) Más recursos a los esclavos! 30 Octubre 2009 PHP Conference Barcelona 29
  • 30. Master-Slave(s): consejos varios En los slaves poner siempre el parametro read- only en my.cnf. Ahorra muchos problemas. Evitar de mezclar versiones distintas entre master y slaves. Si hay que mezclar, el slave que sea más reciente que el master Si puedes tener 2 o más slaves, que 2 sean gemelos a nivel HW para poder hacer pruebas de tuning. Cada server obligatoriamente con su propio server ID. Falla todo si falta!!! 30 Octubre 2009 PHP Conference Barcelona 30
  • 31. Master-Master Qué es el master-master? 30 Octubre 2009 PHP Conference Barcelona 31
  • 32. Master-Master És un tipo de replicación entre 2 server donde ambos son master y slave. Puede ser activo-pasivo (recomendado) o bien activo-activo. 30 Octubre 2009 PHP Conference Barcelona 32
  • 33. Master-Master: activo/activo No sirve para escalar en escritura Como mucho, se gana un poco más de paralelismo Si pasa algo con la replicación, es aún peor que un master-slave normal Puede ayudar a montar un site geograficamente distribuido 30 Octubre 2009 PHP Conference Barcelona 33
  • 34. Master-Master: activo/pasivo No ayuda a escalar en escritura (ooooooh) Es una muy buena solución para la alta disponibilidad No sólo en caso de crash físico si no también de operaciones lógicas como una ALTER gorda MMM (Multi Master replication Manager) puede ayudar en la automatización del proceso. 30 Octubre 2009 PHP Conference Barcelona 34
  • 35. Master-Master: parametros En configuración A/A es fundamental setear los auto_increment_increment = 2 auto_increment_offset = N Tanto en A/A como en A/P log-slave-updates Aquí también no olvidarse de los server ID. 30 Octubre 2009 PHP Conference Barcelona 35
  • 36. DRBD DRBD® es una solución 100% opensource de LinBit para la alta disponibilidad de un block device 30 Octubre 2009 PHP Conference Barcelona 36
  • 37. DRBD más en detalle Disponible para todas las distro Linux Permite replicar bit a bit un disco en 2 servidores Transmite solo lo que escribes Está pensado para soluciones activo/pasivo Puede utilizar hardware totalmente estandar (se aconseja por lo menos una Ethernet Gbit dedicada) 30 Octubre 2009 PHP Conference Barcelona 37
  • 38. DRBD y MySQL MySQL en activo-pasivo con shared disk NO es un master-master. No hay replicación de Mysql, sólo la de DRBD a nivel de bloque 2 servidores identicos a nivel de HW Mismo my.cnf en ambos 30 Octubre 2009 PHP Conference Barcelona 38
  • 39. DRBD y MySQL Ok, ya tengo los datos en dos servidores, así que si uno muere tengo otro. Pero... ¿como me entero? 30 Octubre 2009 PHP Conference Barcelona 39
  • 40. DRBD y MySQL Ok, ya tengo los datos en dos servidores, así que si uno muere tengo otro. Pero... ¿como me entero? Usando Heartbeat 30 Octubre 2009 PHP Conference Barcelona 40
  • 41. Cliente Cliente Red interna Cliente Cliente IP real IP virtual IP real MySQL Heart Beat MySQL sda1 Replicación DRBD sda1 Activo Pasivo Servidor A Servidor B
  • 42. MySQL, Heartbeat y DRBD Y que pasa si Servidor A cae? 30 Octubre 2009 PHP Conference Barcelona 42
  • 43. Cliente Cliente Red interna Cliente Cliente IP real IP real IP virtual DOWN MySQL MySQL sda1 sda1 Muerto Activo Servidor A Servidor B
  • 44. MySQL, Heartbeat y DRBD Cuando Servidor B se levanta, la base de datos en disco está en estado crashed 30 Octubre 2009 PHP Conference Barcelona 44
  • 45. MySQL, Heartbeat y DRBD Cuando Servidor B se levanta, la base de datos en disco está en estado crashed Para InnoDB (u otros engines ACID) no es un problema crítico 30 Octubre 2009 PHP Conference Barcelona 45
  • 46. MySQL, Heartbeat y DRBD Cuando Servidor B se levanta, la base de datos en disco está en estado crashed Para InnoDB (u otros engines ACID) no es un problema crítico Aunque si la BD es grande, puede tardar tiempo en recuperarse 30 Octubre 2009 PHP Conference Barcelona 46
  • 47. MySQL, Heartbeat y DRBD Cuando Servidor B se levanta, la base de datos en disco está en estado crashed Para InnoDB (u otros engines ACID) no es un problema crítico Aunque si la BD es grande, puede tardar tiempo en recuperarse Las tablas MyISAM pueden corromperse de forma más o menos grave (sí, podrías perderlo todo) 30 Octubre 2009 PHP Conference Barcelona 47
  • 48. Recordad! ¡¡ BACKUP !! (sólo hay dos clases de administradores de sistemas: los que han perdido datos y los que aún no lo han hecho) 30 Octubre 2009 PHP Conference Barcelona 48
  • 49. Backup – Algunas opciones mysqldump (el de toda la vida) mk-parallel-dump InnoDB Hot Backup De pago, de innodb.com (autores de InnoDB) Hace backup de InnoDB sin necesidad de parar MySQL xtrabackup Opensource, de Percona También hace hot backup, pero está más verde LVM + cold backup (mylvmbackup) Cold backup de un slave + copia de binlog 30 Octubre 2009 PHP Conference Barcelona 49
  • 50. innodb_file_per_table innodb_file_per_table Sirve para separar cada tabla InnoDB en un archivo dedicado Permite recuperar espacio a nivel de SO si se borran tuplas Un simple ls y ya sabes cual es la tabla gorda Ocupa más file descriptors Hay que controlar el espacio que queda libre en disco 30 Octubre 2009 PHP Conference Barcelona 50
  • 51. innodb_flush_method innodb_flush_method Determina como MySQL abre en lectura y escritura los archivos de datos (tablespace) y los transaction logs a nivel de SO. En *nix puede tener como valor: fdatasync (default) utiliza fsync() para los logs y los datafiles O_DSYNC utiliza O_SYNC para abrir y hacer flush de los logs y fsync() para hacer flush de los datafiles O_DIRECT utiliza O_DIRECT para abrir los datafiles y fsync() para el flush de logs y datos 30 Octubre 2009 PHP Conference Barcelona 51
  • 52. innodb_flush_method fdatasync O_DIRECT O_DSYNC open() con fsync() O_DIRECT, fsync() Tablespace fsync() open() con Transaction fsync() fsync() O_SYNC log 30 Octubre 2009 PHP Conference Barcelona 52
  • 53. innodb_flush_method WTF? O_SYNC y O_DIRECT son parametros opcionales de open() O_SYNC obliga a sincronizar los datos a disco cada vez que se quiere escribir algo en un archivo así abierto, bloqueando el retorno de la syscall. Las escrituras pero sì pasan por la cache del SO. O_DIRECT el kernel pone directamente en DMA la aplicación en userspace, deshabilitando al 100% el I/O buffer del SO. Se evita así el doble buffer (de SO e InnoDB en lectura, de SO y hardware en escritura) fsync(): si no hay O_SYNC se utiliza siempre, aunque exista fdatasync() 30 Octubre 2009 PHP Conference Barcelona 53
  • 54. innodb_flush_method Buffer OS Buffer HW Media (disco) Si Si Si fsync() fsync() con No Si Si O_DIRECT Puede ser que Si, locking Si O_SYNC no 30 Octubre 2009 PHP Conference Barcelona 54
  • 55. Transaction log innodb_flush_log_at_trx_commit 0 write y flush cada segundo, no cada transacción 1 (default) write y flush del log de la memoria al disco cada transacción. Más seguro. 2 write cada trx, flush cada segundo 30 Octubre 2009 PHP Conference Barcelona 55
  • 56. maatkit Es un set de herramientas que facilitan la vida del administrador de MySQL mk-table-checksum permite comprobar que dos tablas replicadas sean realmente identicas mk-slave-delay permite mantener artificialmente un slave atrás en el tiempo. Util para recuperar datos despues de errores humanos mk-parallel-(dump|restore) mk-visual-explain etc 30 Octubre 2009 PHP Conference Barcelona 56
  • 57. innotop Innotop es una herramienta parecida a top de Unix que permite visualizar datos de InnoDB en tiempo real Queries que se están ejecutando y sus detalles Explain directo de una kk-query que está tardando Estadisticas de buffer, flushs, writes, prune, consumo de memoria en tiempo real Fundamentalmente es un front-end a mysqladmin proc, mysqladmin ext, y suerte que existe 30 Octubre 2009 PHP Conference Barcelona 57
  • 58. Links <--- Google's that way High Performance MySQL 2nd Edition (la biblia de MySQL) http://planet.mysql.com 30 Octubre 2009 PHP Conference Barcelona 58
  • 59. Contactos Davide Ferrari Mail: vide80@gmail.com LinkedIn: http://www.linkedin.com/in/davideferrari Blog: http://anothersysadmin.wordpress.com ¿Preguntas? 30 Octubre 2009 PHP Conference Barcelona 59