SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Base de datos MySQL
                                      September 25, 2011




domingo 25 de septiembre de 11
Resumen




          •     Replicación en MySQL
                 – Introducción
                 – Tipos de nodos
                 – Tipos de arquitecturas
                 – Limitaciones
                 – Software de terceros
                 – Resumen

          •     MySQL Cluster
                 – Introducción
                 – Tipos de nodos
                 – Configuración
                 – Backup
                 – Restore




   Dpto. Soporte SSAA                       -2-   September 25, 2011

domingo 25 de septiembre de 11
Replicación MySQL




                                 Replicación MySQL




   Dpto. Soporte SSAA                    -3-             September 25, 2011

domingo 25 de septiembre de 11
Replicación – Introducción




      •    Nodo Master
            – Sirve para escrituras y lecturas
            – Guarda los cambios en un log binario
            – Almacena la posición y el fichero en el que se encuentra el log

      •    Nodo Slave
            – Sirve para lecturas
            – Puedes escribir, pero rompes la replicación
            – Se suele usar para lanzar backups
            – Puede tener engines diferentes al master




   Dpto. Soporte SSAA                                   -4-                                 September 25, 2011

domingo 25 de septiembre de 11
Replicación – Master Slave
                                                                                  Maestro-Esclavo


                 ●      Un maestro, múltiples esclavos.
                 ●      En el maestro se escribe, en el esclavo se lee.




   Dpto. Soporte SSAA                                        -5-                      September 25, 2011

domingo 25 de septiembre de 11
Replicación – Introducción




      •    La replicación se basa en los logs binarios
            – Un log binario guarda todas las modificaciones que se hacen a la base de datos
            – El nodo maestro guarda las DDL (alter, create table, create index) y DML (insert, update,
                delete, etc.)
            – El nodo esclavo se conecta al de escritura para leer dicho log binario y reaplicar los
                cambios

      •    En el master se suele logear todo:
            – log_bin=mysql-bin

      •     Y el filtrado se realiza en el slave:
             – replicate-do-db (no!)
             – replicate-ignore-db (no!)
             – replicate-wild-do-table (si)

      •    Límites:
            – Un Slave solo puede tener un Master.




   Dpto. Soporte SSAA                                   -6-                                    September 25, 2011

domingo 25 de septiembre de 11
Replicación - Introducción




      •    Valores recomendados para la replicación:
            – sync_binlog (escritura forzada a disco)
            – slave-net-timeout (tiempo que debe transcurrir para que el slave de por caida la conexión)
            – master-connect-retry (tiempo entre intentos de conexión)

      •    Para comprobar el estado del master:
            – show master status;

      •    Para comprobar el estado del slave:
            – show slave status;

      •    Arrancar procesos slave:
            – start slave;

      •    Parar procesos slave:
            – stop slave;




   Dpto. Soporte SSAA                                   -7-                                    September 25, 2011

domingo 25 de septiembre de 11
Replicación - Introducción




      •    Para montar la replicación es necesario conocer la posición y fichero en el cual se encuentra el
           log binario
      •    Si no hay actividad es sencillo, siempre estará en la misma posición
      •    Si hay actividad no es tan facil, es necesario sacar una copia consistente en un punto concreto

                                         mysqldump --master-data=1

      •    Con esta opción incluimos en el dump el fichero y posición en el cual se comenzó el backup.
      •    Se recomienda un bloqueo de tablas.

      mysql> show master status;
      +-------------------+-----------+--------------+------------------+
      | File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +-------------------+-----------+--------------+------------------+
      | mysqld-bin.004446 | 787553149 |              |          |
      +-------------------+-----------+--------------+------------------+
      1 row in set (0.00 sec)




   Dpto. Soporte SSAA                                    -8-                                     September 25, 2011

domingo 25 de septiembre de 11
Replicación - Introducción




      •    Creamos un usuario para que el slave se pueda conectar al master:



      mysql> CREATE USER 'repl'@‘10.10.0.2' IDENTIFIED BY 'slavepass';
      mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@‘10.10.0.2';

      •    Una vez hecho, lo conectamos al master:

      mysql> CHANGE MASTER TO
      
  -> MASTER_HOST=’10.10.0.1',
      
  -> MASTER_USER='repl',
      
  -> MASTER_PASSWORD=‘slavepass',
      
  -> MASTER_PORT=3306,
      
  -> MASTER_LOG_FILE='master2-bin.001',
      
  -> MASTER_LOG_POS=4;




   Dpto. Soporte SSAA                                  -9-                                September 25, 2011

domingo 25 de septiembre de 11
Replicación - Introducción
                                 *************************** 1. row ***************************
                                         Slave_IO_State: Waiting for master to send event
                                           Master_Host: xxxxx-y.servidoresdns.net
                                           Master_User: masteruser
                                           Master_Port: 3306
                                          Connect_Retry: 60
                                        Master_Log_File: mysqld-bin.004446
                                      Read_Master_Log_Pos: 901561386
                                         Relay_Log_File: mysqld-relay-bin.000605
                                          Relay_Log_Pos: 901561524
                                    Relay_Master_Log_File: mysqld-bin.004446
                                        Slave_IO_Running: Yes
                                       Slave_SQL_Running: Yes
                                        Replicate_Do_DB:
                                      Replicate_Ignore_DB:
                                      Replicate_Do_Table:
                                    Replicate_Ignore_Table:
                                   Replicate_Wild_Do_Table: xxxx.%
                                 Replicate_Wild_Ignore_Table:
                                            Last_Errno: 0
                                            Last_Error:
                                          Skip_Counter: 0
                                      Exec_Master_Log_Pos: 901561386
                                        Relay_Log_Space: 901561524
                                        Until_Condition: None
                                         Until_Log_File:




   Dpto. Soporte SSAA                                               - 10 -                                   September 25, 2011

domingo 25 de septiembre de 11
Replicación – Master Slave




      •    La separación de escrituras/lecturas se debería hacer a nivel de aplicación
            – O con un balanceador de capa 7
            – O con software de terceros (MySQL Proxy, Tungsten, etc.) Hace falta KnowHow.

      •    Se pueden balancear las lecturas entre los diferentes esclavos usando un balanceador hardware
           o software (keepalived, HAProxy…). Importante chequeos de salud

      •    Importante recordar, la replicación es asíncrona. Puede ser que el esclavo no esté a la par con el
           maestro. Este punto es necesario conocerlo y darlo a conocer

      •    Los esclavos, en función del tipo de querys, necesitarán un tunning diferente al que se
           establezca en el maestro




   Dpto. Soporte SSAA                                    - 11 -                                  September 25, 2011

domingo 25 de septiembre de 11
Replicación – Master Master
                                                                                   Maestro-Maestro


                 ●      Lo que se escribe en uno se replica en el otro.
                 ●      Se puede escribir en los dos.




   Dpto. Soporte SSAA                                        - 12 -                    September 25, 2011

domingo 25 de septiembre de 11
Replicación – Master Master




      •    Balancear las escrituras entre los dos masters no supone repartir carga, ¡los dos tienen que
           escribir los datos!
      •    Al no existir transacciones distribuidas, un lock en master1 no es un lock en master2, por lo que
           tendrás datos inconsistentes
      •    Resumiendo


          NO HAY ESCALABILIDAD A NIVEL DE ESCRITURAS,
                    NO SE PUEDEN BALANCEAR

      •    Se debe escribir en un nodo o en otro, pero no en los dos al mismo tiempo.
      •    Por ejemplo, Keepalived + VRRP, DRBD + Heartbeat, etc. ¡Balanceo de IP!
      •    Balancear una IP, que será contra la que ataque la aplicación, y que esta salte de un nodo a otro
           si se produce alguna caida.
      •    El balanceo de Ips habrá que consultarlo con redes ¿Problemas en cloud con las MAC Address?
           ¿Asignación de Ips por puerto de Switch?
      •    Cuidado con los Split Brains




   Dpto. Soporte SSAA                                    - 13 -                                   September 25, 2011

domingo 25 de septiembre de 11
Replicación – Master Master




      •    Como hemos dicho, un esclavo solo tiene un maestro. Por lo tanto, todos los esclavos apuntarán
           a un único maestro
      •    Si el maestro se cae ¿Qué pasa con los esclavos?
      •    No hay failover automático, estos seguirán apuntando al servidor caido
      •    Se podría solucionar apuntando los esclavos a una ip virtual, pero… ¿tienen los dos maestros los
           ficheros binarios en la misma posición y con el mismo nombre? A-S-I-N-C-R-O-N-O
      •    Para la arquitectura anterior, los dos maestros necesitarían compartir el mismo /var/lib/mysql y
           tener una IP balanceada
             – Heartbeat
             – DRBD

      •    Existen soluciones para escalar las escrituras, pero necesitaría mucho testing, formación,
           comprobar que la solución se adapta al cliente y explicarle su funcionamiento, por ejemplo Spider
           SQL. Por lo tanto, no recomendable.

      •    Cada cliente tiene una forma de trabajar, una aplicación, unas necesidades diferentes. Hay que
           estudiar cada caso por separado y ver que como se adapta




   Dpto. Soporte SSAA                                   - 14 -                                  September 25, 2011

