Posts Tagged MySQL

Amazon RDS – La nube de datos relacional*

Hace tiempo que trabajábamos buscando soluciones al problema de migrar aplicaciones que utilizan una base de datos relacional “clásica” a un entorno de cloud computing (más concretamente a Amazon EC2). Este problema nos llevó a interesantes estudios sobre el clúster y la replicación master-slave de MySQL hasta encontrar una solución bastante aceptable con esta última. Y después de todo este trabajo… va Amazon y lo resuelve con un nuevo servicio llamado Amazon RDS (Relational Database Service).

En pocas palabras, RDS viene a ser una puerta de acceso a una base de datos MySQL Server (de momento la versión 5.1 con InnoDB como motor principal) que corre encima de los servidores de Amazon Web Services. Amazon te proporciona una interfaz idéntica a la que utilizarías con un servidor dedicado a la base de datos pero no preguntes como funciona por debajo, no te preocupes por las actualizaciones de seguridad, no intentes acceder como si fuera un servidor normal y corriente… sólo utilízalo y disfrútalo!

Amazon RDS viene a completar la oferta de sistemas de bases de datos con SimpleDB (una base de datos muy simple para aplicaciones con una baja complejidad de datos) y Amazon EC2 Relational Database AMIs (una selección de AMIs con diferentes software de bases de datos preeinstalados).

Para interactuar con Amazon RDS, como con casi todos los servicios de AWS, tenemos la posibilidad de realizar llamadas a la API directamente o descargarnos las herramientas por linea de comandos (en mi opinión la mejor opción).

Para instalar las herramientas por linea de comandos podemos seguir los siguientes pasos:

  1. Descargamos las RDS Command Line Tools de la página oficial de Amazon
  2. Seteamos las variables JAVA_HOME y AWS_RDS_HOME necesarias en /etc/enviroment. Las linias que tendríamos que añadir son las siguientes
    AWS_RDS_HOME="/path/a/la/carpeta/commandlinetools"
    JAVA_HOME="/path/a/java"

    En mi caso el “/path/a/java” es “/usr/lib/jvm/java-6-sun/” y si utilizas Ubuntu no creo que sea muy diferente ;-)
  3. El siguiente paso es añadir en el PATH del sistema el directorio /bin de las herramientas que hemos descargado. Para hacer esto, dentro del mismo archivo /etc/enviroment, añadiremos :$AWS_RDS_HOME/bin antes de las dobles comillas que cierran la expressión PATH=”blabla:/blabla:/blabla” para que quede de la forma PATH=”blabla:/blabla:/blabla:$AWS_RDS_HOME/bin”.
  4. Lo siguiente es abrir el archivo credential-file-path.template que encontraremos en la raíz del directorio de las herramientas y introducir nuestros datos de acceso a la cuenta de AWS.
  5. Una vez introducidas nuestras credenciales añadiremos la situación de este archivo en /etc/enviroment también:
    AWS_CREDENTIAL_FILE="/path/a/credential-file-path.template"
    Si queremos podemos modificar el nombre del fichero y moverlo a la localización que más nos guste, mientras mantengamos la informatcion de /etc/enviroment actualizada.
  6. Una vez tengamos todo ésto solo queda reiniciar el ordenador para cargar todas estas variables y ya estaremos listos para empezar a jugar con Amazon RDS!

Me gustaría descubrir un método para recargar las variables de /etc/enviroment en caliente pero de momento los métodos que he encontrado no han acabado de funcionar correctamente, si tienes alguna sugerencia déjala en los comentarios :-)

Bueno ahora viene la mala noticia… Amazon RDS de momento solo está disponible para Estados Unidos… Pero prometen tenerlo disponible para Europa en los próximos meses, veremos que tardan.

Os dejo un post del blog de Amazon Web Services en el que se introduce Amazon RDS enlace.

logo_aws

*No me agredais física ni intelectualmente por el juego de palabras!!

, , , ,

1 Comment

MySQL Workbench va a sustituir a Administrator y Query Browser

Cómo se nos anuncia en los últimos artículos del blog official de desarrollo de MySQL Workbench, las nuevas funcionalidades que vendrán con la versión final de la 5.2 del Workbench van a sustituir los dos programas básicos para la gestión (mediante interfaz gráfica) de MySQL Server.

