66
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQL Cluster: El ‘ qué’ y el ‘ cómo’. Keith Hollman Principal Sales Consultant EMEA MySQL [email protected]

MySQL Cluster: El ‘qué’ y el ‘cómo’

Embed Size (px)

Citation preview

Page 1: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster: El ‘qué’ y el ‘cómo’. Keith Hollman Principal Sales Consultant EMEA MySQL [email protected]

Page 2: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Introducción

Empezando: configuración/instalación/inicio/parada

La forma más sencilla: Cluster Manager.

2

Page 3: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Oracle MySQL Soluciones de Alta Disponibilidad & Sharding

MySQL Replication

MySQL Fabric Oracle VM Template

Oracle Clusterware

Solaris Cluster

Windows Cluster

DRBD MySQL Cluster

App Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Data Layer Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Zero Data Loss MySQL 5.7 MySQL 5.7 ✔ ✔ ✔ ✔ ✔ ✔

Platform Support All All Linux Linux Solaris Windows Linux All

Clustering Mode Master +

Slaves Master +

Slaves Active/Passi

ve Active/Passive

Active/Passive

Active/Passive

Active/Passive

Multi-Master

Failover Time N/A Secs Secs + Secs + Secs + Secs + Secs + < 1 Sec

Scale-out Reads ✔ ✖ ✖ ✖ ✖ ✖ ✔

Cross-shard operations N/A ✖ N/A N/A N/A N/A N/A ✔

Transparent routing ✖ For HA ✔ ✔ ✔ ✔ ✔ ✔

Shared Nothing ✔ ✔ ✖ ✖ ✖ ✖ ✔ ✔

Storage Engine InnoDB+ InnoDB+ InnoDB+ InnoDB+ InnoDB+ InnoDB+ InnoDB+ NDB

Single Vendor Support ✔ ✔ ✔ ✔ ✔ ✖ ✔ ✔

Page 4: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Cuando pensar en MySQL Cluster

• ¿Cuáles son las consecuencias de una parada o de una caída en el rendimiento?

• ¿Cuánto esfuerzo y dinero se invierte en el desarrollo de las aplicaciones y en la gestión de la infrastructura HA?

• Estás pensando en hacer sharding en la base de datos para poder escalar las escrituras y ganar en rendimiento. ¿Y ésto cómo afecta a tu aplicación y desarrolladores?

• ¿Tus servicios necesitan ser real-time?

• ¿Los servicios que ofreces tienen un crecimiento predicible, sobretodo en escrituras?

• ¿Quieres la flexibilidad de acceder a tus datos con algo más que SQL?

4

Page 5: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Cuando NO pensar en MySQL Cluster

• La mayoría de las aplicaciones de terceros.

• Transacciones laragas.

• Índices geospaciales.

• Volumenes de datos grandes (>2TB)

• Accesos complejos al dato y muchos Full Scans de tablas.

•Cuando necesitas una base de datos basado en el almacenamiento en disco, ej. InnoDB.

5

Page 6: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Introducción a MySQL Cluster

6

Page 7: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

La historia de MySQL Cluster ”NDB”

• MySQL Cluster también conocido como la Network DataBase NDB

• Diseñado / desarrollado en Ericcson a finales de los 90.

• Documento original de diseño: ”Design and Modeling of a Parallel Data Server for Telecom Applications” del año 1997 por Michael Ronström

• Originalmente escrito en PLEX (Programming Language for EXchanges) pero convertido luego a C++.

• MySQL AB adquirió Alzato (cuyo propietario era Ericsson) final del 2003.

La base de datos en red / ”The Network DataBase NDB”

Page 8: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

La historia de MySQL Cluster ”NDB”

• Servicios de bases de datos en aquel entonces:

– SCP/SDP (Service Control/Data Point) en Redes Inteligentes.

– HLR (Home Location Register) para mantener el control sobre los teléfonos móbiles / usuarios.

– Bases de datos para gestión de redes, sobretodo información de cobro al instante (real-time charging).

La base de datos en red / ”The Network DataBase NDB”

Page 9: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

La historia de MySQL Cluster ”NDB”

• Se diseñó NDB para:

– Fiabilidad, la clase de disponibilidad de las bases de datos telco’s debería ser 6. Esto significa que cualquier parada tiene que ser menos de 30 segundos por año. Significa que no se permite paradas no-planificadas.

– Rendimiento, diseñado con alta concurrencia en mente, escalabilidad lineal cuando añadiendo servidores (data nodes) para accesos sencillos (búsquedas por PK).