domingo 25 de septiembre de 11
Replicación - Circular
                                                                                                             Circular


                 ●      Lo que se escribe en uno se replica en el siguiente, este en el siguiente, este en... A → B →
                        C→D→A
                 ●      Es la menos recomendable. En realidad está casi prohibida ;)




   Dpto. Soporte SSAA                                        - 15 -                                  September 25, 2011

domingo 25 de septiembre de 11
Replicación - Circular
                                                                                                                 Circular


                 ●       Es una forma de disponer de más de dos servidores en arquitectura maestro-maestro.
                 ●       Contra más sean los hosts implicados, mayor el caos de su administración.
                     ●                                     A→B→C→D→E→A
                 ●       Si el host C se cae (por ejemplo) la replicación se rompe. Lo escrito en B no se replica, lo
                         escrito en D se replica en todos menos en C, etc.
                 ●       Si se cae por ejemplo B y D, el caos es infinito. La solución es salir corriendo.
                 ●       A no ser que no exista otra solución, no se recomienda.




   Dpto. Soporte SSAA                                          - 16 -                                    September 25, 2011

domingo 25 de septiembre de 11
Replicación – Limitaciones




      •    Existen una serie de limitaciones en las replicaciones a tener en cuenta
            – La aplicación de los cambios en el esclavo son lineales, single thread
            – No existen transacciones distribuidas
            – Los logs binarios se corrompen
            – La replicación es asíncrona, maestro y esclavo no van a la par
            – No existe comprobación activa de integridad
            – No hay failover automático
            – No hay balanceo automático
            – No hay repair automático
            – Un esclavo solo puede tener un único maestro




   Dpto. Soporte SSAA                                   - 17 -                              September 25, 2011

domingo 25 de septiembre de 11
Replicación – Soluciones de terceros MMM
                                                                                MMM




   Dpto. Soporte SSAA            - 18 -                             September 25, 2011

domingo 25 de septiembre de 11
Replicación – Soluciones de terceros MMM
                                                                                                                  MMM



                 ●      Escrito en Perl…
                 ●      Características:
                        –   Monitorización de la replicación
                        –   Monitorización de los hosts
                        –   Gestión del failover
                        –   Balanceo de IPs entre nodos
                        –   Gestión de grupos de escritura/lectura
                 ●      La alta disponibilidad se hace mediante el balanceo de Ips virtuales que saltarán de un
                        servidor a otro en caso de ser necesario.
                        –   Exclusivo: Una única IP para muchos hosts. Si el host que la tiene se cae se balancea a
                            otro. Generalmente se usa en los nodos de escritura.
                        –   Balanceado: Una IP por cada host. Si uno de los hosts se cae la IP se balancea a
                            cualquier otro, pasando a tener dos IPs virtuales. Se usa para nodos en lectura.




   Dpto. Soporte SSAA                                          - 19 -                                September 25, 2011

domingo 25 de septiembre de 11
Replicación – Soluciones de terceros MMM




      •    Se necesita un nodo más, que será el nodo de control
      •    La separación de escrituras y lecturas se tiene que seguir haciendo a nivel de aplicación
      •    Nos da balanceo de Ips en nodos maestro y esclavo
      •    Es una alternativa a lo visto anteriormente, DRBD + Heartbeat
      •    Software libre, acceso a código fuente y sin coste
      •    Soporte empresarial por parte de Percona http://www.percona.com




   Dpto. Soporte SSAA                                    - 20 -                                  September 25, 2011

domingo 25 de septiembre de 11
Replicación – Galera Multi Master Síncrona




      •    Existe una solución llamada MySQL Galera, que nos proporciona replicación Síncrona y Multi
           Master
                                  http://www.codership.com/products/mysql_galera

      •    Dispone de transacciones y bloqueo de tablas distribuido
      •    Es síncrono, hasta que todos los nodos no hagan commit no se devuelve el resultado de la
           transacción
      •    Todos los nodos están a la par, no se producen latencias en la replicación
      •    ¡Es una modificación de InnoDB! Por lo tanto, solo vale para tablas InnoDB
      •    Es software libre, por lo que tenemos acceso al código fuente y no tiene coste de licencias
      •    Hay soporte comercial por parte de Codership.




   Dpto. Soporte SSAA                                   - 21 -                                  September 25, 2011

domingo 25 de septiembre de 11
Replicación - Tungsten




      •    http://www.continuent.com/
      •    Es un sistema de replicación escrito en Java que corre una capa por encima de MySQL y
           PostgreSQL.
      •    Soporta replicación de MySQL a PostgreSQL y Oracle.
      •    Y más cosas:
            – Filtro de transacciones
            – Time delay replication
            – Chequeos de consistencia
            – Replicación multi-master
            – Replicación en paralelo
            – Read/Write Splitting
            – Balanceo de lecturas
            – IPs balanceadas

                                 http://www.continuent.com/solutions/featurematrix




   Dpto. Soporte SSAA                                   - 22 -                               September 25, 2011

domingo 25 de septiembre de 11
Replicación - Sandbox
                                                                             SandBox


               ●   Para crear una laboratorio de pruebas podemos:
                   – Montar equipos físicos e instalarlos (de locos).
                   – Montar máquinas virtuales.
                   – Usar ¡sandbox!




domingo 25 de septiembre de 11
Replicación - Sandbox
                                                                          SandBox


               ●   SandBox nos permite:
                   – Montar sistemas de replicación
                   – Probar versiones nuevas de MySQL fácilmente
                   – Manejar múltiples instancias de MySQL desde un único punto.
                   – Te olvidas de rmps, sources, debs... ¡tar.gz binario!
                   – Testear
                   – Testear
                   – Testear...




domingo 25 de septiembre de 11
Replicación - Sandbox
                                                                          SandBox


               ●   No es un producto oficial de MySQL.
               ●   Está escrito el perl…

                                   http://mysqlsandbox.net/
               ●   Tendremos que descargar un paquete tar.gz de MySQL y
                   Sandbox.




domingo 25 de septiembre de 11
Replicación - Sandbox
                                                            Instalación


               ●   ¡Como root!


               [root@localhost]# perl Makefile.PL
               [root@localhost]# make
               [root@localhost]# make install

               ●   Listo.




domingo 25 de septiembre de 11
Replicación - Sandbox
                                                                      Uso de SandBox


               ●   Installing /usr/bin/make_multiple_sandbox
               ●   Installing /usr/bin/make_sandbox_from_source
               ●   Installing /usr/bin/test_sandbox
               ●   Installing /usr/bin/sbtool
               ●   Installing /usr/bin/make_sandbox
               ●   Installing /usr/bin/sb
               ●   Installing /usr/bin/make_replication_sandbox
               ●   Installing /usr/bin/msandbox
               ●   Installing /usr/bin/make_sandbox_from_installed
               ●   Installing /usr/bin/low_level_make_sandbox
               ●   Installing /usr/bin/make_multiple_custom_sandbox




domingo 25 de septiembre de 11
Replicación - Sandbox




      •    Crear una replicación Master-Slave con dos nodos

      root@localhost ~]# make_replication_sandbox --how_many_slaves=2 /root/
           mysql-5.5.10-linux2.6-x86_64.tar.gz
      installing and starting master
      installing slave 1
      installing slave 2
      starting slave 1
      .. sandbox server started
      starting slave 2
      .. sandbox server started
      initializing slave 1
      initializing slave 2
      replication directory installed in $HOME/sandboxes/rsandbox_5_5_10




   Dpto. Soporte SSAA                                 - 28 -                   September 25, 2011

domingo 25 de septiembre de 11
Replicación - Sandbox
                                             Uso de SandBox


               ●   Parar sandbox:
                   – stop
               ●   Arrancar sandbox:
                   – start
               ●   Utilizar sandbox:
                   – use
               ●   Reiniciar sandbox:
                   – restart
               ●   Limpiar el sandbox:
                   – clean




domingo 25 de septiembre de 11
Replicación - Sandbox
                                          Crear entorno maestro-esclavo


               ●   Acceder al maestro
                   – m1
               ●   Acceder al esclavo 1
                   – s1
               ●   Acceder al esclavo 2
                   – s2
               ●   Chequear esclavos
                   – check_slaves