En el post MySQL Workbench 5.2.4 Alpha Available, se detallan nuevas funcionalidades de gestión como:

  • Registro de diferentes perfiles de servidor
  • Parada y arranque del MySQL Server
  • Edición de los ficheros de configuración del servidor
  • Visualización de conexiones y otras variables del servidor

Aunque para mi, la novedad más importante que se comenta en el artículo es la disponibilidad de gestionar servidores a través de tuneles SSH. Seguro que para muchos de los desarrolladores que utilizan este servidor de base de datos esta será una gran noticia.

En el último artículo titulado MySQL Workbench Administrator Plugin, nos anuncia la llegada del plugin WBA (Workbench Administrator) que a parte de las funcionalidades anteriores nos provee la posibilidad de:

  • Gestionar las cuentas de usuario
  • Monitorear las conexiones al servidor
  • Lectura de logs
  • Extraer un dump o restaurar una base de datos desde una copia de seguridad

Si normalmente utilizais MySQL Query Browser o MySQL Administrator vereis que quedan realmente muy pocas funcionalidades para añadir al Workbench para que pueda reemplazar los dos programas.

Personalmente creo que es un paso adelante en cuanto a la gestión gráfica de MySQL Server y el mundo de las bases de datos en general. Los programas de gestión de MySQL fueron un gran incentivo para provar este servidor de base de datos pero poco a poco se han ido quedando obsoletos y este lavado de cara era inevitable.

Los competidores de Query Browser y Administrator como Navicat, con su versión Lite, habían conseguido dejar en un segundo plano estos programas tan útiles… Seguro que con la salida de Workbench 5.2 MySQL gana más adeptos.

Saludos desde Tenerife!

, ,

2 Comments

Breves vacacionales

Desde la tranquilidad de unas vacaciones merecidas no me han pasado por alto algunas noticias como las siguientes:

  • MySQL Workbench 5.2 ha llegado a su versión Alpha 3: Nuestra herramienta preferida para ayudar en el diseño de bases de datos da un paso más hacia su versión final. Aquí el post original del equipo de desarrollo del programa.
  • Cahaya CMS publica su primera versión estable: Cahaya és un CMS basado en el Zend Framework. Aunque sea un proyecto un poco verde, resulta muy interesante ya que un equipo con conocimientos del Zend Framework no debería aprender un nuevo framework (cosa que sí que pasa con Joomla o Drupal). Aquí el post original de la Zend Developer Zone.
  • Gloobus el Quick Look para Gnome: Quick Look aporta una magnifica experiencia de usuario a los usuarios de Mac. La posibilidad de previsualizar el contenido de un archivo de forma casi inmediata representa un gran aumento de productividad que no pasa por alto a los usuarios de Mac OS; ahora Gloobus quiere portar esta funcionalidad a Gnome. Aquí os dejo el post de VivaLinux que me ha informado sobre tal proyecto.

Són unas explicaciones breves a la espera de volver a la actividad y entrar en profundidad en cada uno de los temas ;-)

Disfrutad del trabajo, que dignifica!

, , , ,

1 Comment

Problemas para conectar con MySQL Server

Intentando conectar con un MySQL Server que tenemos en el servidor de desarrollo de la oficina nos hemos dado cuenta de que por defecto no se puede acceder a este sistema gestor de base de datos desde un ordenador que no sea ‘localhost’ o ’127.0.0.1′ (en la versión 5.1 por lo menos).

El error que recibíamos no era ni culpa del router (que es un Zyxel de Telefónica y no sería le primer problema que nos da), ni del firewall por defecto de Ubuntu (ufw, Uncomplicated FireWall) ni nada parecido, el error era culpa nuestra.

La instalación del servidor de desarrollo de la oficina se hizo un viernes de Agosto cerca de la una del mediodía y con las prisas para salir corriendo hacía la playa nos olvidamos mirar los archivos de configuración del servidor de MySQL. El archivo de configuración de MySQL (por defecto alojado en /etc/mysql/my.cnf en Ubuntu) contiene por defecto la siguiente directiva:
bind-address = 127.0.0.1Con lo que se bloquean todas las conexiones al servidor que no se hagan desde esta dirección. Para solucionar el problema sólo hace falta comentar esta línea:
#bind-address = 127.0.0.1Y reiniciar el servicio (desde la consola):
sudo /etc/init.d/mysql restart
Este apunte es solo un pequeño paréntesis en la serie de artículos referentes a Subir vídeos a YouTube con Zend Gdata – Requisitos previos y Identificación del usuario, pronto volveremos con el último de la saga!

,

2 Comments

