Motor de base de datos MYSQL

pez grande se come al pez pequeno Motor de base de datos MYSQL

Hoy hemos recibido la noticia, triste noticia, de que Oracle ha obtenido la aprobación de la Unión Europea para la compra de Sun Microsystems por 7.000 millones de dólares, (4.930 millones de euros). Sun es el propietario del lenguaje de programación Java y  de MYSQL.

Mysql es el motor de base de datos libre por excelencia, libre en cuanto a que no se trata de un sistema propietario, uno puede descargarse el instalador determinado para su plataforma, existiendo para casi la totalidad de sistemas operativos y utilizarlo en sus proyectos sin tener que pagar ni rendir cuentas a nadie. Con una diferencia abrumadora es el sistema más utilizado en la red. Nosotros por ejemplo lo utilizamos en el 95% de los proyectos que desarrollamos para nuestros clientes.

Si bien hace ya algún tiempo Sun, propietaria del lenguajes de programación Java adquirió el sistema de base de datos MYSQL y lo potenció, es ahora el gigante Oracle uno de los líderes mundiales en cuanto a sistemas de bases de datos propietarias quien ha engullido a Sun.

El pez grande se comió al pequeño, y esta vez han saltado todas las alarmas en la comunidad internet pues la presencia de base de datos MYSQL es enorme y el estilo y saber hacer de Oracle es marcadamente comercial no muy dada a proyectos libres, motivo por el que se teme sobre la continuidad de nuestro preciado motor de base de datos libre.

Probablemente Oracle no realizará ningún movimiento brusco con MYSQL en fechas próximas, cuestión de imagen, pero a buen seguro de forma discreta ahorcará poco a poco los recursos dedicados a Mysql y el progreso de la misma se enlentecerá por si sóla hasta estancarse alejando a este sistema de las prestaciones de los sistemas mayores, sin duda esta compra ha sido una compra inteligente pues Oracle sabe que el futuro está en internet y con la compra de Mysql y el lenguaje Java entra por la puerta grande en mercados muchos más pequeños a los que acostumbra con sus sistemas de bases de datos mayores. Además consigue un arma nueva contra los otros grandes players, Microsoft con su SQL y Google quien seguro que también andaba interesado en MYSQL pues por todos es conocido su interés en comprar fama.

