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

993 views

Published on

MySQL Cluster: El ‘qué’ y el ‘cómo’.
Una introducción en Español a MySQL Cluster, tanto Community como Carrier Grade Edition.
Con ejemplos técnicos de como instalar y sacar el mayor provecho de tu MySQL Cluster.
Se trata de una introducción, donde no se entra en cuestiones de asignación de cores a cada componente, réplica geográfica, resolución de conflictos 'built-in', réplicas de NDB (Cluster) a InnoDB, etc.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
993
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
48
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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 keith.hollman@oracle.com
  2. 2. 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
  3. 3. 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/Pas sive Active/Passiv e Active/Pas sive 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 ✔ ✔ ✔ ✔ ✔ ✖ ✔ ✔
  4. 4. 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
  5. 5. 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
  6. 6. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Introducción a MySQL Cluster 6
  7. 7. 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”
  8. 8. 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”
  9. 9. 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”
  10. 10. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQL Cluster resumido
  11. 11. 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 .
  12. 12. 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.
  13. 13. 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.
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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.
  20. 20. 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”).
  21. 21. 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
  22. 22. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Data Node 1 Data Node 2 Data Node 3 Data Node 4Un 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
  23. 23. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Data Node 1 Data Node 2 Data Node 3 Data Node 4Un 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
  24. 24. 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 4Fx 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
  25. 25. 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 4Fx 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
  26. 26. 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 4Fx 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
  27. 27. 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 4Fx 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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.
  36. 36. 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.
  37. 37. 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
  38. 38. 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.
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. 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*
  43. 43. 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 ]
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. 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
  51. 51. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 51 La forma más sencilla: Cluster Manager
  52. 52. 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.
  53. 53. 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.
  54. 54. 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
  55. 55. 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
  56. 56. 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 -- processhosts=ndb_mgmd@127.0.0.1,ndbmtd@127.0.0.1,ndbmtd@1 27.0.0.1 mycluster; mcm> add process -- processhosts=mysqld@127.0.0.1,mysqld@127.0.0.1 mycluster; mcm> add process -- processhosts=ndbapi@127.0.0.1,ndbapi@127.0.0.1 mycluster; mcm> add process -- processhosts=ndbapi@127.0.0.1,ndbapi@127.0.0.1 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;
  57. 57. 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”.
  58. 58. 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;
  59. 59. 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
  60. 60. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MCM: La actualización de Cluster mcm> upgrade cluster --package=cluster747 mycluster;
  61. 61. 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
  62. 62. 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
  63. 63. 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
  64. 64. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Alguna Pregunta?
  65. 65. 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 • keith.hollman@oracle.com

×