– Tiempo real (real-time), los datos se guardan en memoria y el sistema está diseñado para realizar operaciones en memoria.

La base de datos en red / ”The Network DataBase NDB”

Page 10: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster resumido

Page 11: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster: Los Componentes

11

NDB API

(Aplicaciones)

Data Node (Almacenamiento de

datos)

MGM Node

(Gestión)

SQL Node

(Aplicaciones)

• Interfaz estándar de SQL • Escalabilidad horizontal para mejoras del rendimiento. • Habilita la Replica Geográfica.

• Real-time applications. • APIs C++/Java • Failover y balanceo de carga automática.

• Almacenamiento de datos (en Memoria y en Disco). • Particionamiento de datos Automática y Customizado. • Escalabilidad horizontal para aumentar capacidad y rendimiento.

• Gestión, Monitorización y Configuración. • Árbitro en situaciones de split brain/red particionada. •Logs del Cluster .

Page 12: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Nodes

• Almacena datos e índices

– En memoria

– Datos no-indexados posibles en disco.

– Contiene varios bloques, los mas importantes, LQH, TUP, ACC y TC.

• Check points de los datos realizados a disco “LCP”.

• Coordinación de Transacciones.

• Gestiona fail-over

• Realiza los backups online

• Todos conectados entre sí.

• Hasta 48

– Típicamente 2, 4.

Page 13: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Management Nodes

• Distribuyen la configuración

• Logging

• Monitorización

• Hace de Árbitro

– Impede escenarios de split-brain

• Cuando no está en funcionamiento, Cluster sigue.

– Se necesita para iniciar otros

• 1 es lo mínimo, 3 demasiados, 2 perfecto.

Page 14: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

API Nodes

• Aplicaciones escritos utilizando NDB API

– C/C++/Java

• Rápido

– No parsea SQL

• Ejemplos: – El storage engine NDBCluster

– ndb_restore

Page 15: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL Nodes

• Es MySQL con el motor NDBCluster.

– Es un API Node a la misma vez.

• Transparente para la mayoría de las aplicaciones.

• Se usa para crear tablas.

• Se usa para Replica Geográfica

– Guarda todos los cambios en Bin logs

• Puede ser un Árbitro.

• Conecta a todos los Data Nodes

Page 16: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Arquitectura

MySQL Cluster Data Nodes

Clientes

Capa Aplicaciones

Capa de Datos

Gestión

Page 17: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Escalando horizontalmente

MySQL Cluster Data Nodes

Clientes

Capa Aplicaciones

Capa de Datos

Gestión

Page 18: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster – Resistencia Extrema

MySQL Cluster Data Nodes

Clientes

Capa Aplicaciones

Capa de Datos

Gestión

Page 19: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Particionamiento I

• Particionamiento Vertical - 1:1 tablas a reducir el tamaño de las filas, tablas e índices.

• Particionamiento Horizontal - 1 Tabla separación en múltiples tablas con filas diferentes.

Page 20: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

p1 p2 p1 p2 p3

Particionamiento de Datos II

• Se particionan los datos por Primary Key por defecto.

• Valor HASH de la PK, sólo es selectivo si se proporciona la PK completa, no “la columna más a la izquierda”.

• Hash lineal, los datos sólo están desplazados (impacto bajo al hacer un “reorganize”).

Page 21: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

Data Node 3

Data Node 4 - Una partición es una parte de la tabla

- Número de particiónes = número de data nodes

- Particionamiento horizontal

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

P1

Particionamiento de Datos Automático

Page 22: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

Data Node 3

Data Node 4 Un fragmento es una partición

Número de fragmentos = # de particiónes * # de replicas

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

P1

Particionamiento de Datos Automático

Page 23: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

Data Node 3

Data Node 4 Un fragmento puede ser primario o secondario / backup

Número de fragmentos = # de particiones * # de replicas

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 24: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1

Primer Fragmento

Segundo Fragmento

Data Node 3

Data Node 4 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 25: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1

Primer Fragmento

Segundo Fragmento

F1

Data Node 3

Data Node 4 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 26: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 27: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 28: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2

Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 29: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2

F2

Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 30: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2

F4 F2

4 Particiones * 2 Replicas = 8 Fragmentos

Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

P1

Particionamiento de Datos Automático

Page 31: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 32: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F3

Primer Fragmento

Segundo Fragmento

F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

F1

F3

Particionamiento de Datos Automático

