Displaying posts with tag: MySQL (reset)
Readers’ Choice Awards 2011

Y salieron los premios anuales de la revista Linux Journal, me topé con algunas sorpresas y otras no tanto, y puedo resaltar los ganadores de algunas categorías que me interesan:

  • Mejor distribución de Linux: Ubuntu (faltaba mas)
  • Mejor entorno de escritorio: Gnome 3 (de verdad no esta tan mal)
  • Mejor navegador: Firefox  :/
  • Mejor gestor de base de datos: MySQL (seguido muy de cerca por PostgreSQL)
  • Mejor lenguaje de programación: Python? (creo que es hora de empezar con «esa nota»)
  • Mejor juego: World of Goo (creo que vale la pena las 20 fichas que cuesta)

La lista es larga, son 45 categorías, les sugiero que le hechen un vistazo:

[Lea más]
Probando UDFs para MySQL: Title Case

Conocemos «de sobra» lo que hacen las funciones LCASE y UCASE en MySQL, otros gestores también la implementan con alguna variación en el nombre pero con el mismo resultado.

Pero que pasa si queremos una función que convierta un texto al tipo Titulo, conocido también como title case, es decir convertir «un texto arbitrario» en «Un Texto Arbitrario«, para este caso no existe la función mágica que haga esa conversión y tenemos que escribir una propia.

No es necesario «reinventar la rueda» (aunque podría hacerlo), buscando encontré un repositorio de …

[Lea más]
Mis bugs reportados de MySQL-Workbench

Hace algunos meses, mientras usaba MySQL Workbench 3.2.33, noté varios bugs los cuales reporté inmediatamente, Oracle ya publicó la versión 3.2.35 y está apunto de publicar la versión 3.2.36, no había recibido noticias acerca de mis reportes.

Siempre es bueno colaborar a la mejora de herramientas libres, en este caso me dí cuenta de algunos detalles, incluso algunos de ellos pasarían desapercibidos. Pasado el tiempo ya, quise saber sobre mis bugs reportados y resulta que todos ya habían sido resueltos, y éstos son:

60354    Workbench can’t open a stored procedure
60557    Workbench closes without ask to save modified file
60562    The action pane won’t …

[Lea más]
Nuevos cambios, nuevas oportunidades

Hace bastante tiempo que no escribo aquí y creo que es necesario dar una explicación a las personas que me siguen, aunque no sean muchas ?

Mi vida laboral ha vuelto a dar un cambio importante, el segundo en lo que voy de año. Desde Octubre he entrado a trabajar en Percona como Support Engineer lo cual, bajo mi punto de vista, es un salto profesional grandísimo y le estoy muy agradecido a Ewen Fortune por esta oportunidad. Ahora mismo tengo de todo en mi vida, pero no tiempo libre ? Los que me conocen bien saben que en cuanto tengo un reto por delante no puedo dejar de trabajar y esforzarme dando lo mejor de mi, por lo que estos meses están siendo muy intensos. Mucha lectura, estudio y práctica para poder alcanzar el nivel de profesionalidad y conocimiento que tanto hacen destacar a Percona.

Seguiré publicando posts sobre MySQL en mi blog, pero en un principio con menos …

[Lea más]
Activar el motor FEDERATED en MySQL

El motor FEDERATED de MySQL, aunque no es muy versátil, puede resultar útil, por ejemplo, para conectarnos directamente a una tabla en otro servidor MySQL sin necesidad de un intermediario, como un script PHP que copie/verifique/vea datos de otro servidor.

El motor FEDERATED no esta habilitado por defecto en instalaciones estándares sobre Linux, no hay que compilar nada, solo agregarle el parametro --federated en el archivo /etc/init/mysql.conf:

#Busquen esta linea en el archivo /etc/init/mysql.conf
exec /usr/sbin/mysqld --federated

Luego de reiniciar el servicio mysql, verán los resultados:

ivancp@ubuntu$ sudo service mysql restart

 

Para ver que motores están disponibles ejecuten SHOW ENGINES en la linea de comando MySQL:

mysql> show engines;
+------------+---------+-----------+--------------+------+------------+
| Engine     | Support | Comment   | …
[Lea más]
Instalación de MySQL 5.5 en CentOS 6 con upstart

Anteriormente ya vimos como instalar MySQL 5.5 en una CentOS 5 desde código fuente usando daemontools. Hoy veremos la instalación para CentOS 6 con upstart.

