Software Líbre con respaldo de Oracle ~ OTN Tour 2013
1. Software Open Source @
Oracle
Pedro Andrade
pedro.andrade@oracle.com
Strategic Accounts
Manuel Contreras
manuel.contreras@oracle.com
MySQL, Linux,VDI
Senior Consultant
2. Software Open Source @ Oracle
¿Utiliza Open Source Software (OSS ) en ambientes
productivos?
¿Qué tecnologías OSS con soporte de Oracle
conoces?
3. Por qué usar Software Open Source
Modelo basado en Comunidades
Versión Community
Versión Enterprise
No Vendor Locking
Subscripción anual con soporte técnico
Mejor TCO
Comunidades desarrollan y prueban y dan sugerencias de
mejoras al software
foros, bug report lists, y participación de desarrolladores
para mejoras del producto
Open Source Software Enterprise
4. Adopción de Software Libre
82% tienen Software Libre en producción
o planeada en los sig. 12 meses
Mercado de
Software Libre $5.8
mil mill. USD 2011
5. Grupo Independiente de Usuarios Oracle
Encuesta en 2010, tendencias del Código Abierto
* 70% del grupo tiene instancias de MySQL
9. Oracle: nueva vida a Duke & Sakila
- En 1995 Sun microsystems crea a Java un lenguaje de programación multiplataforma,
100% orientado a objetos.
- En 1995, MySQL AB, crea un manejador de BD relacional, open source, el cual es
ampliamente adoptado por las comunidades de LAMP stack software.
- En 2008, Sun microsystems Inc, adquiere MySQL AB – El voto del Billón de dolares por el
OSS.
- En 2010, Oracle Inc adquiere a Sun microsystems, la propuesta: ofrecer soluciones desde
el disco hasta las aplicaciones, fortaleciendo su oferta
open source con Java y MySQL.
- Diciembre 2010, Oracle libera MySQL 5.5, el cual es considerado por las comunidades
como el mejor release de MySQL en su historia.
- Julio 2011, Java 7.0 es liberado, nueva versión con mejoras al JVM
hotspot y el mejor desempeño para servidores Java.
Open source software con soporte Enterprise
11. Introducción | Java
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
- 6 millones de desarrolladores en el mundo
- Java es gestionado por el Java Community Process
El lenguaje de programación independiente a la plataforma
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-
418459.html
12. Java 7.0 | lo nuevo
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
Java 7.0 – potencializa el desempeño de Java en Servidores
13. JDBC | Java Database Connectivity
Mecanismos para establecer conexiones a MySQL Server, con Java:
-Pool Connection / Data Source
-Jdbc:mysql:loadbalance://server1,server2,serverN/schema:port
- Persistence Framework
– Hibernate, Spring, ClusterJ, Java Persistence API
– Memcached ( Not-Only SQL MySQL 5.6 & MySQL Cluster 7.2 )
Prácticas Recomendadas para Java Developers
14. JDBC | Java Database Connectivity
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
Prácticas Recomendadas para Java Developers
17. JDBC | DataSource Glassfish
http://blogs.oracle.com/psterk/entry/creating_and_configuring_a_mysql
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.
Prácticas Recomendadas para Java Developers
18. JDBC | Java Database Connectivity
Data Source
Prácticas Recomendadas para Java Developers
19. JDBC | Java Database Connectivity
Data Source (2)
Prácticas Recomendadas para Java Developers
20. Recap: JDBC | Java Database Connectivity
Driver Manager ( Java Class Loader )
- Pro: método fácil para conexión a RDBMS
- Contra: concurrencia en manejo de conexiones, inflexible en
configuración de parámetros
JNDI Data Source
- Pro: flexibilidad en parámetros de configuración, gestión de
conexiones por el contenedor Java EE
- Contra: requiere de un application server ( container )
Persistence Framework
- Pro: mapping entre OO & ER
- Contra: requiere mayor configuracion ( XML config params )
Prácticas Recomendadas para Java Developers
23. MySQL, Replicación
- Mejor tiempo de respuesta mediante la separación carga, en el procesamiento de
consultas entre el master y el slave
- SELECT Queries, pueden ser enviados al slave para reducir la carga de procesamiento
de consultas, en el master
- Disponible para cualquier tipo de storage engine, incluso replicación entre distintos
tipos de storage engine
- Lograr una mayor disponibilidad con un master / slave
- En caso de fallas en el master, es posible cambiar al slave como backup
- Respaldo de información a través de los slaves
Clients
Slaves Master
MySQL Replication
24. MySQL Replicación semi-sync
• Los datos escritos en el master, también son escritos en el binary log File
• El thread I/O, en los slaves, toma los cambios del binlog del master y lo
escribe en un relay log en los slaves
• El thread SQL, en los slaves, lee el relay log y aplica los cambios /
escrituras en los slaves
• Si el plugin semi-sync esta instalado y configurado, el master espera hasta
que el thread I/O de algún slave semi-sync, haya escrito la transacción a
disco, o hasta que ocurra un timeout, entonces se retorna el ACK a la
aplicación
Master
Slave
IO Thread
binlog relay
SQL
Thread
Mejora la confiabilidad en FailOver
COMMIT en el nodo master es reconocido, sólo cuando al menos uno de los
nodos slaves ha registrado el evento
En caso de FailOver, no hay perdida de información
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
25. Semi-synchronous Replication
On Master and Slave:
have_dynamic_loading=YES
On the Master:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_master_timeout = N;
On the Slave:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
26. JDBC | Java Database Connectivity
JDBC – MySQL Master, Slave1, Slave2, SlaveN – Round Robin
Prácticas Recomendadas para Java Developers
- 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
27. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
- Import de Librerías
- Configura Driver para uso en RoundRobin Load Balancing
28. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
- Insert Datos en Master ( Read Only False )
29. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
- Select Datos en uno de los Slaves ( Read Only True )
31. • 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
MySQL Enterprise Monitor
Un asistente DBA Virtual para MySQL
http://mysql.com/products/enterprise/monitor.html
32.
33. • 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
MySQL Enterprise Monitor
http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-qanal-using-cj.html
36. Recap: MySQL 5.6 + Java 7.0
• MySQL 5.6 – mejor release en la historia de MySQL
• Java 7.0 – mejoras significativas en desempeño y manejo de
recursos RAM y CPU para servidores
• Ambas plataformas cada vez mas integradas entre sí
• Oracle – único proveedor de soluciones desde Disco, hasta
aplicaciones
• LAMJ / WAMJ, cada vez con mayor fuerza
• Prueba el Trial MySQL Enterprise Hoy!
mysql.com/trial
• Java
oracle.com/technetwork/java/index.html
37.
38. 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