MySQL Workbench estable y pidiendo participación

Aunque no haya hecho eco de esta noticia, MySQL Workbench 5.1 llegó a su primera versión estable (o por lo menos así lo anunció el equipo) el 30 de Junio de este mismo año (2009), aquí podéis leer el post con el que el equipo lo anunciaba.

Pues bien, después de un tiempo probando esta versión estable y versiones no estables de la 5.2 hoy he podido leer en el blog del equipo de desarrollo que están pidiendo la opinión de los usuarios para saber que paquetes binarios tienen más adeptos para optimizar esfuerzos. Este enlace os llevará al post dónde podéis encontrar la votación.

Creo que este tipo de gestos debería ponerse más en práctica porqué se da voz y voto a un segmento que a veces puede tener ciertas reticencias a adoptar proyectos de código abierto como herramientas, los usuarios.

Para descargar la versión estable de la versión 5.1 o las primeras ‘previews’ de la 5.2 os dejo el enlace aquí. Aunque sea sólo por curiosidad os aconsejo que le echéis una ojeada a la versión 5.2, trae interesantes novedades en cuanto a funcionalidades se refiere.

, ,

No Comments

MySQL Workbench entra en Beta

Como podemos leer en el post del dia 21 de Marzo en el blog del desarrollo de MySQL Workbench, la nueva versión de nuestra interfaz gráfica favorita para diseñar bases de datos ha entrado ya en fase Beta (en el primer apunte sobre este programa aún estaba en fase Alpha o pre-Beta). La versión disponible ahora mismo es la 5.1.9.

Tal y como comentan, la actualización de 5.0 a 5.1 no representa un gran cambio a nivel de estructura de la aplicación sino que se centra en mejorar el rendimiento de la versión actual y añadir algunas funcionalidades extra. Uno de los puntos más interesantes aquí es que algunas funcionalidades que estaban sólo en la versión comercial (SE) se han añadido a la versión libre (OSS).

Para cerrar este apunte informativo sólo comentar que también se publican (en los comentarios del artículo) los nuevos repositorios para instalar MySQL-Workbench a través del gestor de paquetes de Ubuntu. Existen versiones para 32 y 64 bits, pero por lo que he podido leer en los comentarios, la versión de 64 bits parece un poco más insestable.

La línea a añadir para la versión de 32 bits:
deb ftp://ftp.mysql.com/pub/mysql/download/gui-tools/ubuntu/ i386/Y para la de 64 bits:
deb ftp://ftp.mysql.com/pub/mysql/download/gui-tools/ubuntu/ amd64/
Recordad que por mucho que nos guste esta herramienta sigue en Beta… ok?

Saludos y updates ;)

, ,

No Comments

Añadir un slave a un entorno de replicación MySQL

Siguiendo el hilo de los artículos de Laura Berdasco sobre levantar un entorno de replicación Master-Slave en MySQL, Vamos a explicar como añadir un esclavo más a un entorno de este tipo funcionando.
Estos pasos se han realizado en instancias de EC2 con acceso al puerto 3306 desde Internet (se pueden endurecer las políticas de seguridad en este punto pero para realizar las pruebas ya nos servirá esta configuración) y acceso por SSH en sistemas Ubuntu 8.10.