Page 33: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2 Fx

Fx

-Los node groups se crean automáticamente

- # de grupos = # de data nodes / # de replicas

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 34: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2 Fx

Fx

Mientras que haya un data node

funcionando en cada node group, tenemos

una copia completa de los datos.

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Page 35: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Mientras que haya un data node

funcionando en cada node group, tenemos

una copia completa de los datos.

Page 36: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2 Fx

Fx

Tabla T1

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

4 Particiones * 2 Replicas = 8 Fragmentos

P1

Particionamiento de Datos Automático

Mientras que haya un data node

funcionando en cada node group, tenemos

una copia completa de los datos.

Page 37: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Tabla T1 Data Node 1

Data Node 2

F1 F3

Primer Fragmento

Segundo Fragmento

ID FirstName LastName Email Phone

P2

P3

P4

Px Partición

F3 F1

Data Node 3

Data Node 4

F2 F4

F4 F2

Node Group 1

Node Group 2

4 Particiones * 2 Replicas = 8 Fragmentos

Fx

Fx

- No hay una copia completa de los datos.

- El cluster se para automáticamente.

P1

Particionamiento de Datos Automático

Page 38: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Particionamiento de Datos III

• Partición – Particionamiento Horizontal.

– Una parte de una tabla, cada Partición contiene un conjunto de filas.

– Número de Particiones == LQH

• Replica – Una copia completa de los datos.

• Node Group – Creado automáticamente

– # de grupos = # de data nodes / # de replicas

– Mientras que haya un data node funcionando en cada node group, tenemos una copia completa de los datos.

Page 39: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Introducción

Empezando: configuración/instalación/inicio/parada

La forma más sencilla: Cluster Manager.

39

Page 40: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster y los tipos de Instalaciones

• Community / GPL – http://dev.mysql.com/downloads/cluster

• Carrier Grade Edition

– http://edelivery.oracle.com

– http://support.oracle.com

• Tarball

– Instalación de manera manual.

• RPM, DEB, PKG, DMG, MSI

– Paquetes de instalación específicos para el S.O.

– Rutas y paquetes (server, client, etc.) específicas.

• Código fuente

– Compila tu propia versión. • cmake .

• make

• make install

40

Page 41: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Configuración

• Todos los nodos está definidos en el fichero config.ini

– Dividido en secciones mediante “[…]”, donde hay secciones para; • Data nodes ndb{mt}d

• Management nodes [ndb_mgmd]

• MySQL servers [mysqld]

• API nodes [ndbapi]

• Si se añade ‘default’ al nombre de la sección [ndbd default], los valores se aplican a todos.

– Se inicia el Management node con un config.ini. Debería ser el mismo para todos los management nodes del Cluster.

• Los MySQL API nodes se configuran tanto en el in config.ini y también en un my.cnf dedicado.

41

Page 42: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Configuración “config.ini” Parámetros típicos • IndexMemory y DataMemory.

• Configura MaxNoOfExecutionThreads <= #cores

– Si no, podría genera situaciones de contención → comportamiento inesperado.

• RedoBuffer=32-64M

– Si se tiene que configurar más alto → probablemente los discos sean demasiado lentos.

• FragmentLogFileSize=256M

• NoOfFragmentLogFiles= 6 x DataMemory (en MB) / (4x 256MB)

– Problema más típico – clientes nunca configuran los redo logs lo suficientemente grandes.

• Memoria para datos e índices adecuado para el tamaño de las bases de datos /índices.

• LockPagesInMainMemory=1

• MaxNoOf*

Page 43: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Configuración Tablas “Disk-based ”

• Usa “Disk Data Tables” para: – Accesos simples (lectura/escritura por PK)

– Lo mismo que para InnoDB – Puedes empezar a sufrir problemas de E/S si no se vigila (iostat).

• Configura DiskPageBufferMemory=3072M – Si se depende mucho de datos en disco, se suele recomenda su uso – igual que el

Innodb_Buffer_Pool, pero configúralo lo más alto que se pueda!

• Aumenta las posibilidades de que se cachea una página: – SharedGlobalMemory=384M-1024M

• UNDO_BUFFER=64M to 128M (Si hay mucha escritura en disco) – ¡No puedes modificar éste buffer después!

• Especificado a la hora de crear el LOGFILE GROUP: – DiskIOThreadPool=[ 8 .. 16 ]

Page 44: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Iniciando / Parando config.ini [ndb_mgmd default]

ArbitrationRank =1