Acciones como la de helpmysql.org (http://helpmysql.org/en/petition) donde trataban de conseguir firmas para evitar la aprobación de la U.E. para la compra de MYSQL no han servido para frenar el poder del capital.

Hoy tan sólo nos queda esperar si bien ya existen nuevas propuestas libres como MariaDB un nuevo motor libre de bases de datos basado en MYSQL 5.1 que podría dar continuidad al proyecto MYSQL bajo un nuevo nombre y un nuevo estadio de libertad. Puedes recopilar información en:

http://askmonty.org/wiki/index.php/Main_Page

Y descargar (de momento sólo para Linux) el motor de la base de datos MariaDB en:

https://code.launchpad.net/maria

Si bien Oracle lo tiene fácil para enterrar a proyectos como MariaDB tan sólo deberá aguantar un poco más el desarrollo de MYSQL hasta que MariaDB muera, porque ¿quién va dar el salto de un sistema de base de datos a otro sin la extensísima documentación, seguridad e integridad de los datos que hoy ofrece Mysql mientres este siga coleteando?

ASí que sin más tras esta triste noticia sólo me pregunto, hasta cuando ofrecerán MYSQL gratis, es una incógnita. Snifff..

Optimizar servidor MySQL

mysql ying yang 474x480 Optimizar servidor MySQL

Antes que acabe este año, vamos allá con un nuevo capítulo de… “Optimizando que es gerundio”

Optimizando que es gerundio

Aquí os copio una configuración del fichero my.cnf en el caso de que su destino sea Linux y my.ini para servidores bajo Windows, este fichero es el responsable de la configuración del servidor MYSQL y desde él podemos ajustar diversos parámetros relacionados con el rendimiento y consumo de recursos del servidor.

La configuración que proponemos deberá adaptarse a las características de cada servidor atendiendo a la capacidad de memoria RAM y al número de procesadores de que se dispone. En el ejemplo vamos a trabajar con un servidor web dedicado, es decir el 100% de su uso está destinado a servir páginas web, no existiendo en él ningún otro servicio activo a excepción del servidor FTP para que los usuarios puedan subir páginas web.

El servidor web objeto de la optimización

El equipo cuyo archivo my.cnf vamos a modificar cuenta con las siguientes características:

  • 4Gb. de memoria RAM
  • Dos CPUs Intel Xeon 64bits de un único núcleo pero con tecnología HT HyperThreading, es decir, disponemos de un total de 4 CPUs virtuales.
  • 2x Discos duros configurados en RAID (Si bien este dato no influye directamente en nuestras modificaciones)

El ficherito my.cnf o my.ini

Para ello vamos a modificar los parámetros de la sección mysqld de este fichero de configuración dejándolo como sigue a continuación:

# The MySQL server
[mysqld]
port        = 3306
socket        = /tmp/mysql.sock
skip-locking
safe-show-database
query_cache_limit = 1M
query_cache_size=128M
#query_cache_size= 32Mb. por cada 1Gb de ram 32 x 4 =128Mb
query_cache_type=1
max_user_connections=400
max_connections=500
interactive_timeout=10
wait_timeout=20
connect_timeout=20
thread_cache_size = 128
key_buffer = 512M
#key_buffer= 128Mb. por cada 1Gb de ram 32 x 4 =512Mb.
join_buffer = 1M
max_connect_errors=20
max_allowed_packet = 16M
table_cache = 1024
record_buffer = 1M
sort_buffer_size = 4M
#sort_buffer_size= 1Mb. por cada 1Gb de ram 32 x 4 =512
read_buffer_size = 4M
#read_buffer_size= 1Mb. por cada 1Gb de ram 32 x 4 =512
read_rnd_buffer_size = 8M
#read_rnd_buffer_size2Mb. por cada 1Gb de ram 32 x 4 =512
thread_concurrency = 2
#numero de CPUs x 2 (si la CPU es de nucleo múltiple multiplica x el número de cores disponibles, ej:1 CPU XEON = 2)
myisam_sort_buffer_size = 64M

Mover grandes bases de datos MYSQL

Muchas veces habrás tenido la necesidad de mover alguna base de datos entre dos servidores, si la base de datos es pequeñita podrás atreverte con una exportación en pantalla de las tablas de origen para después pegarlas en la pestaña SQL del servidor destino, si bien esto es sólo hábil para pequeñas tablas o con paciencia ir haciendo diversos copy paste.

En tu ayuda existen soluciones como la de exportar la base de datos en un archivo .sql para posteriomente subirla al servidor final, ahora bien ese archivo por defecto debe tener un máximo de 2Mb. es entonces cuando decides exportarla en un archivo pero comprimida en formato .gzip, si bien esto da a veces algún problema entre phpMyAdmin de diferentes versiones también puede llegar a resultar insuficiente cuando tu base de datos sobrepasa los valores de subida del servidor y no tienes acceso a ellos.

Para solucionarlo te presentamos una clase escrita en PHP que te permite mover prácticamente cualquier base de datos, se llama BigDump Clase PHP BigDump (6)  y su funcionamiento es así de sencillo:

// Configuración de la base de datos

$db_server   = 'miservidordedatos.com';
$db_name     = 'mibasededatos';
$db_username = 'misuario';
$db_password = 'micontraseña';

// Otras configuraciones (Opcional)
$filename         = 'respaldo.sql.gz';

...

$db_connection_charset= 'conjunto de caracteres (latin1, utf8, etc.)';

Enlace:

http://www.ozerov.de/bigdump.php

http://infoaleph.wordpress.com/2009/02/19/bigdump-importacion-segmentada-de-grandes-bases-de-datos-mysql/

Instalar Apache 2 PHP 5 MYSQL 5 y Webmin 1.5

En este tutorial, que  bien podría haberse llamado, instalando apache que es gerundio… vamos a proceder a instalar Apache 2.2 PHP5 MySQL 5 Webmin 1.500 en un ordenador equipado con sistema operativo Ubuntu 9.10 Karmic Koala, suponemos que esta instalación será válida para casi la práctica totalidad de distribuciones de Linux.

Lo primero para disponer de un flamante servidor web en tu máquina es acceder a una terminal del sistema para ello nos dirigimos a:

Aplicaciones > Accesorios > Terminal y pulsamos sobre el icono:

icono terminal ubuntu Instalar Apache 2 PHP 5 MYSQL 5 y Webmin 1.5

Ahora nos toca instalar Apache, actualmente la versión es la 2.2., depende de cuando quieras instalar Apache podría existir ya otra versión superior por lo que mejor antes de comenzar a instalar date una vuelta por http://httpd.apache.org

web servidor web apache 300x234 Instalar Apache 2 PHP 5 MYSQL 5 y Webmin 1.5

Te hemos marcado en el lateral como puedes saber la última versión estable de Apache para que tan sólo tengas que cambiar el número de la versión, por ejemplo si es “apache2.5″ cambia en el comando install el 2.2. por el 2.5

sudo aptitude install apache2.2

Cuando tu ordenador acabe de instalar te aparecerá nuevamente la línea de comandos, ahora vamos a proceder a instalar el lenguaje de programación PHP en su versión 5. Si estás empezando en esto de la programación web te recomendamos que utilices esta versión pues versiones inferiores ya están bastante en desuso aunque existe mucho código por internet exclusivo de la versión 4. Como dato curioso os diremos que si tu máquina es Quad Core, es decir tiene multinucleo, la versión de PHP5 obtendrá un mayor rendimiento.

Para instalar PHP realizaremos otro aptitude install, toma nota:

sudo aptitude install php5

Ahora vamos a proceder a instalar el servidor de bases de datos MySQL, para ello copia y pega en tu terminal la siguiente instrucción:

sudo aptitude install mysql-server

El instalador te pedirá una clave para la administración de MySQL anótala, si no lo haces luego todo se complica, ante cualquier pregunta dile que sí o mejor dicho “Y” de yes.

Ya tenemos el servidor web funcionando, si lo quieres comprobar abre un navegador e introduce en él la dirección web:

http://localhost

Debería salirte un mensaje en inglés diciendo “It’s works!” que traducido al español viene a ser: “¡Esto funciona!”

Ahora vamos a descargar una herramienta web que permite gestionar casi todos los parámetros del servidor web, y de servicios FTP desde un navegador web, la aplicación también es gratis y se llama Webmin.

Para descargar el paquete Webmin tendrás que hacerlo desde su página web, no hace falta que cierres la terminal porque dentro de poco volveremos a ella: http://www.webmin.com/download.html

Fíjate en la siguiente imagen como nos descargamos el paquete para Unix.

version webmin 300x283 Instalar Apache 2 PHP 5 MYSQL 5 y Webmin 1.5

Una vez descargada nos aseguramos que se encuentra en la carpeta de Descargas, si no lo estuviera lo movemos en un please desde cualquier ventana con un arrastrar y soltar, volvemos ahora a la terminal de comandos y procedemos a entrar en el directorio donde está descargado para posteriormente descomprimir el fichero e instalarlo.

cd Descargas/

Y ahora lo descomprimimos con un:

sudo tar ­zxvf webmin-­1.500.tar.gz

Al descomprimirlo nos abrá creado una nueva subcarpeta, accedemos a ella con otro cd “cambiar directorio”

cd webmin-1.500/

Y ejecutamos el script de instalación:

sudo sh ./setup.sh

Ahora nos comenzará a realizar una serie de preguntas sobre la configuración que deseamos, en principio y a menos que quieras personalizar muchas cosas tan sólo deberás ir presionando la tecla Enter para que este se configure por defecto, recuerda introducir una clave de usuario que no se te olvide con facilidad

Para acceder al webmin introduce en tu navegador web: http://localhost:10000/

Te pedirá nombre de usuario “admin” y la clave que hayas escogido en el proceso de instalación.

administrar apache con webmin 300x143 Instalar Apache 2 PHP 5 MYSQL 5 y Webmin 1.5

Los ficheros de las webs que realices deberán  estar en la carpeta: /var/www

Ahora ya te dejamos que seas tú el que configures tu nuevo servidor web y el que comiences a desarrollar.

Search and replace en MySQL

Posted December 8th, 2009 in Aprender, Copy Paste, Servidores, Trozos de código, bases de datos, mysql by dedavid

Bueno.. .esto no es un mega post, pero a veces los breve vale más que lo extenso.

Consulta para realizar un buscar y reemplazar en bases de datos MySQL (comprobado en MySQL 5):

UPDATE orders_lines SET prod_title = replace(prod_title, ‘Mantimiento ‘, ‘Mantenimiento ‘)

Idóneo para aquellos casos en los que por ejemplo debemos corregir una palabra mal escrita, como en el caso expresado en la consulta anterior donde un típico error de tipeado hace que figure, “Mantimiento” en lugar de “Mantenimiento”.

Hay que prestar especial en cuidado en conocer la tabla o el tipo de registro y saber si esta es case sensitive (sensible a mayúsculas) o case insensitive pues si se tratase de una tabla case insensitive también actualizaría “…el mantimiento de su página web…” en minúsculas por “…el Mantenimiento de su página web”, es decir colocando una M mayúscula donde no debe ir y generando una nueva falta de ortografía.

case insensitive 300x111 Search and replace en MySQL

Por norma general si el tipo de collation o cotejamiento, menudo palabro, de la tabla acaba en “_ci” esto significaría que la tabla es insensible a mayúsculas y/o minúsculas, es decir que una consulta te mostrará ambas.

Algunos de los tipos de collation más comunes son:

  • latin1_spanish_ci
  • latin1_spanish
  • utf8_unicode_ci
  • utf9_unicode

Página 1 de 3123