Tema anterior: MYSQL5: dispositivo de base de datos MySQL

Tema siguiente: PGSQL64: dispositivo de base de datos PostgreSQL

MYSQLR, MYSQLR64: dispositivo de base de datos MySQL apropiado para replicar

MYSQLR64: dispositivos de base de datos MySQL apropiados para replicación

Vista rápida

Catálogo

Sistema

Categoría

Dispositivos de base de datos

Volúmenes de usuario

yes

Memoria mín.

160 MB

SO

Linux

Preguntas o comentarios

Pregunte en el foro

Descripción general del funcionamiento

MYSQLR64 es un dispositivo de base de datos basado en el motor de base de datos MySQL (http://www.mysql.org). Proporciona una forma fácil de agregar una base de datos a cualquier aplicación. Los dispositivos se pueden usar también en escenarios de replicación de MYSQL complejos. Los dispositivos están basados en MYSQL5 (CentOS 5.5/MySQL 5) pero también tratan la replicación de base de datos.

La replicación de base de datos permite que los datos de un servidor de base de datos de MySQL (conocido como principal) se repliquen a uno o varios servidores de base de datos MySQL (conocidos como secundarios). Los dispositivos MYSQLR64 se pueden configurar para la replicación principal-secundario así como para la replicación principal-principal y la replicación con más de dos principales.

La configuración, gestión y control de replicación se realizan mediante una interfaz Web. La interfaz Web proporciona una forma fácil de iniciar la replicación prácticamente sin tiempo de inactividad en el principal. Se puede utilizar también para reparar una replicación en caso de problemas. La interfaz Web se puede utilizar para copiar bases de datos de dispositivos de base de datos más antiguos como MYSQL y MYSQL5. MYSQLR64 también proporcionar una forma fácil para gestionar y explorar la base de datos (basada en phpMyAdmin).

La replicación resulta útil en varios casos:

En su configuración predeterminada MYSQLR64 actúa exactamente como un dispositivo MYSQL5 con una interfaz Web para la gestión. Para utilizarlo en escenarios de replicación, necesita al menos dos dispositivos MYSQLR64 con una configuración apropiada (consulte Uso Típico).

MYSQLR64 almacena la base de datos en un volumen definido por la aplicación que se puede configurar en cada instancia de MYSQLR64. MYSQLR64 crea automáticamente una base de datos vacía cuando se inicia en un volumen vacío.

Nombre

Última versión

SO

!MySQL

Notas

MYSQLR

2.0.3-1

CentOS 5.5

5.5.8

MYSQLR64

2.0.3-1

CentOS 5.5 (64 bits)

5.5.8

 

Importante: No debería mezclar dispositivos MYSQLR de 32 bits y 64 bits cuando utiliza la replicación para copiar los archivos de base de datos del principal al secundario. Tampoco deberían utilizar volúmenes de datos de la versión de 32 bits del dispositivo con una versión de 64 bits del mismo dispositivo (y viceversa). Para migrar una base de datos entre las versiones de 32 bits y 64 bits de MYSQLR, vuelque las bases de datos en un host e impórtelas al otro, tal y como se describe aquí.

Límite

Recursos

Recurso

Mínimo

Máximo

Predeterminado

CPU

0,0.10

16

0,0.40

Memoria

128 MB

32 G

512 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

Terminales

Nombre

Dir.

Protocolo

Descripción

in

Entrante

MYSQL

Recibe solicitudes de base de datos MySQL.

rin

Entrante

Cualquiera

Los dispositivos MYSQLR64 secundarios que utilizan el dispositivo como principal se conectan a este terminal.

ui

Entrante

HTTP

Proporciona acceso a la interfaz Web de MYSQLR64.

log

Saliente

CIFS

Conecta a un dispositivo NAS para almacenar registros de error. Este terminal se puede dejar desconectado si no se usa.

rout

Saliente

Cualquiera

Conecta a un servidor MYSQLR64 principal. Este terminal puede estar desconectado y se debería usar solamente en escenarios de replicación.

mon

Saliente

CCE

Envía estadísticas sobre uso de recursos y rendimiento. Este terminal se puede dejar desconectado.

La interfaz predeterminada está activada. Se utiliza para diagnósticos y solución de problemas (mediante SSH). Las versiones futuras de este dispositivo pueden desactivar el acceso de SSH.
Importante: Los terminales rin y rout se usan para datos tanto SSH (tcp 22) como MYSQL (tcp 3306). Cuando se usan puertas de enlace o VPN para conectar esos terminales, los cortafuegos se deberán configurar para permitir usar los dos puertos.

Volúmenes de usuario

Volumen

Descripción

data

Volumen utilizado para almacenar datos de base de datos. Este volumen es obligatorio.

binlogs

Volumen utilizado para los registros binarios al ejecutarse en modo de replicación (como principal o como secundario). Este volumen no es obligatorio, pero si usa el dispositivo en la replicación (se ha establecido rpl_mode en otro valor distinto a "none") y no se proporciona un volumen binlogs, el dispositivo dará error al iniciarse.

Opcionalmente, el volumen de datos puede contener un archivo my.cnf en su directorio superior que incluye opciones de configuración de MYSQL. Para obtener más detalles, consulte la sección Configuración personalizada. Esta función está disponible en MYSQLR64 1.6.1 o versiones posteriores.

Importante:

Para migrar una base de datos desde un dispositivo antiguo (MYSQL, MYSQL5, MYSQL64), desde un servidor físico o desde MYSQLR (si se migra una versión de 32 bits del dispositivo a una de 64), consulte el procedimiento descrito en Migración de bases de datos desde otros dispositivos.

Propiedades

Nombre de la propiedad

Tipo

Descripción

auto_create

Entero

Si se debe crear la base de datos si no existe. Los valores posibles son 1 para crearla y 0 para impedir la creación automática (para evitar la sobrescritura accidental en caso de volúmenes dañados). Si se establece en 0 y no hay una base de datos en el volumen de datos, el dispositivo se inicia en modo de mantenimiento (el dispositivo se iniciará correctamente pero el daemon MySQL no se iniciará para que el usuario pueda revisar el problema). El valor predeterminado es 1.

error_log_filename

Cadena

Nombre del archivo de registro de errores, relativo al sistema de archivos de registro (por ejemplo /mysql_logs/my.log). Los directorios en la ruta se crean automáticamente. Si se deja vacío, se escribe el registro de errores en el volumen de datos (/mnt/data/error.log). Valor predeterminado: vacío

error_log_level

Cadena

Nivel de registro de errores. Los valores posibles son: "error": sólo registra errores, "warn": registra advertencias y errores. Esta propiedad no distingue entre mayúsculas y minúsculas. Valor predeterminado: error

timezone

Cadena

Especifica la zona horaria utilizada en el dispositivo. Si esta propiedad está vacía, la zona horaria no se modifica y se deja tal cual. Aquí tiene disponible una lista de zonas horarias admitidas. Valor predeterminado: vacío

Desde MYSQLR64 1.6.8, la propiedad use_old_passwords se ha eliminado. Si necesita activar old_passwords, cree una configuración personalizada, tal y como se describe más abajo.

El dispositivo MYSQLR dará error al iniciarse si error_log_filename se ha especificado y el terminal log no está conectado o el sistema de archivos no se puede montar.

Propiedades avanzadas

Nombre de la propiedad

Tipo

Descripción

server_id

Entero

ID del servidor. Los valores posibles son de 1 a 10. Esto especifica el ID del servidor al hacer la replicación. Ayuda a garantizar la configuración de ID únicos para todos los servidores que forman parte de la replicación. Valor predeterminado: 1

rpl_mode

Cadena

Modo de replicación. Los valores posibles son "none" (sin replicación), "master", "slave" y "master_and_slave" (para escenarios de replicación con varios principales donde un servidor es principal y secundario al mismo tiempo). Valor predeterminado: none

web_pwd

Cadena

Contraseña para la autenticación en la interfaz Web. Esta propiedad es opcional. Si se establece así, el servidor http del dispositivo se inicia y la interfaz Web se muestra tanto en el terminal ui como en la interfaz predeterminada, desde donde se puede acceder a él mediante la opción Inicio de sesión (Web) en el editor de CA 3Tera AppLogic. Valor predeterminado: vacío

Configuración personalizada

Esta función está disponible en MYSQLR64 1.6.1 o versiones posteriores.

MYSQLR64 permite usar un archivo de configuración de MYSQL personalizado que puede proporcionar opciones de configuración adicionales o sobrescribir configuraciones existentes especificadas en /etc/my.cnf.

Para utilizar una configuración personalizada, cree un archivo denominado my.cnf y colóquelo en el directorio superior del volumen de datos. El formato del archivo deberá seguir la sintaxis de archivo de opciones MYSQL, tal y como se describe en la documentación de MYSQL.

Por ejemplo, se puede usar lo siguiente para ajustar MYSQLR64 de modo que proporcione un mejor rendimiento al utilizar InnoDB (la configuración de MYSQLR64 predeterminada se optimiza para MyISAM). El ejemplo se basa en el uso de 512 MB de memoria (valor predeterminado para MYSQLR64).

[mysqld]
# Shrink down MyISAM buffers
key_buffer = 512K
myisam_sort_buffer_size = 512K

# Make InnoDB the default storage engine (optional)
default-storage-engine = INNODB

# Set InnoDB buffer size
innodb_buffer_pool_size=350M
innodb_log_file_size=128M
innodb_log_buffer_size=4M
innodb_thread_concurrency=8

# If you do not have too many tables use this option, so you will not have uncontrolled innodb main tablespace growth which you can’t reclaim.
innodb_file_per_table=1

Importante: Cuando se use en modo de replicación, MYSQLR64 sincronizará también el archivo my.cnf en el volumen de datos cuando arregle o inicie la replicación, de modo que el secundario tendrá la misma configuración que el principal.

Interfaz Web

MYSQLR64 proporciona una interfaz Web a la cual se puede acceder tanto desde el terminal ui como desde la interfaz predeterminada mediante la opción Inicio de sesión (Web) del editor de CA 3Tera AppLogic. El uso de la interfaz Web requiere autenticación HTTP. Deje en blanco el espacio de nombre del usuario y utilice el valor de web_pwd como contraseña. La interfaz tiene las funciones siguientes:

Explore y edite sus bases de datos con PhPMyAdmin.

Configuración y mantenimiento de la replicación

Cómo agregar replicaciones principal-secundario a dispositivos MYSQLR64

CA 3Tera AppLogic le permite agregar replicaciones principal-secundario a dispositivos MYSQLR64 existentes sin perder datos.

Para agregar replicaciones principal-secundario a dispositivos MYSQLR64

  1. Establezca rpl_mode en principal en el dispositivo existente.
  2. Agregue un dispositivo MYSQLR64 nuevo a su aplicación con un volumen de datos vacío. Conecte el terminal rout al terminal rin del dispositivo actual.
  3. (Opcional) Si lo va a utilizar en replicación principal-principal, conecte el terminal retirado del dispositivo actual al terminal rin del dispositivo nuevo.
  4. Reinicie la aplicación.
  5. Conéctese a la interfaz Web del dispositivo nuevo y seleccione iniciar o reparar la replicación en la ficha de gestión de la replicación. La duración del registro depende del tamaño de los datos en el principal. Si utiliza INSSLR para acceder a MYSQLR64, asegúrese de que la propiedad de tiempo de espera se establezca en un valor alto (36.000) para evitar tiempos de espera. Compruebe que no haya tiempos de espera en ninguno de los proxies del lado del cliente (es mejor no utilizar ningún proxy).

Cuando empiece la replicación, inicie sesión en la interfaz Web en los dos dispositivos MYSQLR64 y verifique el estado de la replicación. En 5 minutos o menos, la replicación debería estar ejecutándose en los dos dispositivos.

Cómo agregar dispositivos MYSQLR64 a replicaciones principal-secundario

CA 3Tera AppLogic le permite agregar dispositivos MYSQLR64 nuevos a replicaciones principal-principal existentes sin perder datos.

Para agregar dispositivos MYSQLR64 a replicaciones principal-secundario

  1. Agregue un dispositivo MYSQLR64 nuevo a su aplicación con un volumen de datos vacío. Por ejemplo, dbN, entendiendo que ya tiene N-1 dispositivos MYSQLR64 (3 <= N <= 10) y cada dispositivo tiene su terminal rout conectado al terminal rin del dispositivo siguiente en una configuración circular (rout de db1 se conecta a rin de db2, etc.).
  2. Establezca rpl_mode en master_and_slave de dbN.
  3. Conecte el terminal rout del dispositivo dbN-1 al terminal rin del dispositivo dbN.
  4. Conecte el terminal rout del dispositivo dbN al terminal rin del dispositivo db1.
  5. Reinicie la aplicación para que se apliquen los cambios. Después del reinicio, la replicación no quedará sincronizada hasta el final del procedimiento. Puede que los datos escritos en un dispositivo no se repliquen en el resto de dispositivos durante el procedimiento.
  6. Conéctese a la interfaz Web del dispositivo dbN y seleccione iniciar o reparar la replicación en la ficha de gestión de la replicación. La duración del registro depende del tamaño de los datos en el principal. Si utiliza INSSLR para acceder a MYSQLR64, compruebe que la propiedad de tiempo de espera se establezca en un valor alto (36.000) para evitar tiempos de espera. Compruebe también que no haya tiempos de espera en ninguno de los proxies del lado del cliente (es mejor no utilizar ningún proxy).
  7. Después de que se inicie replicación, conéctese a la interfaz Web de dbN-1 y seleccione restablecer la posición del registro del principal. Al incluir registros, la aplicación lee los registros binarios de dbN-1 y dbN desde el principio.

Conéctese a la interfaz Web de todos los dispositivos MYSQLR64 y verifique el estado de la replicación; en 5 minutos o menos la replicación debería estar ejecutándose en todos los dispositivos.

Reparación de replicación en configuraciones principal-secundario

CA 3Tera AppLogic le permite reparar la replicación en una configuración principal-secundario sin perder datos.

Para reparar la replicación en configuraciones principal-secundario

  1. Inicie sesión en la interfaz Web del secundario y seleccione iniciar o reparar la replicación. La duración del registro depende del tamaño de los datos en el principal. Durante la operación, el servicio mysql en el secundario se detiene. No se introduce el tiempo de inactividad en el principal. Esta operación es equivalente a agregar un dispositivo nuevo a un dispositivo MYSQLR64 existente. Si utiliza INSSLR para acceder a MYSQLR64, compruebe que la propiedad de tiempo de espera se establezca en un valor alto (36.000) para evitar tiempos de espera. También debe comprobar que no haya tiempos de espera en ninguno de los proxies del lado del cliente (es mejor no utilizar ningún proxy).

Después de que se inicie replicación, conéctese a la interfaz Web en los dispositivos MYSQLR64 secundarios y verifique el estado de replicación; en 5 minutos o menos, la replicación debería estar ejecutándose.

Reparación de replicación en configuraciones principal-principal

CA 3Tera AppLogic le permite reparar la replicación en una configuración principal-principal sin perder datos.

Conéctese a la interfaz Web del dispositivo que informa de error en la replicación y seleccione iniciar o repara la replicación. La duración del registro depende del tamaño de la base de datos en el principal. Durante la operación, el servicio mysql en el dispositivo se detiene. No se introduce el tiempo de inactividad en el principal. La base de datos no quedará sincronizada entre todos los principales hasta el final de la reparación. Es posible que las actualizaciones de base de datos se repliquen en todos los dispositivos MYSQLR64 restantes mientras dure la reparación.

Todos los datos en este dispositivo se inicializan desde el principal. Si se hacen actualizaciones en la base de datos en el dispositivo actual desde el momento en que falló la replicación, se perderán. En este caso, resuelva los conflictos manualmente.

Para reparar la replicación en configuraciones principal-principal

  1. Inicie sesión en la interfaz Web del dispositivo que tiene su terminal rout conectado al dispositivo que ejecuta la reparación de la replicación. Seleccione restablecer la posición del registro del principal. Establecer el registro del principal hace que la aplicación lea los registros binarios del dispositivo reparado desde el principio. Si utiliza INSSLR para acceder a MYSQLR64, compruebe que la propiedad de tiempo de espera se establezca en un valor alto (36.000) para evitar tiempos de espera. También debe comprobar que no haya tiempos de espera en ninguno de los proxies del lado del cliente (es mejor no utilizar ningún proxy).

Conéctese en a la interfaz Web de todos los dispositivos MYSQLR64 y revise el estado de la replicación. En 5 minutos o menos, la replicación debería estar ejecutándose en todos los dispositivos.

Control de la replicación

Hay una tarea de cron que controla la replicación entre dispositivos de MYSQLR64. Si está activada la replicación, la tarea de cron se ejecuta cada dos minutos y envía alertas al cuadro de mandos del grid en los casos siguientes:

En estos casos, el usuario deberá resolver el problema manualmente.

En caso de fallo en la replicación, se puede utilizar la interfaz Web para corregir la situación, tal y como se describe en la sección arriba.

Control de la replicación

Hay una tarea de cron que controla la replicación entre dispositivos de MYSQLR64. Si está activada la replicación, la tarea de cron se ejecuta cada dos minutos y envía alertas al cuadro de mandos del grid en los casos siguientes:

En estos casos, el usuario deberá resolver el problema manualmente.

En caso de fallo en la replicación, se puede utilizar la interfaz Web para corregir la situación, tal y como se describe en la sección arriba.

Contadores personalizados

El dispositivo MYSQLR64 informa sobre los siguientes contadores personalizados a través del terminal "mon".

Los contadores siguientes pertenecen al grupo de contadores de MySql:

Nombre del contador

Descripción

Aborted Clients

Número de clientes anulados por el servidor.

Aborted Connections

Número de conexiones anuladas por el servidor.

Bytes Received

Número de bytes recibidos.

Bytes Sent

Número de bytes enviados.

Total Connections

Número de conexiones.

Questions

Número total de preguntas.

Slow Queries

Número de consultas lentas.

Threads Created

Número de subprocesos creados.

Threads Connected

Número de subprocesos conectados.

Threads Running

Número de subprocesos ejecutándose.

Max Used Connections

Número de conexiones máximas utilizadas.

Open Files

Número de archivos abiertos.

Admin Commands

Número de comandos de administrador.

Alter Table Commands

Número de comandos para modificar tabla.

Analyze Commands

Número de comandos de análisis.

Change DB Commands

Número de comandos para cambiar la base de datos.

Change Master Commands

Número de comandos para cambiar el principal.

Check Commands

Número de comandos de comprobación.

Commit Commands

Número de comandos de confirmación.

Create DB Commands

Número de comandos de creación de base de datos.

Create Function Commands

Número de comandos de creación de función.

Create Index Commands

Número de comandos de creación de índice.

Create Table Commands

Número de comandos de creación de tabla.

Delete Commands

Número comandos de supresión.

Drop DB Commands

Número de comandos para borrar la base de datos.

Drop Function Commands

Número de comandos para borrar función.

Drop Index Commands

Número de comandos para borrar el índice.

Drop Table Commands

Número de comandos para borrar tabla.

Flush Commands

Número de comandos de limpieza.

Grant Commands

Número de comandos de concesión.

Insert Commands

Número de comandos de inserción.

Insert Select Commands

Número de comandos de inserción de selección.

Kill Commands

Número de comandos de finalización.

Load Commands

Número de comandos de carga.

Lock Tables Commands

Número de comandos de bloqueo de tablas.

Optimize Commands

Número de comandos de optimización.

Purge Commands

Número de comandos de borrado definitivo.

Rename Table Commands

Número de comandos para renombrar tabla.

Repair Commands

Número de comandos de reparación.

Replace Commands

Número de comandos para reemplazar.

Replace Select Commands

Número de comandos para reemplazar selección.

Reset Commands

Número de comandos de restablecimiento.

Revoke Commands

Número de comandos de revocación.

Rollback Commands

Número de comandos de reversión.

Select Commands

Número de comandos de selección.

Set Option Commands

Número de comandos para establecer opción.

Truncate Commands

Número de comandos de truncamiento.

Unlock Tables Commands

Número de comandos de desbloqueo de tablas.

Update Commands

Número de comandos de actualización.

Mensajes de error

Los mensajes siguientes pueden aparecer en el archivo de registro del dispositivo o en el registro del sistema del controlador de grid cuando el dispositivo falla al iniciarse:

Mensaje de error

Descripción

Failed to set timezone!

No se pudo establecer la zona horaria del dispositivo de acuerdo con lo configurado mediante la propiedad de zona horaria.

Appliance is running in [$rpl_mode] replication mode but binlogs volume is missing

El dispositivo está configurado para ejecutarse como principal, secundario o master_and_slave, pero no se ha indicado ningún volumen binlogs.

Appliance is running in [$rpl_mode] replication mode but the 'rout' terminal is not connected

El dispositivo está configurado para ejecutarse como principal o master_and_slave, pero el terminal rout no está conectado.

The 'rout' terminal is connected, but the [rpl_mode] property is set to 'none'. Either configure replication via the [rpl_mode] property or disconnect the 'rout' terminal

El terminal rout está conectado, pero la propiedad [rpl_mode] está establecida en "none". Configure la replicación mediante la propiedad [rpl_mode] o desconecte el terminal rout.

Failed to start mysql due to error_log_filename set and log terminal not connected!

La propiedad error_log_filename está configurada, pero el terminal log no está conectado.

Failed to mount share through log terminal!

El dispositivo se ha configurado para escribir registros en el terminal log, pero se produjo un error al montar el recurso compartido en el terminal log.

The share through the log terminal is not writeable!

El recurso compartido en el terminal log no es de escritura.

Failed to create logdir [$logdir] on the log terminal!

No se pudo crear el directorio de registros [$logdir] en el terminal log.

The logdir [$logdir] is not writeable!

El directorio de registros [$logdir] en el terminal log no es de escritura.

The logfile [$error_log] is not writable!

El directorio de registros [$error_log] en el terminal log no es de escritura.

Failed to create database!

Se ha iniciado el dispositivo sin base de datos y se produjo un error al instalar las bases de datos MySQL.

Failed to setup replication!

El dispositivo dio error al configurar la replicación.

Failed to start mysql!

El daemon MySQL no se pudo iniciar.

Insufficient permissions in the mysql database!

Los permisos para "root'@'%" son insuficientes o, si se utiliza en el modo de replicación, "replication_user'@'%" no tiene permisos suficientes para ejecutar la replicación MySQL.

Web interface failed to start!

No se pudo iniciar la interfaz Web.

The data volume size should be at least 100Mb

El volumen data debe tener más de 100 megabytes. Consulte las notas sobre los requisitos de volumen.

Además, pueden aparecer los errores siguientes en el cuadro de mandos del grid mientras el dispositivo se está ejecutando:

Mensaje de error

Descripción

Free space on the data volume is running low, please check!

El espacio libre del volumen de datos es inferior al 20 %.

Replication of master server is not running, please check!

La replicación del servidor principal no se está ejecutando.

Replication of slave is too much behind master, please check!

La replicación del secundario va mucho más retrasada que la del principal.

Free space on the binlogs volume is running low, please check!

El espacio libre del volumen binlogs es inferior al 20 %.

Uso típico

Aplicación de dos niveles simple (sin replicación)

El diagrama siguiente muestra un uso típico del dispositivo MYSQLR64 en una aplicación Web de dos niveles:

Aplicación de dos niveles simple (sin replicación)

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace user. La puerta de enlace reenvía las solicitudes al servidor Web, el cual sirve la solicitud. Cuando los scripts (por ejemplo, Perl o PHP) en web tienen que acceder a datos persistentes, usan el dispositivo db a través del terminal de salida del servidor Web. El dispositivo db se configura para almacenar sus archivos de registro dentro del directorio raíz del recurso compartido mostrado por los registros.

Mediante un explorador, los administradores se conectan a la puerta de enlace admin para consultar los archivos de registro de mysql o del servidor Web. La puerta de enlace admin envía las solicitudes al dispositivo NAS de registros.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

Nota: El volumen de datos se deberá configurar también en el dispositivo db, así como los dispositivos logs, content y mon. Para crear volúmenes de aplicaciones que se puedan utilizar aquí, consulte la guía del usuario del grid.

Aplicación de dos niveles escalable (sin replicación)

El diagrama siguiente muestra un uso típico del dispositivo MYSQLR64 en una aplicación Web de dos niveles en la cual la base de datos se utiliza para compartir el estado y los datos entre varios servidores Web con equilibrio de carga. Además, este ejemplo tiene una entrada independiente para mantenimiento a través de la cual un administrador puede iniciar sesión y acceder a la base de datos para mantenimiento, así como una entrada a través de la cual un administrador puede iniciar sesión y ver el registro de errores de mysql.

Aplicación de dos niveles escalable (sin replicación)

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace user. La puerta de enlace reenvía las solicitudes al equilibrador de carga web_lb, el cual las dirige a uno de los servidores Web: web1 o web2. Los servidores Web acceden a la base de datos db.

La base de datos db y los servidores web1 y web2 escriben sus archivos de registro en el dispositivo de registros a través de los terminales de registro. Además, un administrador se puede conectar a través de la puerta de enlace maint al dispositivo de registros y consultar los archivos de registro.

Adicionalmente, un administrador se puede conectar por SSH a través de la puerta de enlace maint al servidor de administración (deben configurarse las claves públicas y privadas). Desde el servidor admin, el administrador puede acceder a la base de datos db para obtener estadísticas o cambiar el esquema de la base de datos. El servidor admin puede acceder a Internet a través de la puerta de enlace gway para, por ejemplo, descargar una versión más reciente de bibliotecas o el esquema de la base de datos.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

Notas:

Los dispositivos maint, admin, gway, mon y log no son necesarios para el funcionamiento de la aplicación de dos niveles. Si existen, el servidor admin puede tener tareas de cron para limpiar la base de datos, enviar correo electrónico, etc.

Aplicación de N niveles con replicación principal-secundario (apropiada para copias de seguridad)

El diagrama siguiente muestra un uso típico del dispositivo MYSQL en una aplicación Web en la cual la base de datos se replica a un servidor secundario. El servidor secundario se puede usar para hacer copias de seguridad consistentes de los datos sin detener el servidor principal, introduciendo así un tiempo de inactividad cero para la aplicación.

Aplicación de N niveles con replicación principal-secundario (apropiada para copias de seguridad)

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace user. La puerta de enlace reenvía las solicitudes al equilibrador de carga web_lb, el cual las dirige a uno de los servidores Web: web1 o web2. Los servidores Web acceden a la base de datos principal.

El dispositivo secundario se conecta al dispositivo principal y replica sus datos. Los dispositivos secundarios se pueden detener en cualquier momento para hacer copias de seguridad consistentes de los datos de SQL o los análisis de gran volumen sin interferir en el rendimiento del dispositivo principal y el resto de la aplicación.

El acceso Web a los dispositivos principales y secundarios está disponible a través de la puerta de enlace admin en los puertos 8080 y 8081.

Los dispositivos principal, secundario, web1 y web2 se configuran para almacenar sus archivos de registro dentro del directorio raíz del recurso compartido que muestran los registros. Además, un administrador puede ver los archivos de registro a través de la puerta de enlace admin.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

principal

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

master-db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

1

Servidor principal (no es obligatorio que sea 1; debe ser diferente del server_id del secundario).

rpl_mode

master

Escribir registros binarios para la tarea de replicación.

secundario

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

slave-db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

2

Servidor secundario (no es obligatorio que sea 2; debe ser diferente del server_id del principal).

rpl_mode

slave

Conectarse al principal.

Notas:

Los dispositivos admin, mon y log no son necesarios para el funcionamiento de la replicación.

Aplicación de N niveles con replicación principal-principal (apropiada para equilibrio de carga)

El diagrama siguiente muestra un uso típico del dispositivo MYSQLR64 en una aplicación Web en la cual la base de datos se replica a dos servidores en un escenario de replicación de principal-principal. En este caso, la aplicación usa servidores tanto WEB como MYSQLR64 durante la operación de equilibrio de carga. También, en el caso de que una de las instancias WEB/MYSQLR64 falle, la otra instancia WEB/MYSQLR64 se puede utilizar para evitar tiempo de inactividad en la aplicación.

Aplicación de N niveles con replicación principal-principal (apropiada para equilibrio de carga)

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace user. La puerta de enlace reenvía las solicitudes al equilibrador de carga web_lb, el cual las dirige a uno de los servidores Web: web1 o web2. web1 usa el dispositivo de base de datos db1 y web2 usa el dispositivo de base de datos db2. db1 y db2 se conectan para replicar las actualizaciones que los servidores Web hagan a la base de datos. Cada dispositivo MYSQLR64 utiliza un desplazamiento (igual a su server_id) para las columnas auto_increment, de manera que no se produzca duplicación de entradas.

El acceso Web a los dispositivos db1 y db2 está disponible a través de la puerta de enlace admin en los puertos 8080 y 8081.

Los dispositivos db1, db2, web1 y web2 se configuran para almacenar sus archivos de registro dentro del directorio raíz del recurso que muestran los registros. Además, un administrador puede ver los archivos de registro a través de la puerta de enlace admin.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

db1

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db1.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

1

Servidor principal (no es obligatorio que sea 1; debe ser diferente del server_id del secundario).

rpl_mode

master_and_slave

Principal y secundario

db2

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db2.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

2

Servidor principal (no es obligatorio que sea 1; debe ser diferente del server_id del secundario).

rpl_mode

master_and_slave

Principal y secundario

Notas:

Los dispositivos admin, mon y log no son necesarios para el funcionamiento de la replicación.

Aplicación de N niveles con replicación principal-principal de varios nodos (apropiada para equilibrio de carga)

El diagrama siguiente muestra un uso típico del dispositivo MYSQLR64 en una aplicación Web en la cual la base de datos se replica a cuatro servidores en un escenario de replicación principal-principal. En este caso, la aplicación usa todos los servidores WEB y MYSQLR64 durante la operación de equilibrio de carga. También, en el caso de que una de las instancias WEB/MYSQLR64 falle, las otras instancias WEB/MYSQLR64 se pueden utilizar para evitar tiempo de inactividad en la aplicación (MYSQLR64 no gestiona errores).

Aplicación de N niveles con replicación principal-principal de varios nodos (apropiada para equilibrio de carga)

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace user. La puerta de enlace envía las solicitudes al equilibrador de carga web_lb, el cual dirige la solicitud a uno de los servidores Web web1, web2, web3 y web4 . Cada servidor Web usa su propio dispositivo de base de datos. Todos los dispositivos de base de datos se conectan en círculo para replicar las actualizaciones que los servidores Web hacen en la base de datos. Así pues, una actualización en db1, por ejemplo, se replicará a db2, db3 y db4. Cada dispositivo MYSQLR64 utiliza un desplazamiento (igual a su server_id) para las columnas auto_increment, de manera que no se produzca duplicación de entradas.

El acceso Web a db1, db2, db3 y db4 está disponible a través de la puerta de enlace admin en los puertos 8080, 8081, 8082 y 8083.

Los dispositivos db1, db2, web1 y web2 se configuran para almacenar sus archivos de registro dentro del directorio raíz del recurso que muestran los registros. Además, un administrador puede ver los archivos de registro a través de la puerta de enlace admin.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

db1

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db1.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

1

Servidor principal 1

rpl_mode

master_and_slave

Principal y secundario

db2

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db2.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

2

Servidor principal 2

rpl_mode

master_and_slave

Principal y secundario

db3

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db3.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

3

Servidor principal 3

rpl_mode

master_and_slave

Principal y secundario

db4

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db4.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

4

Servidor principal 4

rpl_mode

master_and_slave

Principal y secundario

Notas:

Los dispositivos admin, mon y log no son necesarios para el funcionamiento de la replicación.

Aplicación de N niveles que se ejecuta en diferentes instalaciones (apropiada para equilibrio de carga y conmutación por error)

El diagrama siguiente muestra un uso típico del dispositivo MYSQLR64 en una aplicación Web que se ejecuta en más de una instalación. Con esta configuración podrá ejecutar dos o más aplicaciones idénticas en instalaciones diferentes replicando la base de datos a todas las aplicaciones en la configuración principal-principal. Esto es útil en dos casos:

Aplicación principal

Aplicación de N niveles que se ejecuta en diferentes instalaciones (apropiada para equilibrio de carga y conmutación por error)

Aplicación secundaria

Aplicación secundaria

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace de usuario. La puerta de enlace reenvía las solicitudes al equilibrador de carga web_lb, el cual las dirige a uno de los servidores Web: web1 o web2. Los servidores Web acceden a la base de datos principal. El dispositivo principal se conecta a la aplicación remota (secundaria) para replicar la base de datos (siendo la única diferencia la propiedad server_id de secundario y la configuración de la red). La aplicación remota se conecta al dispositivo principal a través de la puerta de enlace vpn configurada para permitir establecer conexión solamente desde la puerta de enlace vpn de la aplicación remota. Los dispositivos principal y secundario en las dos aplicaciones se ejecutan en la configuración principal-principal, de modo que siempre tienen datos idénticos.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

El acceso Web a los dispositivos principales y secundarios está disponible a través de la puerta de enlace admin en el puerto 8080.

Principal

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

master-db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

1

Servidor principal (no es obligatorio que sea 1; debe ser diferente del server_id del secundario).

rpl_mode

master

Escribir registros binarios para la tarea de replicación.

VPN principal

Nombre de la propiedad

Valor

Notas

mode

server

Funciona como servidor.

tunnel

certificates

Uso de certificados SSL.

tcp_ports

3306,22

Permite usar los puertos que necesita MYSQLR64.

ip_addr

master_vpn_ip

Dirección IP de la VPN en la aplicación principal.

remote_host

slave_vpn_ip

Dirección IP de la VPN en la aplicación secundaria.

slave

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

slave-db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

2

Servidor secundario (no es obligatorio que sea 2; debe ser diferente del server_id del principal).

rpl_mode

slave

Conectarse al principal.

VPN secundario

Nombre de la propiedad

Valor

Notas

mode

client

Funciona como cliente.

tunnel

certificates

Uso de certificados SSL.

auth_path

"client1"

Ruta al archivo de certificado SSL.

ip_addr

slave_vpn_ip

Dirección IP de la VPN en la aplicación secundaria.

remote_host

master_vpn_ip

Dirección IP de la VPN en la aplicación principal.

La aplicación remota es una copia exacta, la única diferencia es la configuración de red de los dispositivos user, admin y vpn, las conexiones entre el dispositivo vpn y el principal=/=secundario, y el server_id del dispositivo principal=/=secundario (debería ser único).

Migración de bases de datos desde otros dispositivos

Si necesita migrar de MYSQLR a MYSQLR64 (y viceversa), no debería utilizar los volúmenes del dispositivo de 32 bits en uno 64 bits (o viceversa), ya que se podrían dañar los datos. Para hacer esto se recomienda volcar la base de datos en el dispositivo antiguo, transferir el archivo volcado al dispositivo nuevo y, a continuación, importar la base de datos en el dispositivo nuevo. A continuación se indica el procedimiento para hacer esto:

La base de datos ya se ha transferido y el dispositivo está preparado para uso.

Notas

Tenga en cuenta lo siguiente:

Importante: Al crear usuarios para la base de datos, compruebe que todos los usuarios se crean sin restricciones en el host desde el que se conectan. Por ejemplo:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

http://dev.mysql.com/doc/refman/5.0/en/index.html: documentación de MySQL 5.0

Software de fuente abierta de terceros utilizado en el dispositivo

MYSQLR64 utiliza los siguientes paquetes de fuente abierta/de terceros además de los paquetes de fuente abierta/de terceros que utiliza su clase base LUX64.

Software

Versión

Modificado

Licencia

Notas

aspell

0.60.3-7.1

No

LGPLv2.1

N/D

aspell-en

6.0-2.1

No

LGPLv2.1

N/D

curl

7.15.5-2

No

MIT

N/D

device-mapper-event

1.02.32-1

No

GPLv2

N/D

freetype

1.02.32-1

No

FTL

N/D

gmp

4.1.4-10.el5

No

LGPLV2.1

N/D

libidn

0.6.5-1.1

No

LGPLv2.1

N/D

libjpeg

6b-37

No

Distribuible

N/D

libpng

1.2.10-7.0.2

No

zlib/libpng

N/D

lvm2

2.6.26-2.1.2.8

No

GPLv2.0

N/D

mysql

5.0.77-3.el5

No

GPL

N/D

mysql-server

5.0.77-3.el5

No

GPLv2

N/D

perl-DBD-MySQL

3.0007-2.el5

No

Artistic

N/D

perl-DBI

1.52-2.el5

No

Artistic

N/D

php-cli

5.1.6-23.el5

No

PHPv3.01

N/D

php-common

5.1.6-23.el5

No

PHPv3.01

N/D

php-gd

5.1.6-23.el5

No

PHPv3.01

N/D

php-mbstring

5.1.6-23.el5

No

PHPv3.01

N/D

php-mysql

5.1.6-23.el5

No

PHPv3.01

N/D

php-pdo

5.1.6-23.el5

No

PHPv3.01

N/D

rsync

2.6.8-3.1

No

GPLv2

N/D

samba-client

3.0.28-1.el5_2.1

No

GPLv2

N/D

samba-common

3.0.28-1.el5_2.1

No

GPLv2

N/D

sudo

1.6.8p12-10

No

ISC

N/D

lighttpd

1.4.18-1.el5.rf

No

BSD

N/D

perl-IPC-Run

0.84-1.el5.rf

No

Artistic

N/D

perl-Time-Duration

1.06-1.el5.rf

No

Artistic

N/D

phpMyAdmin

2.11.10-1

No

GPLv2

N/D

Solución de problemas de MYSQLR
El dispositivo MYSQLR se bloquea al iniciarse

Desde MYSQLR 1.6.2, se puede establecer o cambiar la contraseña para la cuenta de la base de datos raíz. Sin embargo, el dispositivo MSYQLR tiene algunas cuentas raíz con nombres de host diferentes. Cuando se establezca o cambie una contraseña, se deberá utilizar siempre la cuenta root@%. La cuenta root@% es la cuenta ante la que se autentican los dispositivos conectados al terminal de entrada de MYSQLR . Las otras cuentas raíz se utilizan solamente desde usuarios locales, y no se deberá establecer nunca una contraseña para ellos, ya que al hacerlo el dispositivo MYSQLR dará error al iniciarse.

Nota: Si deja la cuenta root@localhost sin contraseña, no incurrirá en un problema de seguridad, ya que sólo los usuarios locales pueden utilizar esta cuenta en el dispositivo y cualquiera con acceso al dispositivo podrá cambiar la contraseña.

Recuperación de un dispositivo MYSQLR que falla al iniciarse después de haber cambiado la contraseña de la base de datos raíz

Para recuperar un dispositivo que da error al iniciarse porque se ha cambiado la contraseña raíz de la base de datos, realice los pasos siguientes:

  1. Inicie el dispositivo o aplicación en el modo de depuración.
    Comando de inicio del dispositivo
    comp start main.MYSQLR --debug 
    
    Comando de inicio de la aplicación
    app start --debug 
    

    Debería poder iniciar sesión en el dispositivo unos cuantos segundos después de iniciar el dispositivo. No es necesario esperar a que el dispositivo alcance el tiempo de espera.

  2. Inicie sesión mediante SSH en el dispositivo y ejecute los comandos siguientes:
    mysql -p -e "update mysql.user set Password='' where User='root'" 
    mysqladmin -p flush-privileges 
    mysql -e 'update mysql.user set password=PASSWORD("NEWPASSWORD") where User="root" and Host="%"' 
    mysqladmin flush-privileges
    

Reinicie el dispositivo para comprobar que se inicialice y que las conexiones mysql en el terminal de entrada para la raíz de usuario requieran contraseña.