Archivo de la categoría: Mysql

Actualizar Mysql a 5.6 en Centos 6

Un post rápido:

Actualizar mysql en centos.

He de suponer que ya tienen centos 6.7 y un backup de las bases de datos que siempre viene bien, pueden usar este script para respaldar bases de datos.

O de respaldar todo en un solo archivo:

mysqldump -u root -p --all-databases > backup.sql

Vamos al lio descargamos el repo:

wget http://repo.mysql.com/mysql-community-release-el6-7.noarch.rpm

Instalamos el repo:

rpm -i mysql-community-release-el6-7.noarch.rpm

Actualizamos mysql

yum update mysql-server

Reiniciamos mysql:

service mysqld restart

Hacemos un upgrade:

mysql_upgrade

O bien mysql_upgrade -u root -p

Les pedirá la clave y listo.

Sirve también para actualizar el mysql de plesk, aunque en este caso hay que cambiar el usuario por admin a la hora de conectar, también lo he usado sin problemas para actualizar el mysql en vestacp y centos en general ( menos cpanel )

Mysql Monitor – Levantar MYSQL cuando se cae y enviar email si no inicia.

Dejo aquí uno de los últimos script, en este caso casi a pedido.

Función:
– Revisar si MYSQL esta online-
– En caso de que MYSQL esté caído levantarlo.
– Si esta caído y lo inicia manda las ultimas 30 lineas del log al email e informa de que esta off.
– En caso de no poder iniciar manda un email adicional para informar de que no pudo iniciar.

Versión: beta 0.1 funcional

Descargar:

wget mirror.skamasle.com/scripts/sk-mysql-monitor.sh

Editar lineas, 11, 12 y 13.

LOG='/var/lib/mysql/HOSTNAME.err'
EMAIL1='[email protected]'
EMAIL2='[email protected]'

Permisos:

chmod +x sk-mysql-monitor.sh

Cron:

*/2 * * * * /root/sk-mysql-monitor.sh

Para monitorizar otros servicios pueden ver sk-monitoring en este enlace.

Error Luego de Actualizar Mysql: install_driver(mysql) failed: Can’t load ‘/usr/lib64/perl5/auto/DBD/mysql/mysql.so

install_driver(mysql) failed: Can’t load ‘/usr/lib64/perl5/auto/DBD/mysql/mysql.so

Si tenemos una web que trabaje con perl puede que nos de ese error al actualizar mysql, es por que las versiones del cliente y del mysql no son iguales.. ( en php aveces pasa lo mismo aunque no afecta a todas las webs, vbulletin es la más delicada al respecto )

En fin, para solucionarlo en perl podemos ejecutar los siguientes comandos:

Nos logueamos a la consola de perl:

perl -MCPAN -e shell

Y forzamos la instalación de los módulos:

force install DBI

force install DBD::mysql

Tarda un poco en instalar pero el problema se resolverá cuando acabe con los dos 🙂

Más información en la documentación de perl:

http://cpansearch.perl.org/src/JWIED/DBD-mysql-2.1015/INSTALL.html

¿Me configuraron mal mysql?

He escrito en el blog principal algo que tal vez muchos se preguntan y es si les han configurado mysql mal cuando han contratado a alguien para que les configurará el servidor hace varios meses.

Con este tema podrán pensar, ¡¿va mal por que me lo han configurado mal? o ¿va mal por que nunca más le he dicho a alguien que lo revise y lo re configure para mis nuevas webs?

Pueden ver el tema completo en este enlace: ¿mysql mal configurado?

