Tagged:mysql

Cambiar ruta de acceso por defecto de la carpeta data de mysql en ubuntu linux

Instrucciones probadas en:

  • Ubuntu 14.04, 64 bits + MySQL 5.6.19
  • Ubuntu 15.10, 64 bits + MySQL 5.6.27

Por defecto la carpeta de datos de MySQL es /var/lib/mysql. Supongamos que queremos usar /home/data:

Crea la carpeta nueva

mkdir /home/data

Cambia los permisos de la carpeta nueva para que pertenezca al usuario y grupo mysql:

chown -R mysql:mysql /home/data/*

Edita el fichero de configuración de mysql /etc/mysql/my.cnf. En Ubuntu 15 el fichero de configuración está en /etc/mysql/mysql.conf.d/mysqld.cnf

nano /etc/mysql/mysql.conf.d/mysqld.cnf

Busca la línea que dice “datadir = /var/lib/mysql” y cambia la ruta antigua por la nueva

datadir = /home/data

En Ubuntu se usa AppArmor para gestionar la seguridad, así que también tenemos que decirle a AppArmor que mysql tiene permisos sobre la nueva carpeta:

nano /etc/apparmor.d/usr.sbin.mysqld

Añade las siguientes líneas al final:

/home/mysql-data r,
/home/mysql-data/* rwk,

Reinicia AppArmor

/etc/init.d/apparmor restart

Detén el servidor

/etc/init.d/mysql stop

Copia los ficheros de la carpeta de datos antigua a la nueva. Asegúrate de no copiar los ficheros ib_arch_log_0000000000, ib_logfile0, etc.

cp -rp /var/lib/mysql/* /home/data
rm /home/data/ib*
rm /home/data/*.cnf
rm /home/data/debian*

Reinicia el servidor

/etc/init.d/mysql start

Bualá

Problema de caracteres al importar una base de datos UTF-8 en MySQL

Muchas veces es necesario trasladar bases de datos de una máquina a otra por múltiples motivos (cambio de proveedor, cambio de máquina de desarrollo, etc). La manera más cómoda de hacerlo, si se tiene acceso a las consolas MySQL de ambas máquinas es realizar un volcado en sql desde la máquina origen mediante el comando mysqldump y luego restablecer dicho volcado en la máquina de destino inyectando el script volcado anteriormente mediante la línea de comando de mysql:

mysql -h host -u usuario -p -D basededatos < fichero.sql

Si el servidor de origen y el servidor de destino están configurados exactamente igual en lo que a conjuntos de caracteres se refiere, no habrá ningún problema, sin embargo si las configuraciones son diferentes (el caso más común es utf-8 por un lado y latin-XXX por otro), al utilizar la nueva base de datos observaremos que los caracteres especiales se han convertido en ristras de caracteres raros. La manera de realizar la importación correctamente es utilizar el parámetro "--default_character_set", de modo que la línea de comando quedaría algo así:

mysql -h host -u usuario -p --default_character_set utf8 -D basededatos < fichero.sql

Es importante darse cuenta que este problema no tiene nada que ver con la conexión a la base de datos que se utilice en la aplicación en el nuevo host sino que se trata de un problema relacionado estrictamente con la utilidad de importación de mysql.

Problemas en la versión 5.1.5 del conector ODBC de MySQL

La versión 5.1.5 del conector ODBC de MySQL da problemas que afectan a cualquier aplicación que lo utilice para conectarse a la base de datos. En mi caso el mensaje de error que me lanzaban diferentes página ASP era el siguiente:

«Error: File /applications/ip2country/lookup.asp Unexpected error. A trappable error
(C0000005) occurred in an external object. The script cannot continue running..»

Este error se producía de forma completamente aleatoria varios cientos de veces al día, llegando a ser terriblemente desesperante y a poner en peligro la relación con algún cliente molesto por la ristra continuada de mensajes de error en su página web.

Por supuesto inicialmente pensé que se trataba de algún bug en mi aplicación, sin embargo después de largas horas de debug conseguí llegar a la raíz: volviendo al conector antiguo (3.5) los errores desaparecían como por arte de magia. Cambiando al nuevo, pasaban pocos minutos antes de que empezara a producirse otra vez. Por supuesto la solución obvia hubiera sido volver al conector antiguo, sin embargo necesitaba las características UTF-8 del conector nuevo de las que el antiguo carecía.

Después de muchas vueltas por la red, dí con el hilo de discusión adecuado en el sitio de reporte de bugs de MySQL y encontré un parche no oficial que un usuario decía que había probado con éxito. Después de probarlo en los servidores a mi cargo puedo dar fe de que el parche funciona, aunque insisto en que no es oficial.

Para poner en marcha la nueva DLL sólo hace falta machacar la antigua y reiniciar el IIS.

El bug en el conector es bastante serio y por lo que pude averiguar, se viene arrastrando desde la versión 5.1.4 y a día de hoy (09/oct/2009) todavía no está solucionado, ni siquiera en la versión snapshot del driver. Espero que la versión final 5.1.6 lo solucione definitivamente.

El hilo de discusión al que hago referencia es el siguiente :

http://bugs.mysql.com/bug.php?id=36823

Quizá esta información sea útil para alguien más.

{ Piensa / Think }

"This is a waste of life. [...] the entire educational system in the modern day is nothing more than a cookie cutter processing plant that prepares humans for mostly predefined occupational roles. This element of human life has become so traditionally ingrained, that many falsely consider the nature of ‘having a job’ some form of human instinct. Even parents will ask their kids “What do you want to be when you grow up?” as though there was only one thing. This is disturbing and a violation of human potential." - The Zeitgeist Movement


"He aprendido que hay cosas que pueden ser comprendidas pero que nunca podrán ser explicadas con palabras sin desvirtuar su grandeza" - Andrés Pascual


"You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete." - Buckminster Fuller


"... I am the master of my fate. I am the captain of my soul." - William Ernest Henley