Para añadir un esclavo a un entorno debemos seguir los siguientes pasos:

  • Paramos el servidor MySQL del esclavo en funcionamiento (de aquí en adelante slave-1). En la consola del slave-1 con el siguiente comando:
    sudo /etc/init.d/mysql stopPara ejecutar este comando debemos acceder a la consola del slave-1 por SSH o localmente.
  • Paramos también le servidor MySQL del esclavo que queremos arrancar (de aquí en adelante slave-2). En la consola del slave-2 con el mismo comando que en paso anterior.
  • Copiamos los archivos del direcotrio /var/lib/mysql del slave-1 al slave-2. Para esta operación necesitamos la clave (keypair) para acceder por SSH del slave-1 al slave-2, en nuestro caso se encuentra en /mnt/keypair.pem.

    Si no tenemos este archivo en el slave-1 desde el ordenador en que la tengamos deberemos ejecutar este comando:
    scp -i /path/to/keypair.pem /path/to/keypair.pem root@dns.slave-1.com:/mnt/keypair.pemEste comando nos sube por SSH el archivo keypair.pem situado en /path/to al directorio /mnt del servidor remoto (dns.slave-2.com) identificandose como root con el mismo archivo (opción -i). Para realizar esta acción debemos identificarnos como root (a veces puede fallar la ejecución con ‘sudo’).

    Una vez con el archivo keypair.pem en el slave-1 copiaremos tambien con el comando ‘scp’ el contenido del directorio /var/lib/mysql de slave-1 al slave-2. En la consola del slave-1:
    scp -r -i /mnt/keypair.pem /var/lib/mysql/* root@dns.slave-2.com:/var/lib/mysql/Cuando se hayan copiado todos los archivos podemos poner en marcha el servidor MySQL del slave-1.

  • Una vez copiados estos archivos es importante cambiar el propietario. En la consola del slave-2 ejecutar los siguientes comandos:
    cd /var/lib/mysql
    sudo chown -R mysql:mysql *
    Si no realizamos este cambio de propietario es posible que el servidor de MySQL del slave-2 no arranque correctamente.
  • Cambiar el server-id del slave-2. Editando el archivo con vim o nano tenemos que abrir el archivo /etc/mysql/my.conf y dónde encontremos una linia así (o con otro número):
    ...
    server-id=2
    Cambiar el número que aparece por un server-id que no se esté utilizando en el entorno de replicación.
  • Para poder arrancar el servidor MySQL del slave-2 sólo nos queda dar permisos de replicación en el master. En la consola del master entramos en el cliente mysql:
    mysql -u root -pY ejecutamos la siguiente consulta:
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'usuario_replica'@'dns-slave-2.com' IDENTIFIED BY 'pwd_del_usuario_replica';
  • Arrancamos el servidor MySQL del slave-2. En la consola del slave-2 ejecutamos el comando:
    sudo /etc/init.d/mysql start

Para comprovar que todo ha ido correctamente debemos realizar alguna modificación en el master y asegurarnos que se distribuye a las dos replicas afectadas. Para más información podeis visitrar los compeltos artículos que Laura tiene en su blog sobre la replicación en MySQL: Replicación MySQL con Master-Slave sobre Ubuntu 8.10 (master) y Replicación MySQL con Master-Slave sobre Ubuntu 8.10 (slave).

, , , , , ,

No Comments

Mover los archivos de datos de MySQL Server

En ocasiones es posible que nos interese tener los archivos dónde se encuentran los datos de MySQL en un directorio diferente del que viene configurado en la instalación del servidor. Vamos a ver que pasos debemos seguir si en un momento dado queremos migrar los datos de un MySQL Server a un directorio diferente.

Estos pasos han funcionado en diferentes equipos ejecutando un MySQL Server 5.0 con replicación (tanto en modo master cómo en slave) sobre un sistema Ubuntu 8.10. Los archivos de datos en este caso están almacenados en /var/lib/mysql y los vamos a migrar a /home/mysql

  • Creamos el directorio mysql en /home (si no lo tenemos creado ya):
    cd /home
    sudo mkdir mysql
  • Paramos el servidor de MySQL:
    sudo /etc/init.d/mysql stopEste paso hay diferentes formas de ejecturalo, se puede utilizar cualquier comando que pare el servidor MySQL.
  • Copiamos todo el contenido de /var/lib/mysql a /home/mysql :
    sudo cp -R /var/lib/mysql/* /home/mysql/Es muy importante no dejarse la opción -R ya que es la que nos permite copiar directorios con todo su contenido.
  • Una vez copiado el contenido si vamos al directorio /home/mysql veremos que el propietario de los archivos es root. Por este motivo debemos cambiar el propietario de todos los archivos y directorios (incluído /home/mysql):
    sudo chown -R mysql:mysql /home/mysqlOtra vez la opción -R nos permite realizar la operación recursivamente por todos los sub-directorios.
  • Editamos el fichero de configuración del servidor:
    sudo gedit /etc/mysql/my.confEn este ejemplo hemos empleado Gedit pero evidentemente puede editarse con editores del tipo vi o nano.

    Y en la línea dónde encontramos esto:
    ...
    datadir = /var/lib/mysql

    Ponemos lo siguiente:
    ...
    datadir = /home/mysql

  • Es posible que si intentáramos arrancar el servidor de base de datos funcionara pero en la mayoría de casos debemos modificar la configuración de AppArmor. Primero modificaremos uno de los archivos de configuración:
    sudo gedit /etc/apparmor.d/usr.sbin.mysqldY vamos a realizar la siguiente modificación, dónde nos encontremos con las líneas siguientes:
    ...
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    Vamos a poner lo siguiente:
    ...
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    /home/mysql/ r,
    /home/mysql/** rwk,
    Si hacemos estas modificaciones pero no volvemos a arrancar AppArmor no nos va a servir de nada, así que antes de seguir al ultimo paso debemos ejecutar el siguiente comando:
    sudo /etc/init.d/apparmor restart
  • Para finalizar sólo tenemos que volver a arrancar el servidor MySQL:
    sudo /etc/init.d/mysql startSi todo ha ido bien el servidor no tardará mucho en arrancar ;)
    • Si una vez realizados estos pasos queremos asegurarnos que el servidor realmente esta almacenando los datos en el directorio que le hemos señalado podemos crear una base de datos vacía y ir al directorio /home/mysql/ y ejecutando el comando ‘ls’ mirar si se ha creado un directorio con el nombre de la base de datos nueva.

      Espero que os sirva!

, , ,

1 Comment

MySQL Workbench, el sustituto de DBDesigner

Para diseñar una base de datos con una mínima complejidad son necesarios unos conocimientos bastante amplios sobre bases de datos en general y sobre el motor de almacenamiento que vamos a utilizar (MySQL, Oracle, Postgre…).

El primer paso para obtener una base de datos “decente” es un buen análisis para definir la estructura que vamos a introducir dentro del sistema gestor escogido pero, una vez tenemos el esquema que vamos a utilizar, podemos recurrir a herramientas muy útiles que nos facilitan la vida. Una de estas herramientas hasta hace poco era DBDesigner.

DBDesigner era una herramienta que te ayudaba de forma gráfica a crear el esquema de la base de datos pero que gracias a su interfaz pasó a formar parte de las herramientas que se utilizaban en el análisis. El poder crear un modelo gráfico que una vez finalizado, con sólo apretar un botón, te regalara los scripts de creación de la base de datos era una maravilla.

En la parte negativa sólo comentar que la instalación en un equipo corriendo la distribución Ubuntu (la que utilizo en casa y en el trabajo) era larga y complicada; y si al final conseguías que corriera al 100% ya era un gran logro.

El abandono de este proyecto me desilusionó un poco (tengo que confesarlo) hasta que un dia me aventuré a provar la versión Alpha de MySQLWorkbench (según la página oficial de DBDesigner su sucesor natural). Las versiones etiquetadas como Alpha no me acostumbran a llamar mucho la atención pero en alguna de las capturas que pude ver me pareció ver una interfaz muy cuidada para ser una versión pre-Beta de la gente de Sun. El reclamo final que me llevó a su instalación era la facilidad con la que supuestamente se podía instalar en mi sistema operativo.

Al final caí y la verdad es que estoy muy contento. Desconozco si existe la gran diversidad de plugins que existía en DBDesigner pero hasta el momento me ha sorprendido mucho su estabilidad (recuerdo que es una versión Alpha) y el gran abanico de opciones para diseñar un correcto esquema de base de datos (hasta ofrece nomenclaturas para algunos campos generados automáticamente). NOTA: Estoy utilizando MySQL Server, que supongo que será el primer beneficiado de las características del programa.

Para diseñar y gestionar una base de datos hace falta tener conocimientos muy amplios sobre el tema pero una ayuda para las tareas más pesadas nunca está de más ;-) Ahora os dejo con las instrucciones para instalarlo en una Ubuntu 8.10 (cómo siempre, no lo he provado en otros sistemas pero es possible que funcione con versiones anteriores de Ubuntu o Debian):

Instalación de MySQL Workbench en Ubuntu 8.10

Pasos:

  • Instalar la librería libctemplate requerida:
    La podeis encontrar aquí. Bajamos el archivo .deb y lo instalamos con el gestor gráfico (GDebi) o con la consola con el comando:
    sudo dpkg -i /ruta/al/archivo/libctemplateXXXXXXX.deb*sustituir por la ruta correcta y la versión de libctemplate adecuada.
  • Añadir a las fuentes de software la siguiente linea:
    deb ftp://ftp.mysql.com/pub/mysql/download/gui-tools/ubuntu/ binary/Con el asistente gráfico o añadiendo la linea al archivo sources.list en /etc/apt/
  • Instalar MySQL Workbench desde el terminal con el comando:
    sudo apt-get install mysql-workbench-oss

Cualquier duda no dudes en dejarla en comentarios!
mysqlwork

, , , , ,

4 Comments