domingo 25 de septiembre de 11
Replicación - Resumen



      •    Cosas a recordar:
            – No se puede balancear la carga en escrituras
            – Para escalar escrituras, hay que escalar verticalmente
            – La separación de lecturas/escrituras se debe hacer a nivel de aplicación
            – Las lecturas se pueden balancear con un simple balanceador hardware o software con
               chequeos de salud
            – La replicación es asíncrona
            – Las replicaciones se rompen
             – Las replicaciones se rompen
             – Las replicaciones se rompen
             –   No existen proceso automáticos de reparación, son manuales (técnico)
             –   Si un Master se cae, el Slave no se autopromociona a Master. Proceso manual.
             –   Un slave solo puede tener un único máster, lo que limita el tipo de arquitectura a diseñar
             –   La alta disponibilidad en Masters necesita balanceo de IP y en algunos casos DRBD
             –   Es recomendable el chequeo activo y constante de la integridad de datos en Master Master
             –   Existen soluciones de terceros que funcionan bien, pero se necesita KnowHow
             –   Cada solución debe ser estudiada al detalle, no hay una regla universal
             –   Si a un cliente le sirve una solución, eso no la convierte en la plantilla para todos los demás
             –   Cuidado con los Split Brain. Si se cae el Switch, estamos vendidos
             –   Y muchas más cosas… 



   Dpto. Soporte SSAA                                      - 31 -                                    September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster




                                 MySQL Cluster




   Dpto. Soporte SSAA                  - 32 -    September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Introducción




      •    MySQL Cluster es la versión de MySQL pensada para Alta Disponibilidad, Escalabilidad y Alto
           Rendimiento
      •    La configuración y puesta en marcha difiere completamente de la versión estandar de la base de
           datos
      •    Requiere gran cantidad de memoria RAM
            – Índices en RAM siempre
            – Datos en RAM o en disco duro
      •    El engine es ndbcluster, no se puede usar InnoDB o MyISAM en cluster
      •    No es una base de datos de propósito general
            – Subqueries lentas
            – Joins lentas
            – No soporta integridad referencial y claves externas
            – No hay rollbacks parciales ni savepoints, solo rollbacks completos
            – No se garantiza el commit




   Dpto. Soporte SSAA                                  - 33 -                                 September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster – Tipos de nodos




      •    Para tener alta disponibilidad debes tener al menos 4 nodos
      •    Pero a modo de pruebas puedes montarlo en 1, 2 o 3. Pero solo para pruebas, o pierdes HA!
      •    mysqld
            – Al cluster se puede acceder usando la API o mediante un servicio mysqld
            – Al menos debemos tener dos nodos mysqld o tendremos un SPOF
      •    ndbd
            – Ndbd son los nodos de almacenamiento. Estos deben tener la capacidad de procesamiento
                y la memoria RAM suficiente para trabajar con los datos.
            – Al menos debemos tener dos nodos ndbd
            – Si queremos usar múltiples cores, el demonio será ndbmtd
      •    ndbd_mgm
            – Es el nodo de Management. Tiene la configuración del cluster
            – No es necesario más de uno, pero consume tan poco que se pueden tener dos
            – Nosotros lo usamos para lanzar backups, reiniciar nodos, activar el log…
            – Los nodos ndbd lo usan al entrar en el cluster para recoger la configuración




   Dpto. Soporte SSAA                                - 34 -                               September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster – Tipos de nodos




      •    La web de MySQL recomienda 5 servidores:
            – 2 ndbd
            – 2 mysqld
            – 1 ndb_mgmd
      •    Podemos mejorar esta arquitectura y hacerla mas barata montando un ndb_mgmd en cada
           mysqld:
            – 2 ndbd
            – 2 mysqld + ndb_mgmd
      •    De esta forma mejoramos la recomendación de MySQL, añadiendo HA a ndb_mgmd y
           ahorrándonos un servidor
      •    Todo lo que se monte reduciendo esa arquitecturá funcionará igualmente, pero has perdido el HA
      •    ¿Para que quieres un MySQL Cluster, si luego el diseño de la arquitectura es erroneo?
      •    No se debe juntar mysqld y ndbd en un mismo host, son los nodos que más consumen y
           degradará el rendimiento




   Dpto. Soporte SSAA                                  - 35 -                                 September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster – Tipos de nodos




      •    Además de decidir cuantos nodos tendrá nuestro cluster, hay que decidir cuantas réplicas se
           configurarán
      •    Una réplica es una copia completa de la BBDD
      •    Los nodos de almacenamiento se dividen en node groups automáticamente
      •    La fórmula es muy complicada:
                                                    N/R=G
      •    Donde N es número de nodos, R número de réplicas y G número resultante de grupos
      •    2 nodos / 2 réplicas = 1 grupo de nodos
      •    4 nodos / 2 réplicas = 2 grupos de nodos
      •    5 nodos / 2 réplicas = ERROR

      •    La base de datos será accesible y funcional siempre y cuando no se pierda ningún node group
      •    Un grupo de nodos está vivo siempre y cuando quede un nodo vivo dentro del grupo
      •    El número de particiones será igual al número de data nodes




   Dpto. Soporte SSAA                                   - 36 -                                 September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster – Tipos de nodos



                                 Node Group 1




                                 Node Group 2


   Dpto. Soporte SSAA                 - 37 -                     September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    El fichero de configuración lo carga el nodo de management. Tiene la siguiente estructura:

      [NDBD DEFAULT]
      [NDB_MGMD]
      [MYSQLD DEFAULT]
      [API DEFAULT]
      [NDB_MGMD]
      [NDBD]
      [MYSQLD]
      [API]

      •    Cada nodo tiene su propio fichero de configuración en /etc/my.cnf con los parámetros de
           arranque definidos




   Dpto. Soporte SSAA                                   - 38 -                                  September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      [NDBD DEFAULT]
      NoOfReplicas=2
      LockPagesInMainMemory=1
      DataDir=/var/lib/mysql-cluster
      DataMemory=5120M
      IndexMemory=512M
      ODirect=1
      NoOfFragmentLogFiles=300
      MaxNoOfConcurrentOperations=100000
      TimeBetweenGlobalCheckpoints=1000
      TimeBetweenEpochs=200
      DiskCheckpointSpeed=10M
      DiskCheckpointSpeedInRestart=100M
      RedoBuffer=32M
      MaxNoOfTables=1024
      MaxNoOfAttributes=10000
      MemReportFrequency=3600
      BackupReportFrequency=10
      LogLevelStartup=15
      LogLevelShutdown=15
      LogLevelCheckpoint=8
      LogLevelNodeRestart=15
      MaxNoOfExecutionThreads=8




   Dpto. Soporte SSAA                      - 39 -                  September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      [NDB_MGMD]
      NodeId=1
      HostName=192.168.0.33
      DataDir=/var/lib/mysql-cluster


      [NDBD]
      NodeID=2
      HostName=192.168.0.32


      [NDBD]
      NodeId=3
      HostName=192.168.0.31


      [MYSQLD]
      NodeId=4
      HostName=192.168.0.30


      [API]
      NodeId=5




   Dpto. Soporte SSAA                  - 40 -                  September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    Par salvaguardar los datos se hacen dos checkpoints
      •    LocalCheckpoint:
            – Es un checkpoint a nivel de nodo
            – Se realiza en todos los nodos de forma más o menos concurrente
            – Cuando se hace un LCP, el nodo local guarda los datos al disco duro
            – El valor no es segundos , es una fórmula que da como resultado megas de datos
            – Si por ejemplo, el valor es 20:
                  • 4 × 220
            – 4194304 = 4 MB
            – Cada 4MB los nodos harán checkpoint

      •    GlobalCheckpoint:
            – Es un checkpoint… global
            – Las transacciones de los nodos se sincroniza y los redo log se escriben a disco duro
            – El valor es en milisegundos




   Dpto. Soporte SSAA                                  - 41 -                                 September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    NoOfFragmentLogFiles
      •    Indica el número de redo log files
      •    Los redo logs se escriben en anillo, la cabeza nunca debe encontrarse con la cola
      •    Los redo log de una transacción no se borran hasta que no pasan dos LocalCheckpoint desde
           que se escribió el dato
      •    El parámetro por defecto es 16
      •    16 grupos de 4 ficheros de 16 megas = 1024 megas
      •    Este valor no se puede cambiar en caliente, necesita reiniciarse el cluster con --initial




   Dpto. Soporte SSAA                                 - 42 -                                September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    El Nodo MySQL debe conocer la IP del Management
      •    Además, se pueden configurar todas las opciones de cacheo y buffer como en cualquier otro
           mysqld

      [client]
      port=3306
      socket=/var/lib/mysql/mysql.sock


      [mysqld]

      ndbcluster
      # IP address of the cluster management node
      ndb-connectstring=192.168.0.33
      default-storage-engine=NDBCLUSTER
      max_connections=1000
      query_cache_size=16M


      [mysql_cluster]
      # IP address of the cluster management node
      ndb-connectstring=192.168.0.33
      •    El binario es mysqld



   Dpto. Soporte SSAA                                  - 43 -                                September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    Para saber en que grupos se debe poner la configuración:

      [root@xxxxxx ~]# mysqld --verbose --help | head -n 30
      110307 9:07:42 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!


      mysqld Ver 5.1.51-ndb-7.1.10-cluster-gpl for unknown-linux-gnu on x86_64 (MySQL Cluster Server (GPL))
      Copyright (C) 2000-2008 MySQL AB, by Monty and others.
      Copyright (C) 2008 Sun Microsystems, Inc.
      This software comes with ABSOLUTELY NO WARRANTY. This is free software,
      and you are welcome to modify and redistribute it under the GPL license


      Starts the MySQL database server.


      Usage: mysqld [OPTIONS]


      Default options are read from the following files in the given order:
      /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
      The following groups are read: mysql_cluster mysqld server mysqld-5.1




   Dpto. Soporte SSAA                                                - 44 -                                            September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    Para los nodos ndbd se sigue el mismo procedimiento:
            – Conocer la sección del my.cnf
            – Indicar la IP del management
            – Insertar más opciones si se desea (--help)
      •    Por ejemplo:

      [root@llwg052-y ~]# cat /etc/my.cnf
      [ndbd]
      ndb-mgmd-host = 192.168.0.33


      •    El nodo management le dará un NodeId dependiendo de la IP de donde se conecte.
      •    Hay dos binarios:
            – nbdb para monocore
            – ndbmtd para multicore
      •    La primera vez que pongamos en marcha los nodos se deberán arrancar con --initial
      •    Hasta que los nodos no estén en macha, mysqld no se podrá conectar




   Dpto. Soporte SSAA                                  - 45 -                                  September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Configuración




      •    Orden de arranque
            – ndb_mgmd
            – ndbmtd 1
            – ndbmtd 2
            – ndbmtd X
            – mysqld
      •    Cuando todo esté en marcha, podremos hacer uso de la consola de management
      [root@xxxxx ~]# ndb_mgm
      -- NDB Cluster -- Management Client --
      ndb_mgm> show
      Connected to Management Server at: localhost:1186
      Cluster Configuration
      ---------------------
      [ndbd(NDB)]
 2 node(s)
      id=2