DataDir =/opt/mysql/746/mgmd_data

[ndb_mgmd]

hostname =khollman-es

NodeId =1

[ndbd default]

noofreplicas =2 DataDir =/opt/mysql/746/ndbd_data

DataMemory =20M

IndexMemory =10M DiskPageBufferMemory =4M

StringMemory =5

MaxNoOfConcurrentOperations =2K MaxNoOfConcurrentTransactions =2K

SharedGlobalMemory =500K

LongMessageBuffer =512K

MaxParallelScansPerFragment =16

MaxNoOfAttributes =1000

MaxNoOfTablas =20

MaxNoOfOrderedIndexes =20

ODirect =TRUE

HeartbeatIntervalDbDb =500

HeartbeatIntervalDbApi =500

StopOnError =1

TransactionInactiveTimeout =500

TransactionDeadlockDetectionTimeout = 1200

LockPagesInMainMemory =2

[ndbd] hostname =khollman-es

datadir =/opt/mysql/746/ndbd_data

nodeid =3

[mysqld default]

[mysqld]

NodeId =10

[mysqld]

NodeId =11

[NDBAPI]

NodeId =12

[NDBAPI]

NodeId =13

44

Page 45: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Iniciando / Parando my.cnf [client]

socket =/tmp/mysql_7461.sock

[mysql]

prompt =\R:\m \d>\_

no-beep

[mysqld]

ndbcluster

datadir =/opt/mysql/746/data

ndb-connectstring =khollman-es:1186

user =mysql

port =7461

socket =/tmp/mysql_7461.sock

general-log =1

log-output =FILE

log-error =khollman-es_7461.err

slow-query-log =1

max_connections =20

innodb_log_buffer_size =8M

innodb_buffer_pool_size =64M

innodb_log_file_size =16M

innodb_flush_log_at_trx_commit =2

innodb_file_per_Tabla =1

innodb_data_home_dir =/opt/mysql/746/data

innodb_data_file_path

=ibdata1:50M;ibdata2:50M:autoextend

[mysql_cluster]

ndb-connectstring =khollman-es:1186

45

Page 46: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Iniciando / Parando

• La primera vez y cuando cambios en la configuación son necesarios: --INITIAL

– Cuando cambia el config.ini, no hay que hacer una parada completa del cluster. Reinicia ndb_mgmd con --INITIAL para limpiar la información cacheada de la configuración. Y luego reiniciar los datanodes (sin --initial).

• Iniciando # ndb_mgmd -f config.ini --config-dir=/usr/local/mysql-cluster/conf --INITIAL

# ndbd --INITIAL | ndbmtd –c localhost:1186 --INITIAL | ndbd –n (nostart)

# scripts/mysql_install_db --defaults-file=my.cnf --user=mysql

# mysqld_safe --defaults-file=my.cnf --user=mysql

46

Page 47: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Iniciando / Parando

• Iniciando – ndb_mgmd -f config.ini --config-dir=/usr/local/mysql-cluster/conf

– ndbd | ndbmtd –c localhost:1186

– mysqld_safe --defaults-file=my.cnf

• Parando – ndb_mgm –e shutdown

– ndb_mgm –e [mgmt node & datanode] 1 | 3 | 4 stop

– ndb_mgm –e [mgmt node & datanode] 1 | 3 | 4 restart – mysqladmin --defaults-file=my.cnf -uroot shutdown

47

Page 48: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Iniciando / Parando nostart ndbmtd --ndb-nodeid=3 –n

ndbmtd --ndb-nodeid=4 –n

ndb_mgm -e show

Cluster configuración

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @127.0.0.1 (mysql-5.6.17 ndb-7.3.5, not started)

id=4 @127.0.0.1 (mysql-5.6.17 ndb-7.3.5, not started)

ndb_mgm -e "all start“

ndb_mgm -e show

Cluster configuración

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @127.0.0.1 (mysql-5.6.17 ndb-7.3.5, starting, Nodegroup: 0, *)

id=4 @127.0.0.1 (mysql-5.6.17 ndb-7.3.5, starting, Nodegroup: 0)

48

Page 49: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Ficheros de Log

• Logs

– Management • Datadir: /opt/mysql/746/mgmd_data/ ndb_1_cluster.log / ndb_1_out.log

– Datanodes • Datadir: /opt/mysql/746/ndbd_data/ ndb_3_out.log / ndb_3_out.err

– SQLNodes • Datadir /opt/mysql/746/data/ hostname.err

