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]
WordPress ahora acepta sentencias LaTeX

Gracias a un plugin para WordPress incluido en Jetpack podemos incluir expresiones matemáticas en los posts fácilmente. Solo necesitan instalar Jeckpack en su WordPress para habilitar esta opción.

Esto es especialmente útil al momento de explicar un algoritmo, que incluya expresiones matemáticas, o para quienes tengan un blog y sean profesores/físicos/matemáticos/etc

Solamente tienen que escribir la expresión matemática en sintaxis  entre los signos de dolar:

$latex [expresion] $

Aquí algunos ejemplos:

El código fuente de los ejemplos anteriores es:

$latex
x = a_0 + \frac{1}{\displaystyle a_1
+ \frac{1}{\displaystyle a_2
+ \frac{1}{\displaystyle a_3 + a_4}}}$
 
$latex x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}} $ …
[Lea más]
Thunderbird: proteger nuestro perfil

Nuestro correo electrónico es, quizá, lo mas importante que tenemos en la red, por muchísimas razones es una buena idea gestionar nuestro correo desde Thunderbird, ¿pero que tan seguro está?

Siempre he revisado mi correo en un equipo mio y no he tenido problemas al respecto, pero en algunos casos existe la posibilidad de que estemos usando un equipo compartido o Thunderbird esta configurado con diferentes perfiles, ¿cómo podemos proteger nuestro correo?

Fácil!, instalando el plugin ProfilePassword, éste plugin no esta disponible desde el repositorio de Thunderbird pero es una maravilla, una vez instalado estará disponible desde el menú Herramientas -> Profile Password y podremos establecer la contraseña de Thunderbird al …

[Lea más]
WordPress: agregar mas tamaños de imágenes

WordPress crea por defecto 3 copias de tamaños diferentes de los archivos de imágenes, estos pueden ser utilizados para mejorar la disposición de un post. Sin embargo esos tamaños no son siempre los que necesitamos.

Redimensionar las imágenes es un trabajo adicional, que puede tomar varios minutos, pero yano, por que existe un plugin que nos permite crear los tamaños que necesitemos, se llama: Additional image sizes (zui).

Una vez instalado tendremos más para elegir:

Si ya tenemos un blog con muchas entradas e imágenes, hay la opción de volver a crear los archivos de las imágenes adicionales.

El pluging se puede instalar fácilmente desde el repositorio, solo búsquenlo con el nombre de zui. …

[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]
Ver el estado de un MySQL

Para ver las queries que se están ejecutando en un MySQL se usa SHOW PROCESSLIST;, pero muchas veces no nos interesa tanto que queries se ejecutan sino la cantidad que hay para ello podemos recurrir a otra variable.

mysql> show processlist;
(...)
6 rows in set (0.00 sec)

Mediante SHOW STATUS podemos ver la cantidad de queries en ejecución con las variables Threads_%:

mysql> show status like 'Threads%';
+-------------------+--------+
| Variable_name     | Value  |
+-------------------+--------+
| Threads_cached    | 25     |
| Threads_connected | 6      |
| Threads_created   | 378847 |
| Threads_running   | 1      |
+-------------------+--------+
4 rows in set (0.00 sec)

Su significado es:

  • Threads_cached: Número de threads en la thread cache, no tiene porque coincidir con …
[Lea más]