@192.168.0.32 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)
      id=3
@192.168.0.31 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0)


      [ndb_mgmd(MGM)]
         1 node(s)
      id=1
@192.168.0.33 (mysql-5.1.51 ndb-7.1.10)


      [mysqld(API)]
 2 node(s)
      id=4
@192.168.0.30 (mysql-5.1.51 ndb-7.1.10)
      id=5 (not connected, accepting connect from any host)


   Dpto. Soporte SSAA                                           - 46 -                    September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Backup




      •    El backup se puede lanzar desde la consola de management

      START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
      ABORT BACKUP <backup id>


      •    Cada nodo de almacenamiento hará backup de sus datos en disco local

      •    Metadatos
            – BACKUP-backup_id.node_id.ctl
      •    Datos de las tablas
            – BACKUP-backup_id-0.node_id.data
      •    Log de transacciones
            – BACKUP-backup_id.node_id.log

      •    El backup siempre es completo




   Dpto. Soporte SSAA                                   - 47 -                            September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Backup




      •    Se hace con la utilidad de consola ndb_restore
      •    A la hora de restaurar es necesario:
            – Disponer todos los datos de backup de los nodos en una sola carpeta
            – Que le nodo desde el que se lanza el backup tenga acceso al management
      •    Por defecto intentará restaurar todo, metadatos y datos
      •    Si ve que la tabla existe, no sobreescribirá, dará error
      •    Será necesario hacer uso de:
            – include-databases
            – exclude-databases
            – include-tables
            – exclude-tables
      •    Si no se indica connect-string se hará conectará a localhost




   Dpto. Soporte SSAA                               - 48 -                             September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Backup




      •    Restauramos metadatos:

      ndb_restore -n 3 -m -b 4 --include-tables=employees.salaries /tmp/BACKUP-02032011/
      Nodeid = 3
      Backup Id = 4
      backup path = /tmp/BACKUP-02032011/
      Including tables: employees.salaries
      Opening file '/tmp/BACKUP-02032011/BACKUP-4.3.ctl'
      Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.51 ndb-7.1.10
      Stop GCP of Backup: 59800
      Connected to ndb!!
      Successfully restored table `employees/def/salaries`
      Successfully restored table event REPL$employees/salaries
      Successfully created index `PRIMARY` on `salaries`
      Successfully created index `emp_no` on `salaries`


      NDBT_ProgramExit: 0 - OK




   Dpto. Soporte SSAA                                         - 49 -                            September 25, 2011

domingo 25 de septiembre de 11
MySQL Cluster - Backup




      •    Restauramos datos:

      ndb_restore -n 3 -r -b 4 --include-tables=employees.salaries /tmp/BACKUP-02032011/
      Nodeid = 3
      Backup Id = 02032011
      backup path = /tmp/BACKUP-4/
      Including tables: employees.salaries
      Opening file '/tmp/BACKUP-4/BACKUP-4.3.ctl'
      Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.51 ndb-7.1.10
      Stop GCP of Backup: 59800
      Connected to ndb!!
      Opening file '/tmp/BACKUP-4/BACKUP-4-0.3.Data'
      _____________________________________________________
      Processing data in table: employees/def/employees(7) fragment 1
      _____________________________________________________
      Processing data in table: mysql/def/ndb_schema(4) fragment 1
      […]
      Opening file '/tmp/BACKUP-4/BACKUP-1032011.3.log'
      Restored 0 tuples and 0 log entries


      NDBT_ProgramExit: 0 - OK




   Dpto. Soporte SSAA                                                - 50 -                         September 25, 2011

domingo 25 de septiembre de 11
Se acabó




                                 ¿Preguntas?




   Dpto. Soporte SSAA                 - 51 -   September 25, 2011

domingo 25 de septiembre de 11

Mais conteúdo relacionado

Mais procurados

Mysql Seguridad Replicacion
Mysql Seguridad ReplicacionMysql Seguridad Replicacion
Mysql Seguridad Replicacion
christian nieto
 
Replicación maestro
Replicación maestroReplicación maestro
Replicación maestro
jaiverlh
 
Instalacion y configuracion de postgre sql
Instalacion y configuracion de postgre sqlInstalacion y configuracion de postgre sql
Instalacion y configuracion de postgre sql
UPTM
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
betabeers
 

Mais procurados (19)

My SQL
My SQLMy SQL
My SQL
 
Tomcat y Jboss
Tomcat y JbossTomcat y Jboss
Tomcat y Jboss
 
Mysql Seguridad Replicacion
Mysql Seguridad ReplicacionMysql Seguridad Replicacion
Mysql Seguridad Replicacion
 
Mysql
MysqlMysql
Mysql
 
Replicación maestro
Replicación maestroReplicación maestro
Replicación maestro
 
Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1
 
Arquitecturas so
Arquitecturas soArquitecturas so
Arquitecturas so
 
Ubuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty JackalopeUbuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty Jackalope
 
Primeros pasos tema_11_bis
Primeros pasos tema_11_bisPrimeros pasos tema_11_bis
Primeros pasos tema_11_bis
 
Monitorización
MonitorizaciónMonitorización
Monitorización
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacion
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Instalacion y configuracion de postgre sql
Instalacion y configuracion de postgre sqlInstalacion y configuracion de postgre sql
Instalacion y configuracion de postgre sql
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQL
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
 
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphereVagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
 
Manual de instalacion y configuracion de nagios
Manual de instalacion y configuracion de nagiosManual de instalacion y configuracion de nagios
Manual de instalacion y configuracion de nagios
 
Manual clase VMware
Manual clase VMwareManual clase VMware
Manual clase VMware
 
Gns3
Gns3Gns3
Gns3
 

Destaque

Curso php dia1
Curso php dia1Curso php dia1
Curso php dia1
cognos_uie
 
Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01
gama ortega
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sql
yanetzis
 
Zookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale SystemsZookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale Systems
Leandro Lera Romero
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
Rightster
 

Destaque (20)