cPanel – Conectar Mysql Con Perl – ERROR: install_driver(mysql) failed: Can’t locate DBD/mysql.pm in @INC (

Si usamos alguna web hecha en perl con mysql y no podemos conectar al servidor por que nos da un error parecido a este:

install_driver(mysql) failed: Can’t locate DBD/mysql.pm in @INC (@INC contains: Plugins Modules . /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8

Puede ser por que no tengamos instalado el mod de mysql para perl, en cpanel podemos instalarlo con el instalador de perl que tiene por defecto.

Basta con ejecutar esto:

/scripts/perlinstaller  DBD::mysql

El el comando retornará algo así.

chmod 755 blib/arch/auto/DBD/mysql/mysql.so
/usr/bin/perl -MExtUtils::Command::MM -e 'cp_nonempty' -- mysql.bs blib/arch/auto/DBD/mysql/mysql.bs 644
Manifying blib/man3/DBD::README.3pm
Manifying blib/man3/Bundle::DBD::mysql.3pm
Manifying blib/man3/DBD::mysql.3pm
Manifying blib/man3/DBD::mysql::INSTALL.3pm
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/auto/DBD/mysql/mysql.so
Installing /usr/local/lib64/perl5/Bundle/DBD/mysql.pm
Installing /usr/local/lib64/perl5/DBD/README.pod
Installing /usr/local/lib64/perl5/DBD/mysql.pm
Installing /usr/local/lib64/perl5/DBD/mysql/GetInfo.pm
Installing /usr/local/lib64/perl5/DBD/mysql/INSTALL.pod
Installing /usr/local/share/man/man3/DBD::mysql::INSTALL.3pm
Installing /usr/local/share/man/man3/DBD::README.3pm
Installing /usr/local/share/man/man3/Bundle::DBD::mysql.3pm
Installing /usr/local/share/man/man3/DBD::mysql.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
OK
Successfully installed DBD-mysql-4.025
Installing /usr/local/share/perl5/x86_64-linux-thread-multi/.meta/DBD-mysql-4.025/install.json
Installing /usr/local/share/perl5/x86_64-linux-thread-multi/.meta/DBD-mysql-4.025/MYMETA.json
4 distributions installed

Y listo el error desaparece, al menos que el comando anterior muestre algún error.

Script en php para probar conexión a la base de datos postgreSQL

Para probar que la conexión este funcionando bien podemos crear un script .php cualquiera como prueba.php y ponemos este código:

<?php
$user = 'usuario';
$passwd = 'contraseña';
$db = 'nombre de la base de datos';
$port = 5432;
$host = 'localhost';
$strCnx = "host=$host port=$port dbname=$db user=$user password=$passwd";
$cnx = pg_connect($strCnx) or die ("Error de conexion. ". pg_last_error());
echo "Conexion exitosa <hr>";
?>

Acedemos y si dice que la conexión fue exitosa todo funciona y si no tendremos que revisar los logs de posrgreSQL

PostgreSQL Logs

Los logs estan en :

/var/lib/pgsql/data/pg_log/

El nombre es postgresql-DIAdeLAsemana.log

PHPMYADMIN acceder a bases de datos remotas.

Pendiente de explicación…….

Podemos acceder a varios servidores mysql desde un phpmyadmin, no es complicado el asunto pero por ahora no tengo tiempo para explicarlo, el truco esta en el archivo de configuración: config.inc.php y este código:

Si estamos en localhost y queremos definir las claves para no estar poniendolas.

$i++;
$cfg['Servers'][$i]['host']          = 'ip-host';
$cfg['Servers'][$i]['port']          = '-puerto-o-en-blanco-para-default';
$cfg['Servers'][$i]['socket']        = '-socket-o-enblanco';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = 'username';
$cfg['Servers'][$i]['password']      = 'password';

Este otro si es un server publico y queremos poner la clave siempre que se escoja un lugar:

$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'host-server-o-ip';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;

Lo repetimos tantas veces como servidores tengamos ( cambiando los datos claro ) y es todo.

En cuanto pueda ( la otra semana seguro ) daré más detalles.

Solución: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use ‘ulimit’ to allow mysqld to use more memory or you can add more swap space

Nos podemos topar con ese error en mysql y con otros errores de memoria en procesos.

El problema es como bien dice el error que el servidor no tiene memoria cosa que puede pasar, tal vez el servidor tenga 2 gigas de ram y el mysql tenga una configuración para usar más de 5 o 6gb y por eso el error, así que la solución sería agregar memoria el server, pero…

Si el server 24 gigas de ram, o 60 o 128 y no estamos usando ni ni el 40% de la ram significa que tenemos otro problema o alguna limitación.

Lo primero es ver la salida de ulimit -a

Si no tenemos todo en ulimited o valores altos por ahí viene la restricción.

El lugar para buscar la solución esta en: /etc/security/limits.d/ o /etc/security/limits.conf

Se que no es el post más agradable y detallado que han visto pero prometo mejorarlo ya que ahora no tengo tiempo para poner capturas ni nada por el estilo, pero con eso pueden solucionar el problema.

Luego pongo información más detallada del problema en cuanto acabe de trabajar.

Servidor con carga / Load Average Alto

En forobeta han hecho una pregunta interesante sobre un servidor que tenia el load alto o sea mucha carga y además han dejado una captura, aquí dejo la captura y mi respuesta, OJO que dejo aquí la respuesta y demás por que es un tema muy interesante este:

ss (2013-05-29 at 04.57.49)

En la imagen vemos que el mysql consube bastante, en muchos casos es poro algún plugin, alguna query muy larga, algo que hace muchas consultas y en otros casos es por que el disco duro es muy lento y tiene que esta haciendo muchas lecturas y escrituras y eso retrasa la base de datos, ahora bien, esto lo vemos en donde dice WA 8%, no es mucho, pero si se mantiene siempre o siempre hay IO wait y sube hará que todo nuestro server este lento, aunque como es solo una captura no sabemos eso con exactitud.

En todo caso el Wait no es siempre provocado por mysql, así que he aquí algunas deducciones y cosas que podemos hacer o al menos que yo haría.

Que hacer cunado la carga del servidor es alta

Pues digo lo mismo que datacenter1, parece que tienes problema de IO.

Aunque depende de muchas cosas.

Puedes tener un server con un disco lento o saturado y eso genera mucha carga.

Puede ser tu CPU, he tenido muchos clientes que en un dedicado van algo mal y en un VPS mucho mejor,, claro el VPS es de calidad, con CPU XEON 2.4 y 20 MB de cache cada core, y el load no sube de 1 o 2 en cambio el dedicado un i7 de los de primera generación o un 15 o un i3 o peor aún un q8xxx

Puede ser que tu CPU sea algo flojo.
Puede que tu disco este saturado y por eso el IO tan algo.
Puede que simplemente sea mala configuración.
O puede que tus webs consuman mucho y tu server sea algo flojo, además mal configurado y el disco este saturado lectura/escritura y aparte sea hardware viejo DDR2 etc.

Solución, cambiar de servidor.
Solución 2 configurar bien el servidor.
Solución para el IO wait, intentar cachear, evitar que se use mucho el disco, principalmente en el tmp de mysql y en los caches de las webs, opciones;
– Montar tmp y caches en RAM si se tiene mucha RAM, no hay problema.
– Complementar con memcached | Intentar con varnish | Apc y xcache para reducir el consumo de PHP | deshabilitar algunos logs | checar disco duro.

En resumen, entre menos usemos el disco más rápido será todo, si tenemos SSD o SSD en raid10 o sas15k también en RAID 10 tendremos mejor rendimiento, pero si no también es mejor intentar aprovechar la RAM y montar ahí algunas carpetas.
Eso es todo, pueden ver todo el tema y las demás respuestas aquí: http://forobeta.com/dedicado/181204-cpu-load-alto-ram-baja-que.html