• Errores

– El fichero de log del Cluster ndb_1_cluster.log es el mejor sitio donde empezar a investigar.

49

Page 50: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Introducción

Empezando: configuración/instalación/inicio/parada

La forma más sencilla: Cluster Manager.

50

Page 51: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 51

La forma más sencilla: Cluster Manager

Page 52: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Oracle Premier Lifetime Support

Oracle Product Certifications/Integrations

MySQL Enterprise Security

MySQL Enterprise Scalability

MySQL Cluster Manager

MySQL Enterprise Monitor/Query Analyzer

MySQL Workbench

MySQL Enterprise Audit

MySQL Enterprise Backup

Los niveles más altos de Rendimiento, Seguridad y Disponibilidad.

Page 53: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Potenciando la agilidad de DevOps, Minimizando el Downtime

Gestión Automatizada

• Iniciar/Parar nodo o todo el cluster.

• Crecimiento horizontal online.

• Reconfiguración online.

• Upgrades online.

• Backup & Restore online.

• Importar un Cluster en marcha.

Auto-recuperable

• Monitorización por nodo.

• Auto-recuperación se extiende a los sql nodes y management node.

Operaciones de Alta Disponibilidad

• Configuración consistente de todos los componentes del cluster.

• Configuraciónes persistentes.

• Agentes de HA.

Page 54: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Manager: Creando un Cluster I • Download MySQL Cluster Manager (MCM) + MySQL Cluster:

– MCM 1.3.4, elige el paquete *sin* cluster, que debería ser sobre unos 20Mb (download en https://edelivery.oracle.com/)

– MySQL Cluster 7.4.6 (download en http://downloads.mysql.com/archives/get/file/ mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz)

• Instalar y Configurar MySQL Cluster Manager

– Los binarios de MCM y Cluster tienen que estar instalados en todos los servidores donde corre algún proceso NDB.

– mkdir MCM

– cd MCM

– tar xzf /ruta/a/ mcm-1.3.4-linux-glibc2.5-x86-64bit.tar.gz

– mv mcm-1.3.4-linux-glibc2.5-x86-64bit/mcm1.3.4 .

– rmdir mcm-1.3.4-linux-glibc2.5-x86-64bit.tar.gz

– cp mcm1.3.4/etc/mcmd.ini .

– (hay que cambiar: manager-directory = /home/<user>/MCM/mcm_data)

54

Page 55: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Manager: Creando un Cluster II • Instalar los binarios Cluster

– tar xzf /ruta/a/ mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz

– mv mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64 cluster-746

• iniciar el demonio MCMD (como usuario del s.o. ‘mysql’)

– ./mcm1.3.4/bin/mcmd --defaults-file=./mcmd.ini –daemon

• Configurar el Cluster

– Connect to MCM and configure cluster (only from one site):

– Start mcm client: ./mcm1.3.4/bin/mcm

– (se necesita en el PATH la ruta del CLI de mysql, ej. /usr/local/mysql/bin/mysql ya que el CLI mcm se basa en él)

55

Page 56: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster Manager: Creando un Cluster III mcm> list commands

mcm> create site --hosts=127.0.0.1 mysite;

mcm> list sites;

mcm> list hosts mysite;

mcm> add package --basedir=/home/<user>/MCM/cluster-746 cluster746;

mcm> list packages mysite;

mcm> create cluster --package=cluster746 [email protected],[email protected],[email protected] mycluster;

mcm> add process [email protected],[email protected] mycluster;

mcm> add process [email protected],[email protected] mycluster;

mcm> add process [email protected],[email protected] mycluster;

mcm> get -d port:mysqld mycluster;

mcm> set port:mysqld:51=3307 mycluster;

56

• Iniciar el Cluster:

mcm> show status -r mycluster;

mcm> start cluster mycluster;

mcm> show status -r mycluster;

Page 57: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Migración de Base de datos en caliente Alternativas

• Para que se haga en ‘caliente’, la mejor y única alternativa es un “Rolling Restart”:

1. Parar todos los Cluster Management nodes, sustituyendo el binario ndb_mgmd con la nueva versión y reiniciando.

2. Parar, sustituir y reinicar cada data node, cada uno en turno, uno a uno.

3. Parar, sustituir y reinicar cada sql node, cada uno en turno.

– “Sustituir” significa redirigir al software nuevo en el servidor, (bien ln –s, o bien a la ruta directa /absoluta).

– “software” significa el nuevo paquete de Cluster, en el formato de “mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz”.

Page 58: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Migración de Base de datos en caliente Requisitos

• Usar un esclavo replica del MySQL Cluster.

– El esclavo puede tener una versión superior al Master.

• “Rolling Upgrade” upgrade escalonado. (--initial obligatorio)

• Si quieres usar MySQL Cluster Manager: mcm> add package –-basedir=/opt/MCM_LAB/cluster-746 cluster747;

mcm> upgrade cluster --package=cluster747 mycluster;

Page 59: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

¿Cómo ayuda MySQL Cluster Manager? Realizando la actualización de MySQL Cluster 7.0 a 7.4

• 1 x chequeo preliminar del estado del cluster • 8 x comandos ssh por servidor • 8 x comandos “stop” para cada proceso. • 4 x scp del fichero de configuración (2x mgmd y 2x

mysqld) • 8 x comandos “start” para cada proceso. • 8 x comprobaciones para los procesos iniciados y

los procesos que se unen • 8 verificaciones de éxito a cada proceso • 1 x verificación completa del cluster entero • Excluye el ajuste manual de cada fichero de config

Total: 46 comandos - 2.5 horas de operación atendida

Antes de MySQL Cluster Manager Con MySQL Cluster Manager upgrade cluster --package=7.4 mycluster;

Total: 1 Comando –

Operación Desatendida

Page 60: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MCM: La actualización de Cluster

mcm> upgrade cluster --package=cluster747

mycluster;

Page 61: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

http://www.mysql.com/customers/cluster/

• Telecomunicaciones

• Subscriber Databases (HLR / HSS)

• Service Delivery Platforms

• VAS: VoIP, IPTV & VoD

• Mobile Content Delivery

• Mobile Payments

• LTE Access

• Web & Enterprise • High volume OLTP

• eCommerce

• User Profile Management

• Session Management & Caching

• Content Management

• On-Line Gaming

MySQL Cluster – Usuarios y Aplicaciones

Page 62: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

COMPANY OVERVIEW

• Leading provider of communications platforms, solutions & services

• €15.2bn Revenues (2009), 77k employees across 130 countries

CHALLENGES / OPPORTUNITIES

• Converged services driving migration to next generation HLR / HSS systems

• New IMS platforms for Unified Communications

• Reduce cost per subscriber and accelerate time to value

SOLUTIONS

• MySQL Cluster Carrier Grade Edition

• MySQL Support & Consulting Services

CUSTOMER PERSPECTIVE “MySQL Cluster won the performance test hands-down, and it fitted our needs perfectly. We evaluated shared-disk clustered databases, but the cost would have been at least 10x more.”

-- François Leygues, Systems Manager

RESULTS

• Scale out on standard ATCA hardware to support 60m+ subscribers on a single platform

• Low latency, high throughput with 99.999%+ availability

• Enabled customers to reduce cost per subscriber and improve margins

• Delivered data management solution at 10x less cost than alternatives

Page 63: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

COMPANY OVERVIEW

• Leading telecoms provider across Europe and Asia. Largest Nordic provider

• 184m subscribers (Q2, 2010)

CHALLENGES / OPPORTUNITIES

• Extend OSS & BSS platforms for new mobile services and evolution to LTE

• OSS: IP Management & AAA

• BSS: Subscriber Data Management & Customer Support

SOLUTIONS

• MySQL Cluster

• MySQL Support Services

CUSTOMER PERSPECTIVE “Telenor has been using MySQL for fixed IP management since 2003 and are extremely satisfied with its speed, availability and flexibility. Now we also support mobile and LTE IP management with our solution. Telenor has found MySQL Cluster to be the best performing database in the world for our applications.” - Peter Eriksson, Manager, Network Provisioning

RESULTS

• Launch new services with no downtime, due to on-line operations of MySQL Cluster

• Consolidated database supports Subscriber Data Management initiatives

• MySQL Cluster selected due to 99.999% availability, real time performance and linear scalability on commodity hardware

Page 64: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Alguna Pregunta?

Page 65: MySQL Cluster: El ‘qué’ y el ‘cómo’

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Siguientes Pasos

65

Aprender más:

• www.mysql.com/cluster

• MySQL Curriculum: http://oracle.com/education/mysql

Pruébame:

• dev.mysql.com/downloads/cluster/

Dejadnos saber que opinas:

• forums.mysql.com/list.php?25

[email protected]

Page 66: MySQL Cluster: El ‘qué’ y el ‘cómo’