My sql para principiantes
My sql para principiantesMy sql para principiantes
My sql para principiantes
 
Manual del cluster mysql
Manual del cluster mysqlManual del cluster mysql
Manual del cluster mysql
 
Curso php dia1
Curso php dia1Curso php dia1
Curso php dia1
 
Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01Estructurabasicaphp 130216112853-phpapp01
Estructurabasicaphp 130216112853-phpapp01
 
Curso Básico PHP
Curso Básico PHPCurso Básico PHP
Curso Básico PHP
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sql
 
Guía de pgpool Paso a Paso
Guía de pgpool Paso a PasoGuía de pgpool Paso a Paso
Guía de pgpool Paso a Paso
 
Cluster con postgresql
Cluster con postgresqlCluster con postgresql
Cluster con postgresql
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
Zookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale SystemsZookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale Systems
 
Kaazing Gateway + Apache Active MQ + Javascript + Stomp
Kaazing Gateway + Apache Active MQ + Javascript + StompKaazing Gateway + Apache Active MQ + Javascript + Stomp
Kaazing Gateway + Apache Active MQ + Javascript + Stomp
 
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Manual de instalacion mysql
Manual de instalacion mysqlManual de instalacion mysql
Manual de instalacion mysql
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basic
 
Conferencia 2: El esquema
Conferencia 2: El esquemaConferencia 2: El esquema
Conferencia 2: El esquema
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Exposicion Mysql
Exposicion MysqlExposicion Mysql
Exposicion Mysql
 
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API ExamplesApache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
 

Semelhante a MySQL - High Availability - Load Balacing - Cluster

Crear bases de datos replicadas maestro
Crear bases de datos replicadas maestroCrear bases de datos replicadas maestro
Crear bases de datos replicadas maestro
Gustavo Guerra
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
5 integración-omega-24-oct-06
5 integración-omega-24-oct-065 integración-omega-24-oct-06
5 integración-omega-24-oct-06
Omega Peripherals
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Mysql Latinoamérica
 
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
SUSE España
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql Administracion
Irontec
 

Semelhante a MySQL - High Availability - Load Balacing - Cluster (20)

Mysq Replication
Mysq ReplicationMysq Replication
Mysq Replication
 
Alta disponibilidad con MySQL
Alta disponibilidad con MySQLAlta disponibilidad con MySQL
Alta disponibilidad con MySQL
 
Alternativas de alta disponiblidad en MySQL - MySQL Meetup - Montevideo - Mar...
Alternativas de alta disponiblidad en MySQL - MySQL Meetup - Montevideo - Mar...Alternativas de alta disponiblidad en MySQL - MySQL Meetup - Montevideo - Mar...
Alternativas de alta disponiblidad en MySQL - MySQL Meetup - Montevideo - Mar...
 
Crear bases de datos replicadas maestro
Crear bases de datos replicadas maestroCrear bases de datos replicadas maestro
Crear bases de datos replicadas maestro
 
MySQL de 1995 a 5.5
MySQL de 1995 a 5.5MySQL de 1995 a 5.5
MySQL de 1995 a 5.5
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia Replicación
 
Diagnóstico y resolución problemas mirroring AlwaysOn
Diagnóstico y resolución problemas mirroring AlwaysOnDiagnóstico y resolución problemas mirroring AlwaysOn
Diagnóstico y resolución problemas mirroring AlwaysOn
 
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
 
Charla técnica comercial v3.0 junio 2014 db visit productos
Charla técnica comercial v3.0 junio 2014 db visit productosCharla técnica comercial v3.0 junio 2014 db visit productos
Charla técnica comercial v3.0 junio 2014 db visit productos
 
UYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misteriosUYOUG 2010 - RMAN sin misterios
UYOUG 2010 - RMAN sin misterios
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
5 integración-omega-24-oct-06
5 integración-omega-24-oct-065 integración-omega-24-oct-06
5 integración-omega-24-oct-06
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
 
Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013
 
Guias y recomendaciones para instalar y configurar clusters de sql server
Guias y recomendaciones para instalar y configurar clusters de sql serverGuias y recomendaciones para instalar y configurar clusters de sql server
Guias y recomendaciones para instalar y configurar clusters de sql server
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
Transformación Digital: Sistemas de Misión Crítica, SAP, Zero Downtime y High...
 
E3 pt act_2_5_1_2
E3 pt act_2_5_1_2E3 pt act_2_5_1_2
E3 pt act_2_5_1_2
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql Administracion
 

Mais de Miguel Angel Nieto (10)

Query planner
Query plannerQuery planner
Query planner
 
MySQL 5.6 GTID in a nutshell
MySQL 5.6 GTID in a nutshellMySQL 5.6 GTID in a nutshell
MySQL 5.6 GTID in a nutshell
 
Curso SMTP avanzado
Curso SMTP avanzadoCurso SMTP avanzado
Curso SMTP avanzado
 
Apache avanzado
Apache avanzadoApache avanzado
Apache avanzado
 
Curso SMTP
Curso SMTPCurso SMTP
Curso SMTP
 
Curso básico Linux
Curso básico LinuxCurso básico Linux
Curso básico Linux
 
Curso Squid avanzado
Curso Squid avanzadoCurso Squid avanzado
Curso Squid avanzado
 
Apache
ApacheApache
Apache
 
Nfs, Nis, DHCP
Nfs, Nis, DHCPNfs, Nis, DHCP
Nfs, Nis, DHCP
 
Administración Zimbra
Administración ZimbraAdministración Zimbra
Administración Zimbra
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (15)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 

