2. MySQL
Pedro Andrade
pedro.andrade@oracle.com
Strategic Accounts
Manuel Contreras
manuel.contreras@oracle.com
Senior Consultant
Linux, Virtualization, MySQL
Global Business Unit
Colombia Bogotá Abril ‘13
3. The following is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into
any contract. It is not a commitment to deliver
any material, code, or functionality, and should
not be relied upon in making purchasing
decisions. The development, release, and timing
of any features or functionality described for
Oracle’s products remains at the sole discretion
of Oracle.
5. Agenda
MySQL Replication: Introducción
MySQL + Java: como escalar masivamente
aplicaciones.
Beneficios de MySQL, Java & GlassFish
Application Server.
Arquitecturas de Referencia MySQL
Donde encontrar más Información
QA
7. MySQL Replication: recap
Funcionalidad Integrada a MySQL Server
Copia updates / inserts desde un Master Server hacia uno o
varios Slaves Servers.
Usos comunes:
High Availability
Backup On-line
Asíncrono
Semi-Sync en 5.6
Asynchronous Replication
update
customer
Customer
Inquiry
Synchronous Replication
update
customer
Customer
Inquiry
8. MySQL Replication
Web / App Servers
Writes & Reads Reads
MySQL Master Server MySQL Slave Server
Writes
Index & Binary
Log Rotation
Writes
Replication
Relay Log
9. MySQL Replication: scale-out
Web / App Servers
Reads
Writes
Slave Farm
MySQL
Master
Slave 1 Slave 2 Slave 3 Slave 4 Slave N
Writes
http://mysql.com/why-mysql/white-papers/mysql-wp-replication.php
12. MySQL Enterprise – Valor agregado
– Workbench, monitor, query analyzer, performance advisors - Facilidad de
uso y mejor control de la plataforma
– Soporte Técnico 24x7 Oracle Support – Mitigación de riesgos
– Actualizaciones de software - Estabilidad y mejor desempeño en MySQL
Server
Query analysis Load
balancer Enterprise
manager
Best practices rules
24x7 support
Monitoring
Hot fixes
Open-source server
Knowledge base with pluggable APIs Service packs
13. MySQL Enterprise - Performance
MySQL Enterprise Edition
MySQL Community Server
20x Mejor escalabilidad MySQL Enterprise
MySQL 5.5.16
Oracle Linux 6.1, Unbreakable Kernel 2.6.32
2 sockets, 24 cores, 2 X 12-core
Intel(R) Xeon(R) X5670 2.93GHz CPUs
72GB DDR3 RAM
2 X LSI SCSI Disk (MR9261-8i) (597GB)
14. Default Connection Pool
Default
Connection Pool
Connection 1 Connection 1 Execution Thread
Connections
/statements
Connection 2 Execution Thread
Connection 2
assigned
to Threads
Users/Clients
for life
• Connections assigned to 1 thread for the life of the connection
• Same thread used for all connection statement executions (single
threaded)
15. With Thread Pool Enabled
Thread Pool (and thread
Connection 1 Execution Threads
groups)
Connection 1 Connection 1
Threads 1 - 4096
Connection 2 Execution Threads
Connection 2 Connection 2
Threads 4097 - 8193
Users/Clients Connection N
Threads 8194 - N
• Pool contains configurable number of thread groups (default =
16), each manages up to 4096 re-usable threads
• Each connection assigned to thread group via round robin
Ensures better, sustained performance as user loads continue to grow.
25. Java
El lenguaje de programación independiente a la plataforma
Java
- Simple, facil de usar
- 100% orientado a objetos, API clases
- Administración automática de memoria
- Independiente a la plataforma
- Orientado a un contenedor JRE ( JVM )
–Maquina virtual Java que administra multi-threading,
seguridad, memoria, class loader, manejo de excepciones
( errores en tiempo de ejecución )
- Oracle Glassfish Application Server es la implementación de
referencia para Java EE
- 9 millones de desarrolladores en el mundo
- Java es gestionado por el Java Community Process
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-
418459.html
26. Java 7.0
Java 7.0 – potencializa el desempeño de Java en Servidores
Java 7.0, incorpora mejoras orientadas para aumentar el
desempeño de aplicaciones corriendo en servidores con gran
capacidad en RAM, y CPU multi-cores.
– Manejo de memoria mas eficiente
- Memoria es divida en varios Heap
- First Gargabe collector: divide la memoria en varios
heap memory, aumentando el desempeño en su
acceso
– Nueva funcionalidad en API de JDBC, para
conectividad a bases de datos
RowSet, Statement y Connection implementan la
interfaz Closeable, AutoCloseable
27. Java & MySQL ~ la mejor combinación
Prácticas Recomendadas para Java Developers
Mecanismos para establecer conexiones a MySQL Server, con Java:
- Pool Connection / Data Source
- Persistence Framework
– Hibernate, Spring
– Memcached ( Not-Only SQL MySQL 5.6 & MySQL Cluster 7.2 )
– NoSQL ( Not Only SQL )
– ClusterJ & Memcached Java APIs
– MySQL Server 5.6 ( InnoDB )
– MySQL Cluster ( NDB Cluster )
29. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Pool Connection / DataSource
- Un conjunto de conexiones, siempre esta listo en el pool
- Método: getConnection() en Java, obtiene una conexión lista del
pool, sin delay en abrir físicamente una conexión al motor de BD.
- Método closeConnection() en Java, NO cierra la conexión,
únicamente la retorna al pool, para que otro Thread pueda re-
utilizarla
31. JDBC | DataSource Glassfish
Prácticas Recomendadas para Java Developers
El Servidor Java EE de
aplicaciones, Glassfish
Application Server administra
las conexiones en el Pool:
Automáticamente cierra
conexiones en estado idle.
Obtiene conexiones sobre
demanda, según las requiera
el aplicativo.
Configuración centralizada
desde JDBC Resource
Manager, en el Java
Application Server.
http://blogs.oracle.com/psterk/entry/creating_and_configuring_a_mysql
32. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Data Source
33. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Data Source (2)
34. Recap: JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
JNDI Data Source
- Pro: flexibilidad en parámetros de configuración, gestión de
conexiones por el contenedor Java EE
- Consideración: requiere de un application server ( container )
Persistence Framework
- Pro: mapping entre OO & ER
- Consideración : requiere mayor configuracion ( XML config
params )
-NoSQL ( Memcached, ClusterJ )
Pro: Key-Value access repository
Consideración : No FK’s, NO ACIDity
36. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
JDBC – MySQL Master, Slave1, Slave2, SlaveN – Round Robin
- Balanceo de Lectura en servidores Slave
- Servidor Master para Read & Writes
- Slaves para Read Only
- JDBC Connector automáticamente, selecciona un
Slave de la lista de Slaves
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-connection.html
37. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
- Import de Librerías
- Configura Driver para uso en RoundRobin Load Balancing
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
38. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
- Insert Datos en Master ( Read Only False )
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
39. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
- Select Datos en uno de los Slaves ( Read Only True )
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
41. MySQL Enterprise Monitor
• Vista única consolidada del
ambiente MySQL
• Auto descubrimiento de
servidores MySQL, replicación y
topologías
• Alertas y monitoreo adaptable y
basado en reglas
• Identificación de problemas
antes de que ocurran
• Reducción de riesgo y tiempo de
inactividad
• Facilidad para escalamiento
horizontal sin requerir más DBAs
Un asistente DBA Virtual para MySQL
http://mysql.com/products/enterprise/monitor.html
45. MySQL Enterprise Monitor
• Java Connector plugin
– MySQL Enterprise Monitor, a
través de conector JDBC Java
•Obtiene información de
queries para su análisis,
desde la aplicación
– Utilizado por Query Analyzer
de MySQL Monitor
http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-qanal-using-cj.html
46.
47. Alta Disponibilidad
Clustering & Geo
TCO & More Complex Replication
Clustering &
Virtualization DRBD
MySQL Replication
ISPs & On-Line eCommerce
Corporativo Services Telecoms, Militar
9 9
. 9 9 9
35 dias 4 days
4 dias 8 horas 50 min 5 min %
48. MySQL Replication
Manual Failover
Hardware o software load balancers [ F5,
ultramonkey (software) ]
Linux-ha.org / Linux Heartbeat
Linux Enterprise Cluster Suite
Windows Clustering Service
Built-in MySQL Connector Failover (Connector J )
A nivel a aplicación
- Try connection A, then try connection B
53. Linux Heartbeat, DRBD and MySQL
Linux Heartbeat
Active Server = Virtual IP = Passive Server
10.10.10.10
= Private IP = = Private IP =
10.10.10.20 10.10.10.21
Primary DRBD Secondary DRBD
DRBD
54. MySQL Enterprise High Availability
Oracle Linux + DRBD Stack
• Certified and fully supported
by Oracle
– DRBD integrated into Oracle Linux
Unbreakable Enterprise Kernel R2
– Pacemaker and Corosync for
clustering & failover
– Updates to stack via ULN channel
• Based on distributed storage,
not a SAN
– Synchronous replication eliminates
risk of data loss
• Open source, mature & proven
55. MySQL: Sakila & el Chavo del 8 en Facebook
MySQL apoya a el Chavo del 8 con:
- Soporte técnico 24x7, para el cluster de 10
nodos.
- Revisión de configuración & puesta a
punto de la plataforma productiva.
- Actualizaciones de software al binario
MySQL Cluster CGE v 7.2.X
- Disminución de 30% de saturación &
consumo de CPU.
- Detección de fallas & monitoring a
través de MySQL Enterprise Monitor.
- Afinación del ambiente MySQL
Cluster, para mejorar el desempeño del
juego.
56. MySQL: Sakila & el Chavo del 8 en Facebook
MySQL apoya a el Chavo del 8 con:
- Soporte técnico 24x7, para el cluster de 10
nodos.
- Revisión de configuración & puesta a
punto de la plataforma productiva.
- Actualizaciones de software al binario
MySQL Cluster CGE v 7.2.X
- Disminución de 30% de saturación &
consumo de CPU.
- Detección de fallas & monitoring a
través de MySQL Enterprise Monitor.
- Afinación del ambiente MySQL
Cluster, para mejorar el desempeño del
juego.
57.
58. MySQL Cluster CGE
Introducción
Botero en Medellin Colombia
http://www.flickr.com/photos/dfinnecy/2092541057/
59. MySQL Cluster CGE – Características generales
- ACID, datos distribuidos en memoria
– BDs distribuida en memoria, auto-partitioning (sharding).
Write-Scalable & Real-Time
–Procesamiento en nodos Activo – Activo, con replicación síncrona de datos.
Alta Disponibilidad, 99.999%
–SQL & Not Only SQL (NoSQL), interfaces.
–Arquitectura Shared-nothing, con soporte a replicación local & geográfica.
•
Mejora el TCO
Open-source, herramientas para administración, monitoring, &
escalabilidad horizontal en commodity hardware.
60.
61. MySQL Cluster CGE
Auto
Fragmentación de
Datos
Machu Picchu Perú
http://www.flickr.com/photos/94875862@N00/95345836/in/photostream/
62. MySQL Cluster CGE Auto-Sharding –
Introducción
•Partitioning - Sharding ocurre automáticamente y de forma
transparente para la aplicación
•Conocimientos básicos de como funciona, puede incrementar el
desempeño de la aplicación
•Escalable de forma horizontal, con soporte para agregar mas nodos
en linea
•No es necesario, agregar lógica en la aplicación para tomar ventaja
del Sharding
http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77. MySQL Cluster CGE
Scaling-Out
Escalabilidad
Horizontal
9 de Julio BsAs Argentina
http://www.flickr.com/photos/fvyague/2538963317/
78.
79.
80.
81. MySQL Enterprise High Availability
Oracle Linux + DRBD Stack
• Certified and fully supported
by Oracle
– DRBD integrated into Oracle Linux
Unbreakable Enterprise Kernel R2
– Pacemaker and Corosync for
clustering & failover
– Updates to stack via ULN channel
• Based on distributed storage,
not a SAN
– Synchronous replication eliminates
risk of data loss
• Open source, mature & proven
82. MySQL Enterprise High Availability
• Cluster managed through MS
Failover Cluster Management Slave App App App
snap-in GUI
• Loss of service = couple of
seconds + InnoDB recovery
time
Virtual IP
– App sees temporary loss of
connection and
reconnects on same IP
address
– Replication slave recovers
automatically
Vote Data Bin
83. MySQL Enterprise High Availability
Oracle Solaris Clustering
• Kernel based heartbeat and monitoring
• SPARC and x86. Solaris Virtualization-aware
• MySQL agent included with Oracle Solaris Clusterl
84. MySQL Enterprise Backup
• Respaldo en linea para MySQL databases
• Alto performance en Respaldo y Restauración de Info
• Respaldos Full, Incremental, Partial
- Compressed Tables
- Partition Files
- In-memory database
• Compresión de datos
• Point in Time Recovery
• Cross Platform
• Unlimited Database size
• Mejora de 3.5x, sobre tiempos de backup con mysqldump
• Mejora de 16x, sobre tiempos de restore con mysqldump
87. Software Open Source @
Oracle
Pedro Andrade
pedro.andrade@oracle.com
Strategic Accounts
Manuel Contreras
manuel.contreras@oracle.com
Senior Consultant
Linux, Virtualization, MySQL
Global Business Unit
Colombia Bogotá Abril ‘13