Primero de todo necesitaremos cmake y las ncurses:

yum install cmake -y
yum install bison -y
yum install ncurses-devel -y
cd /usr/local/src
wget 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.easynet.be/'
tar xzf mysql-5.5.16.tar.gz
cd mysql-5.5.16

A continuación seguiremos compilando con el datadir en /var/mysql/ y los binarios instalados en /usr/local/mysql55:

cmake . -DMYSQL_DATADIR=/var/mysql/ -DENABLE_DEBUG_SYNC=0 \
        -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
        -DWITH_UNIT_TESTS=0
make && make install

Para …

[Lea más]
Simplificar el acceso a MySQL CLI

¿No les ha dado pereza escribir, en la linea de comando, todo lo necesario para conectarse a un servidor MySQL?

Puede que tome menos de un minuto, pero algunas veces un minuto es vital (sobre todo si estamos cerca del fin del mundo).

ubuntu@ubuntu$ mysql -u root -p -h mysqlhost [base_datos]

 

Cuando uno esta apurado, estos comandos suelen fallar varias veces por minuto.

La solución: podemos ayudarnos creando atajos con alias en el archivo ~/.bashrc:

#archivo ~/.bashrc
 
#comando "my" para conectarse a un servidor local
alias my="mysql -u root -p"
 
#comando "my2" para conectarse a un servidor remoto
alias my2="mysql -u root -p  -h 192.168.1.56"

 

La proxima vez que queramos acceder al servidor local solo tendremos que escribir en la linea de comando my [base_datos], solamente nos pedirá el password del servidor.

[Lea más]
Simulando secuencias en MySQL

Quienes hemos usado PostgresSQL solemos fastidiarnos con el código que hay que escribir para tener un campo auto-numérico, pero también hemos llegado a extrañar esa característica cuando usamos MySQL.

Como sabemos MySQL, usa la propiedad AUTO_INCREMENT para campos numéricos que usamos en claves primarias.

Pero en que situaciones podemos necesitar una secuencia? pues les doy algunas ideas:

  • Cuando queremos tener mas de un campo auto-numérico en una tabla.
  • Cuando necesitamos un contador general que podemos utilizar en mas de una tabla.
  • No se me ocurren mas, pero estoy seguro que en algún momento podemos darle un uso.

Manos a la obra:

Necesitaremos una tabla para guardar el valor actual de la secuencia:

create table _sequence
(
        seq_name varchar(50) not null primary key,
        seq_val int unsigned not null …
[Lea más]
¿Cuando es necesario comprar una licencia MySQL?

Como seguramente saben, MySQL provee licenciamiento dual, puedes obtener el código fuente bajo la licencia GPL v2 o puedes comprar una licencia comercial.

Hace algunos meses he oído algunos comentarios fuera de lugar sobre el licenciamiento o sobre en que situación es necesario comprar una licencia comercial de MySQL. Escuché por ejemplo que puedes usar MySQL en todo lo que te sea útil excepto para ganar dinero, en nuestro entorno (latinoamericano) es natural llegar a una conclusión pero no es correcta.

Entonces, ¿cuando es necesario comprar una licencia comercial de MySQL? En realidad es muy simple: cuando quieres hacer algo con MySQL que la licencia GPL v2 no lo permita.

Si bien el asunto de las licencias y demás documentos legales los debería interpretar un abogado, (y debería considerar hacer una investigación legal por su propia cuenta) la mala interpretación de la licencia GPL es …

[Lea más]
SHOW PROFILE de MySQL

El EXPLAIN a primera vista puede resultar algo confuso y en joins con muchas tablas tampoco nos indica en que esta perdiendo más tiempo el MySQL. Mediante SHOW PROFILE tendremos un detalle de los tiempos de ejecución.

Para poder ver los tiempos de ejecución deberemos dejar a 1 la variable de sesión profiling:

mysql> set profiling=1;
Query OK, 0 rows affected (0.00 sec)

A continuación deberemos ejecutar las queries que queramos, pudiendo ver el resultado con SHOW PROFILE:

mysql> select id, object_id, concat(section,tag) , unix_timestamp(log_date) as thing_date from log where thing_timestamp >=  DATE_FORMAT(date_sub(CURRENT_TIMESTAMP(), interval 7 day),'%Y%m%d070000');
(...)
244606 rows in set (1.06 sec)

mysql> show profile;
+----------------------+----------+
| Status …
[Lea más]