MySQL - High Availability - Load Balacing - Cluster

  • 1. Base de datos MySQL September 25, 2011 domingo 25 de septiembre de 11
  • 2. Resumen • Replicación en MySQL – Introducción – Tipos de nodos – Tipos de arquitecturas – Limitaciones – Software de terceros – Resumen • MySQL Cluster – Introducción – Tipos de nodos – Configuración – Backup – Restore Dpto. Soporte SSAA -2- September 25, 2011 domingo 25 de septiembre de 11
  • 3. Replicación MySQL Replicación MySQL Dpto. Soporte SSAA -3- September 25, 2011 domingo 25 de septiembre de 11
  • 4. Replicación – Introducción • Nodo Master – Sirve para escrituras y lecturas – Guarda los cambios en un log binario – Almacena la posición y el fichero en el que se encuentra el log • Nodo Slave – Sirve para lecturas – Puedes escribir, pero rompes la replicación – Se suele usar para lanzar backups – Puede tener engines diferentes al master Dpto. Soporte SSAA -4- September 25, 2011 domingo 25 de septiembre de 11
  • 5. Replicación – Master Slave Maestro-Esclavo ● Un maestro, múltiples esclavos. ● En el maestro se escribe, en el esclavo se lee. Dpto. Soporte SSAA -5- September 25, 2011 domingo 25 de septiembre de 11
  • 6. Replicación – Introducción • La replicación se basa en los logs binarios – Un log binario guarda todas las modificaciones que se hacen a la base de datos – El nodo maestro guarda las DDL (alter, create table, create index) y DML (insert, update, delete, etc.) – El nodo esclavo se conecta al de escritura para leer dicho log binario y reaplicar los cambios • En el master se suele logear todo: – log_bin=mysql-bin • Y el filtrado se realiza en el slave: – replicate-do-db (no!) – replicate-ignore-db (no!) – replicate-wild-do-table (si) • Límites: – Un Slave solo puede tener un Master. Dpto. Soporte SSAA -6- September 25, 2011 domingo 25 de septiembre de 11
  • 7. Replicación - Introducción • Valores recomendados para la replicación: – sync_binlog (escritura forzada a disco) – slave-net-timeout (tiempo que debe transcurrir para que el slave de por caida la conexión) – master-connect-retry (tiempo entre intentos de conexión) • Para comprobar el estado del master: – show master status; • Para comprobar el estado del slave: – show slave status; • Arrancar procesos slave: – start slave; • Parar procesos slave: – stop slave; Dpto. Soporte SSAA -7- September 25, 2011 domingo 25 de septiembre de 11
  • 8. Replicación - Introducción • Para montar la replicación es necesario conocer la posición y fichero en el cual se encuentra el log binario • Si no hay actividad es sencillo, siempre estará en la misma posición • Si hay actividad no es tan facil, es necesario sacar una copia consistente en un punto concreto mysqldump --master-data=1 • Con esta opción incluimos en el dump el fichero y posición en el cual se comenzó el backup. • Se recomienda un bloqueo de tablas. mysql> show master status; +-------------------+-----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+-----------+--------------+------------------+ | mysqld-bin.004446 | 787553149 | | | +-------------------+-----------+--------------+------------------+ 1 row in set (0.00 sec) Dpto. Soporte SSAA -8- September 25, 2011 domingo 25 de septiembre de 11
  • 9. Replicación - Introducción • Creamos un usuario para que el slave se pueda conectar al master: mysql> CREATE USER 'repl'@‘10.10.0.2' IDENTIFIED BY 'slavepass'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@‘10.10.0.2'; • Una vez hecho, lo conectamos al master: mysql> CHANGE MASTER TO -> MASTER_HOST=’10.10.0.1', -> MASTER_USER='repl', -> MASTER_PASSWORD=‘slavepass', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='master2-bin.001', -> MASTER_LOG_POS=4; Dpto. Soporte SSAA -9- September 25, 2011 domingo 25 de septiembre de 11
  • 10. Replicación - Introducción *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: xxxxx-y.servidoresdns.net Master_User: masteruser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysqld-bin.004446 Read_Master_Log_Pos: 901561386 Relay_Log_File: mysqld-relay-bin.000605 Relay_Log_Pos: 901561524 Relay_Master_Log_File: mysqld-bin.004446 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: xxxx.% Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 901561386 Relay_Log_Space: 901561524 Until_Condition: None Until_Log_File: Dpto. Soporte SSAA - 10 - September 25, 2011 domingo 25 de septiembre de 11
  • 11. Replicación – Master Slave • La separación de escrituras/lecturas se debería hacer a nivel de aplicación – O con un balanceador de capa 7 – O con software de terceros (MySQL Proxy, Tungsten, etc.) Hace falta KnowHow. • Se pueden balancear las lecturas entre los diferentes esclavos usando un balanceador hardware o software (keepalived, HAProxy…). Importante chequeos de salud • Importante recordar, la replicación es asíncrona. Puede ser que el esclavo no esté a la par con el maestro. Este punto es necesario conocerlo y darlo a conocer • Los esclavos, en función del tipo de querys, necesitarán un tunning diferente al que se establezca en el maestro Dpto. Soporte SSAA - 11 - September 25, 2011 domingo 25 de septiembre de 11
  • 12. Replicación – Master Master Maestro-Maestro ● Lo que se escribe en uno se replica en el otro. ● Se puede escribir en los dos. Dpto. Soporte SSAA - 12 - September 25, 2011 domingo 25 de septiembre de 11
  • 13. Replicación – Master Master • Balancear las escrituras entre los dos masters no supone repartir carga, ¡los dos tienen que escribir los datos! • Al no existir transacciones distribuidas, un lock en master1 no es un lock en master2, por lo que tendrás datos inconsistentes • Resumiendo NO HAY ESCALABILIDAD A NIVEL DE ESCRITURAS, NO SE PUEDEN BALANCEAR • Se debe escribir en un nodo o en otro, pero no en los dos al mismo tiempo. • Por ejemplo, Keepalived + VRRP, DRBD + Heartbeat, etc. ¡Balanceo de IP! • Balancear una IP, que será contra la que ataque la aplicación, y que esta salte de un nodo a otro si se produce alguna caida. • El balanceo de Ips habrá que consultarlo con redes ¿Problemas en cloud con las MAC Address? ¿Asignación de Ips por puerto de Switch? • Cuidado con los Split Brains Dpto. Soporte SSAA - 13 - September 25, 2011 domingo 25 de septiembre de 11
  • 14. Replicación – Master Master • Como hemos dicho, un esclavo solo tiene un maestro. Por lo tanto, todos los esclavos apuntarán a un único maestro • Si el maestro se cae ¿Qué pasa con los esclavos? • No hay failover automático, estos seguirán apuntando al servidor caido • Se podría solucionar apuntando los esclavos a una ip virtual, pero… ¿tienen los dos maestros los ficheros binarios en la misma posición y con el mismo nombre? A-S-I-N-C-R-O-N-O • Para la arquitectura anterior, los dos maestros necesitarían compartir el mismo /var/lib/mysql y tener una IP balanceada – Heartbeat – DRBD • Existen soluciones para escalar las escrituras, pero necesitaría mucho testing, formación, comprobar que la solución se adapta al cliente y explicarle su funcionamiento, por ejemplo Spider SQL. Por lo tanto, no recomendable. • Cada cliente tiene una forma de trabajar, una aplicación, unas necesidades diferentes. Hay que estudiar cada caso por separado y ver que como se adapta Dpto. Soporte SSAA - 14 - September 25, 2011 domingo 25 de septiembre de 11
  • 15. Replicación - Circular Circular ● Lo que se escribe en uno se replica en el siguiente, este en el siguiente, este en... A → B → C→D→A ● Es la menos recomendable. En realidad está casi prohibida ;) Dpto. Soporte SSAA - 15 - September 25, 2011 domingo 25 de septiembre de 11
  • 16. Replicación - Circular Circular ● Es una forma de disponer de más de dos servidores en arquitectura maestro-maestro. ● Contra más sean los hosts implicados, mayor el caos de su administración. ● A→B→C→D→E→A ● Si el host C se cae (por ejemplo) la replicación se rompe. Lo escrito en B no se replica, lo escrito en D se replica en todos menos en C, etc. ● Si se cae por ejemplo B y D, el caos es infinito. La solución es salir corriendo. ● A no ser que no exista otra solución, no se recomienda. Dpto. Soporte SSAA - 16 - September 25, 2011 domingo 25 de septiembre de 11
  • 17. Replicación – Limitaciones • Existen una serie de limitaciones en las replicaciones a tener en cuenta – La aplicación de los cambios en el esclavo son lineales, single thread – No existen transacciones distribuidas – Los logs binarios se corrompen – La replicación es asíncrona, maestro y esclavo no van a la par – No existe comprobación activa de integridad – No hay failover automático – No hay balanceo automático – No hay repair automático – Un esclavo solo puede tener un único maestro Dpto. Soporte SSAA - 17 - September 25, 2011 domingo 25 de septiembre de 11
  • 18. Replicación – Soluciones de terceros MMM MMM Dpto. Soporte SSAA - 18 - September 25, 2011 domingo 25 de septiembre de 11
  • 19. Replicación – Soluciones de terceros MMM MMM ● Escrito en Perl… ● Características: – Monitorización de la replicación – Monitorización de los hosts – Gestión del failover – Balanceo de IPs entre nodos – Gestión de grupos de escritura/lectura ● La alta disponibilidad se hace mediante el balanceo de Ips virtuales que saltarán de un servidor a otro en caso de ser necesario. – Exclusivo: Una única IP para muchos hosts. Si el host que la tiene se cae se balancea a otro. Generalmente se usa en los nodos de escritura. – Balanceado: Una IP por cada host. Si uno de los hosts se cae la IP se balancea a cualquier otro, pasando a tener dos IPs virtuales. Se usa para nodos en lectura. Dpto. Soporte SSAA - 19 - September 25, 2011 domingo 25 de septiembre de 11
  • 20. Replicación – Soluciones de terceros MMM • Se necesita un nodo más, que será el nodo de control • La separación de escrituras y lecturas se tiene que seguir haciendo a nivel de aplicación • Nos da balanceo de Ips en nodos maestro y esclavo • Es una alternativa a lo visto anteriormente, DRBD + Heartbeat • Software libre, acceso a código fuente y sin coste • Soporte empresarial por parte de Percona http://www.percona.com Dpto. Soporte SSAA - 20 - September 25, 2011 domingo 25 de septiembre de 11
  • 21. Replicación – Galera Multi Master Síncrona • Existe una solución llamada MySQL Galera, que nos proporciona replicación Síncrona y Multi Master http://www.codership.com/products/mysql_galera • Dispone de transacciones y bloqueo de tablas distribuido • Es síncrono, hasta que todos los nodos no hagan commit no se devuelve el resultado de la transacción • Todos los nodos están a la par, no se producen latencias en la replicación • ¡Es una modificación de InnoDB! Por lo tanto, solo vale para tablas InnoDB • Es software libre, por lo que tenemos acceso al código fuente y no tiene coste de licencias • Hay soporte comercial por parte de Codership. Dpto. Soporte SSAA - 21 - September 25, 2011 domingo 25 de septiembre de 11
  • 22. Replicación - Tungsten • http://www.continuent.com/ • Es un sistema de replicación escrito en Java que corre una capa por encima de MySQL y PostgreSQL. • Soporta replicación de MySQL a PostgreSQL y Oracle. • Y más cosas: – Filtro de transacciones – Time delay replication – Chequeos de consistencia – Replicación multi-master – Replicación en paralelo – Read/Write Splitting – Balanceo de lecturas – IPs balanceadas http://www.continuent.com/solutions/featurematrix Dpto. Soporte SSAA - 22 - September 25, 2011 domingo 25 de septiembre de 11
  • 23. Replicación - Sandbox SandBox ● Para crear una laboratorio de pruebas podemos: – Montar equipos físicos e instalarlos (de locos). – Montar máquinas virtuales. – Usar ¡sandbox! domingo 25 de septiembre de 11
  • 24. Replicación - Sandbox SandBox ● SandBox nos permite: – Montar sistemas de replicación – Probar versiones nuevas de MySQL fácilmente – Manejar múltiples instancias de MySQL desde un único punto. – Te olvidas de rmps, sources, debs... ¡tar.gz binario! – Testear – Testear – Testear... domingo 25 de septiembre de 11
  • 25. Replicación - Sandbox SandBox ● No es un producto oficial de MySQL. ● Está escrito el perl… http://mysqlsandbox.net/ ● Tendremos que descargar un paquete tar.gz de MySQL y Sandbox. domingo 25 de septiembre de 11
  • 26. Replicación - Sandbox Instalación ● ¡Como root! [root@localhost]# perl Makefile.PL [root@localhost]# make [root@localhost]# make install ● Listo. domingo 25 de septiembre de 11
  • 27. Replicación - Sandbox Uso de SandBox ● Installing /usr/bin/make_multiple_sandbox ● Installing /usr/bin/make_sandbox_from_source ● Installing /usr/bin/test_sandbox ● Installing /usr/bin/sbtool ● Installing /usr/bin/make_sandbox ● Installing /usr/bin/sb ● Installing /usr/bin/make_replication_sandbox ● Installing /usr/bin/msandbox ● Installing /usr/bin/make_sandbox_from_installed ● Installing /usr/bin/low_level_make_sandbox ● Installing /usr/bin/make_multiple_custom_sandbox domingo 25 de septiembre de 11
  • 28. Replicación - Sandbox • Crear una replicación Master-Slave con dos nodos root@localhost ~]# make_replication_sandbox --how_many_slaves=2 /root/ mysql-5.5.10-linux2.6-x86_64.tar.gz installing and starting master installing slave 1 installing slave 2 starting slave 1 .. sandbox server started starting slave 2 .. sandbox server started initializing slave 1 initializing slave 2 replication directory installed in $HOME/sandboxes/rsandbox_5_5_10 Dpto. Soporte SSAA - 28 - September 25, 2011 domingo 25 de septiembre de 11
  • 29. Replicación - Sandbox Uso de SandBox ● Parar sandbox: – stop ● Arrancar sandbox: – start ● Utilizar sandbox: – use ● Reiniciar sandbox: – restart ● Limpiar el sandbox: – clean domingo 25 de septiembre de 11
  • 30. Replicación - Sandbox Crear entorno maestro-esclavo ● Acceder al maestro – m1 ● Acceder al esclavo 1 – s1 ● Acceder al esclavo 2 – s2 ● Chequear esclavos – check_slaves domingo 25 de septiembre de 11
  • 31. Replicación - Resumen • Cosas a recordar: – No se puede balancear la carga en escrituras – Para escalar escrituras, hay que escalar verticalmente – La separación de lecturas/escrituras se debe hacer a nivel de aplicación – Las lecturas se pueden balancear con un simple balanceador hardware o software con chequeos de salud – La replicación es asíncrona – Las replicaciones se rompen – Las replicaciones se rompen – Las replicaciones se rompen – No existen proceso automáticos de reparación, son manuales (técnico) – Si un Master se cae, el Slave no se autopromociona a Master. Proceso manual. – Un slave solo puede tener un único máster, lo que limita el tipo de arquitectura a diseñar – La alta disponibilidad en Masters necesita balanceo de IP y en algunos casos DRBD – Es recomendable el chequeo activo y constante de la integridad de datos en Master Master – Existen soluciones de terceros que funcionan bien, pero se necesita KnowHow – Cada solución debe ser estudiada al detalle, no hay una regla universal – Si a un cliente le sirve una solución, eso no la convierte en la plantilla para todos los demás – Cuidado con los Split Brain. Si se cae el Switch, estamos vendidos – Y muchas más cosas…  Dpto. Soporte SSAA - 31 - September 25, 2011 domingo 25 de septiembre de 11
  • 32. MySQL Cluster MySQL Cluster Dpto. Soporte SSAA - 32 - September 25, 2011 domingo 25 de septiembre de 11
  • 33. MySQL Cluster - Introducción • MySQL Cluster es la versión de MySQL pensada para Alta Disponibilidad, Escalabilidad y Alto Rendimiento • La configuración y puesta en marcha difiere completamente de la versión estandar de la base de datos • Requiere gran cantidad de memoria RAM – Índices en RAM siempre – Datos en RAM o en disco duro • El engine es ndbcluster, no se puede usar InnoDB o MyISAM en cluster • No es una base de datos de propósito general – Subqueries lentas – Joins lentas – No soporta integridad referencial y claves externas – No hay rollbacks parciales ni savepoints, solo rollbacks completos – No se garantiza el commit Dpto. Soporte SSAA - 33 - September 25, 2011 domingo 25 de septiembre de 11
  • 34. MySQL Cluster – Tipos de nodos • Para tener alta disponibilidad debes tener al menos 4 nodos • Pero a modo de pruebas puedes montarlo en 1, 2 o 3. Pero solo para pruebas, o pierdes HA! • mysqld – Al cluster se puede acceder usando la API o mediante un servicio mysqld – Al menos debemos tener dos nodos mysqld o tendremos un SPOF • ndbd – Ndbd son los nodos de almacenamiento. Estos deben tener la capacidad de procesamiento y la memoria RAM suficiente para trabajar con los datos. – Al menos debemos tener dos nodos ndbd – Si queremos usar múltiples cores, el demonio será ndbmtd • ndbd_mgm – Es el nodo de Management. Tiene la configuración del cluster – No es necesario más de uno, pero consume tan poco que se pueden tener dos – Nosotros lo usamos para lanzar backups, reiniciar nodos, activar el log… – Los nodos ndbd lo usan al entrar en el cluster para recoger la configuración Dpto. Soporte SSAA - 34 - September 25, 2011 domingo 25 de septiembre de 11
  • 35. MySQL Cluster – Tipos de nodos • La web de MySQL recomienda 5 servidores: – 2 ndbd – 2 mysqld – 1 ndb_mgmd • Podemos mejorar esta arquitectura y hacerla mas barata montando un ndb_mgmd en cada mysqld: – 2 ndbd – 2 mysqld + ndb_mgmd • De esta forma mejoramos la recomendación de MySQL, añadiendo HA a ndb_mgmd y ahorrándonos un servidor • Todo lo que se monte reduciendo esa arquitecturá funcionará igualmente, pero has perdido el HA • ¿Para que quieres un MySQL Cluster, si luego el diseño de la arquitectura es erroneo? • No se debe juntar mysqld y ndbd en un mismo host, son los nodos que más consumen y degradará el rendimiento Dpto. Soporte SSAA - 35 - September 25, 2011 domingo 25 de septiembre de 11
  • 36. MySQL Cluster – Tipos de nodos • Además de decidir cuantos nodos tendrá nuestro cluster, hay que decidir cuantas réplicas se configurarán • Una réplica es una copia completa de la BBDD • Los nodos de almacenamiento se dividen en node groups automáticamente • La fórmula es muy complicada: N/R=G • Donde N es número de nodos, R número de réplicas y G número resultante de grupos • 2 nodos / 2 réplicas = 1 grupo de nodos • 4 nodos / 2 réplicas = 2 grupos de nodos • 5 nodos / 2 réplicas = ERROR • La base de datos será accesible y funcional siempre y cuando no se pierda ningún node group • Un grupo de nodos está vivo siempre y cuando quede un nodo vivo dentro del grupo • El número de particiones será igual al número de data nodes Dpto. Soporte SSAA - 36 - September 25, 2011 domingo 25 de septiembre de 11
  • 37. MySQL Cluster – Tipos de nodos Node Group 1 Node Group 2 Dpto. Soporte SSAA - 37 - September 25, 2011 domingo 25 de septiembre de 11
  • 38. MySQL Cluster - Configuración • El fichero de configuración lo carga el nodo de management. Tiene la siguiente estructura: [NDBD DEFAULT] [NDB_MGMD] [MYSQLD DEFAULT] [API DEFAULT] [NDB_MGMD] [NDBD] [MYSQLD] [API] • Cada nodo tiene su propio fichero de configuración en /etc/my.cnf con los parámetros de arranque definidos Dpto. Soporte SSAA - 38 - September 25, 2011 domingo 25 de septiembre de 11
  • 39. MySQL Cluster - Configuración [NDBD DEFAULT] NoOfReplicas=2 LockPagesInMainMemory=1 DataDir=/var/lib/mysql-cluster DataMemory=5120M IndexMemory=512M ODirect=1 NoOfFragmentLogFiles=300 MaxNoOfConcurrentOperations=100000 TimeBetweenGlobalCheckpoints=1000 TimeBetweenEpochs=200 DiskCheckpointSpeed=10M DiskCheckpointSpeedInRestart=100M RedoBuffer=32M MaxNoOfTables=1024 MaxNoOfAttributes=10000 MemReportFrequency=3600 BackupReportFrequency=10 LogLevelStartup=15 LogLevelShutdown=15 LogLevelCheckpoint=8 LogLevelNodeRestart=15 MaxNoOfExecutionThreads=8 Dpto. Soporte SSAA - 39 - September 25, 2011 domingo 25 de septiembre de 11
  • 40. MySQL Cluster - Configuración [NDB_MGMD] NodeId=1 HostName=192.168.0.33 DataDir=/var/lib/mysql-cluster [NDBD] NodeID=2 HostName=192.168.0.32 [NDBD] NodeId=3 HostName=192.168.0.31 [MYSQLD] NodeId=4 HostName=192.168.0.30 [API] NodeId=5 Dpto. Soporte SSAA - 40 - September 25, 2011 domingo 25 de septiembre de 11
  • 41. MySQL Cluster - Configuración • Par salvaguardar los datos se hacen dos checkpoints • LocalCheckpoint: – Es un checkpoint a nivel de nodo – Se realiza en todos los nodos de forma más o menos concurrente – Cuando se hace un LCP, el nodo local guarda los datos al disco duro – El valor no es segundos , es una fórmula que da como resultado megas de datos – Si por ejemplo, el valor es 20: • 4 × 220 – 4194304 = 4 MB – Cada 4MB los nodos harán checkpoint • GlobalCheckpoint: – Es un checkpoint… global – Las transacciones de los nodos se sincroniza y los redo log se escriben a disco duro – El valor es en milisegundos Dpto. Soporte SSAA - 41 - September 25, 2011 domingo 25 de septiembre de 11
  • 42. MySQL Cluster - Configuración • NoOfFragmentLogFiles • Indica el número de redo log files • Los redo logs se escriben en anillo, la cabeza nunca debe encontrarse con la cola • Los redo log de una transacción no se borran hasta que no pasan dos LocalCheckpoint desde que se escribió el dato • El parámetro por defecto es 16 • 16 grupos de 4 ficheros de 16 megas = 1024 megas • Este valor no se puede cambiar en caliente, necesita reiniciarse el cluster con --initial Dpto. Soporte SSAA - 42 - September 25, 2011 domingo 25 de septiembre de 11
  • 43. MySQL Cluster - Configuración • El Nodo MySQL debe conocer la IP del Management • Además, se pueden configurar todas las opciones de cacheo y buffer como en cualquier otro mysqld [client] port=3306 socket=/var/lib/mysql/mysql.sock [mysqld] ndbcluster # IP address of the cluster management node ndb-connectstring=192.168.0.33 default-storage-engine=NDBCLUSTER max_connections=1000 query_cache_size=16M [mysql_cluster] # IP address of the cluster management node ndb-connectstring=192.168.0.33 • El binario es mysqld Dpto. Soporte SSAA - 43 - September 25, 2011 domingo 25 de septiembre de 11
  • 44. MySQL Cluster - Configuración • Para saber en que grupos se debe poner la configuración: [root@xxxxxx ~]# mysqld --verbose --help | head -n 30 110307 9:07:42 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root! mysqld Ver 5.1.51-ndb-7.1.10-cluster-gpl for unknown-linux-gnu on x86_64 (MySQL Cluster Server (GPL)) Copyright (C) 2000-2008 MySQL AB, by Monty and others. Copyright (C) 2008 Sun Microsystems, Inc. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Starts the MySQL database server. Usage: mysqld [OPTIONS] Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf The following groups are read: mysql_cluster mysqld server mysqld-5.1 Dpto. Soporte SSAA - 44 - September 25, 2011 domingo 25 de septiembre de 11
  • 45. MySQL Cluster - Configuración • Para los nodos ndbd se sigue el mismo procedimiento: – Conocer la sección del my.cnf – Indicar la IP del management – Insertar más opciones si se desea (--help) • Por ejemplo: [root@llwg052-y ~]# cat /etc/my.cnf [ndbd] ndb-mgmd-host = 192.168.0.33 • El nodo management le dará un NodeId dependiendo de la IP de donde se conecte. • Hay dos binarios: – nbdb para monocore – ndbmtd para multicore • La primera vez que pongamos en marcha los nodos se deberán arrancar con --initial • Hasta que los nodos no estén en macha, mysqld no se podrá conectar Dpto. Soporte SSAA - 45 - September 25, 2011 domingo 25 de septiembre de 11
  • 46. MySQL Cluster - Configuración • Orden de arranque – ndb_mgmd – ndbmtd 1 – ndbmtd 2 – ndbmtd X – mysqld • Cuando todo esté en marcha, podremos hacer uso de la consola de management [root@xxxxx ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.32 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master) id=3 @192.168.0.31 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.33 (mysql-5.1.51 ndb-7.1.10) [mysqld(API)] 2 node(s) id=4 @192.168.0.30 (mysql-5.1.51 ndb-7.1.10) id=5 (not connected, accepting connect from any host) Dpto. Soporte SSAA - 46 - September 25, 2011 domingo 25 de septiembre de 11
  • 47. MySQL Cluster - Backup • El backup se puede lanzar desde la consola de management START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED] ABORT BACKUP <backup id> • Cada nodo de almacenamiento hará backup de sus datos en disco local • Metadatos – BACKUP-backup_id.node_id.ctl • Datos de las tablas – BACKUP-backup_id-0.node_id.data • Log de transacciones – BACKUP-backup_id.node_id.log • El backup siempre es completo Dpto. Soporte SSAA - 47 - September 25, 2011 domingo 25 de septiembre de 11
  • 48. MySQL Cluster - Backup • Se hace con la utilidad de consola ndb_restore • A la hora de restaurar es necesario: – Disponer todos los datos de backup de los nodos en una sola carpeta – Que le nodo desde el que se lanza el backup tenga acceso al management • Por defecto intentará restaurar todo, metadatos y datos • Si ve que la tabla existe, no sobreescribirá, dará error • Será necesario hacer uso de: – include-databases – exclude-databases – include-tables – exclude-tables • Si no se indica connect-string se hará conectará a localhost Dpto. Soporte SSAA - 48 - September 25, 2011 domingo 25 de septiembre de 11
  • 49. MySQL Cluster - Backup • Restauramos metadatos: ndb_restore -n 3 -m -b 4 --include-tables=employees.salaries /tmp/BACKUP-02032011/ Nodeid = 3 Backup Id = 4 backup path = /tmp/BACKUP-02032011/ Including tables: employees.salaries Opening file '/tmp/BACKUP-02032011/BACKUP-4.3.ctl' Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.51 ndb-7.1.10 Stop GCP of Backup: 59800 Connected to ndb!! Successfully restored table `employees/def/salaries` Successfully restored table event REPL$employees/salaries Successfully created index `PRIMARY` on `salaries` Successfully created index `emp_no` on `salaries` NDBT_ProgramExit: 0 - OK Dpto. Soporte SSAA - 49 - September 25, 2011 domingo 25 de septiembre de 11
  • 50. MySQL Cluster - Backup • Restauramos datos: ndb_restore -n 3 -r -b 4 --include-tables=employees.salaries /tmp/BACKUP-02032011/ Nodeid = 3 Backup Id = 02032011 backup path = /tmp/BACKUP-4/ Including tables: employees.salaries Opening file '/tmp/BACKUP-4/BACKUP-4.3.ctl' Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.51 ndb-7.1.10 Stop GCP of Backup: 59800 Connected to ndb!! Opening file '/tmp/BACKUP-4/BACKUP-4-0.3.Data' _____________________________________________________ Processing data in table: employees/def/employees(7) fragment 1 _____________________________________________________ Processing data in table: mysql/def/ndb_schema(4) fragment 1 […] Opening file '/tmp/BACKUP-4/BACKUP-1032011.3.log' Restored 0 tuples and 0 log entries NDBT_ProgramExit: 0 - OK Dpto. Soporte SSAA - 50 - September 25, 2011 domingo 25 de septiembre de 11
  • 51. Se acabó ¿Preguntas? Dpto. Soporte SSAA - 51 - September 25, 2011 domingo 25 de septiembre de 11