Blogs

backup y restore (volcar) una base de datos mysql

Cambiar de servidor una base de datos? Ningún problema

el primer paso, sencillo, hacer el backup:

mysqldump -a -u admin -p DATABASE > FILENAME.mysql

--default-character-set=latin1 table >

(esta última linea es opcional)

1.Drop the database

mysqladmin -u admin -p drop DATABASE

(idem, si queremos eliminarla estupendo, pero por seguridad yo la dejaría en su sitio)

2.Recreate the database

mysqladmin -u admin -p create DATABASE

-esto lo hacemos ya en el nuevo servidor

3.Import the backup data

mysql -u USER -p PASSWORD DATABASE < FILENAME.mysql

mysql -u admin -p < .mysql

 

Otras notas:

Hacer backup de varias bases de datos:

mysqldump -u username -ppassword –databases db_name1 [db_name2 ...] > dump.sql

 

TODAS LAS BASES DE DATOS:

mysqldump -u username -ppassword –all-databases > dump.sql

 

categorias: 

tutorial ssh-keygen en 2 pasos

ssh-keygen es un metodo que nos facilita el poder ejecutar determinados comandos desde nuestra máquina en una remota, sin la necesidad de tener que introducir la password en cada conexión. Es muy útil, por ejemplo, para sencillamente conectarnos con el servidor desde el ordenador con el que siempre trabajamos (siempre que sea un puesto seguro claro) o por ejemplo para ejecutar determinados scripts periódicos desde nuestro escritorio y sin necesidad de que estemos nosotros delante.

La mayoría de tutoriales que he encontrado son algo liosos, aunque en realidad una vez has comprendido la teoría es tremendamente sencillo. En dos pasos:

  • generamos una llave pública en nuestro ordenador: ssh-keygen -t rsa (le damos a enter a todo)
  • pegamos esa clave al fichero .ssh/authorized_keys de la máquina remota

Listos, ya podemos hacer ssh desde la máquina donde hemos hecho el ssh-keygen hacia la que hemos pegado dicho fichero en el authorized_keys.... quedó muy lioso?

categorias: 

Obtener el id más alto en mysql

Ahora mismo andaba buscando como saber cuál es el id más alto introducido en una base de datos MYSQL. Algunos lenguajes te permiten, incluido SQL, obtener la última consulta realizada con "autoincremente". Sin embargo buscaba algo a más "bajo nivel".

Concretamente lo estaba buscando para ruby, pero en verdad la solución en SQL es más eficaz puesto que "abstraes" la complejidad del lenguaje delegando todo el proceso al propio SQL.

Solución? Muy fácil, desde sql:

SELECT MAX(nid)  FROM table

Usando php:

 $sql = "SELECT MAX(ID) FROM tbl";
 $result = mysql_query($sql);
 $row = mysql_fetch_row($result); 
$max_id = $row[0]; 

Usando Ruby:

lastid = dbh.query("SELECT MAX(nid)  FROM node_revisions")

 

Enlaces relacionados:

http://www.codingforums.com/showthread.php?t=1552

categorias: 

Mejora el rendimiento de drupal

Actualmente tenemos varios sitios con más de 10.000 visitas diarias, gestionados mayoritariamente con Drupal. Lo problemas habituales son la aparición de slow threads, o consultas lentas en mysql, idénticos a los que aparecen en Wordpress.

Para detectar estos problemas lo más normal es usar monitores como Munin, para detectar posibles fallos al colgarse el servidor, bloquearse apache, etc, etc. Para estar atentos a estos fallos en el propio servidor podemos tener instaladas alertas que vienen configuradas con Plesk, para que nos avisen de que apache, mysql o cualquier otro servicio está bloqueado o no está respondiendo. Si no disponemos de estas alertas (podemos haber contratado una web sin más servicios que el puro alojamiento) servicios externos de uptime pueden avisarnos gratuitamente en cuanto tengamos problemas de este tipo. Os recomiendo UptimeRobot, por ejemplo, pero hay muchos ahí fuera.

En caso de que detectemos este tipo de problemas, antes de contratar más memoria ram, o incluso dar el salto a otro servidor más potente, podemos tratar de "apretar" aún más el actual servidor, aligerando la carga. Cómo? Pues fácil, reduciendo el número de consultas a la base de datos y reduciendo también el número de veces que se ejecutan sentencias de php.

La respuesta rápida es instalar boost, un módulo que mejora de manera considerable el rendimiento de Drupal. Al principio tuvimos muchos problemas con él, puesto que si no tenemos cuidad con qué activamos al entrar como usuario anónimo pueden aparecer consultas "rotas", enviando errores de compresión al navegador y no mostrando ningún contenido. Si nos pasa esto desactivando opciones como "aggresive compression", "aggressive gzip" o "Asynchronous Operation" y probablemente resolveremos el problema.

Si queremos ir un paso más allá (de hecho se puede ir muucho más allá) os recomiendo los siguientes artículos:

 

 

Algunos módulos útiles:

excluir un directorio de rsync

Rsync es una herramienta perfecta para hacer copias de seguridad, incluso de un directorio a otro dentro de la propia máquina. Con Drupal, por ejemplo, o con wordpress, te ahorra muchos quebraderos de cabeza, y te permite tener una copia de seguridad totalmente actualizada e incluso sincronizada via cron (en el caso de servidores linux o *ix en general).

La idea es tener un directorio en un disco montado fuera del sistema, por ejemplo en /mnt/discobackups, y hacer el rsync desde él:

rsync -avz /var/www/dominio.com/httpdocs/ /mnt/discobackups

Facil, verdad? Ahora bien, cuando empezamos a recibir tráfico es importante usar una herramienta o un plugin de cache, como boost en Drupal o su alternativa en Joomla, wordpress y demás. Esto deja mucha basura que no vamos a querer copiarnos a nuestra carpeta de backup, y que de hecho tendríamos que estar sincronizando casi al minuto. Pues bien, la solución es bien fácil, excluimos la carpeta donde el sistema esté escribiendo los datos de "caching". En drupal esta carpeta suele estar almacenada en /RUTA-A-DRUPAL/sites/cache o directamente en /RUTA-A-DRUPAL/cache.

Haremos la magia con la directiva --exclude, de la siguiente forma:

rsync -avz --exclude 'sites/cache' /var/www/dominio.com/httpdocs/ /mnt/discobackups

donde la ruta 'sites/cache' es relativa al directorio que estemos sincronizando, en este caso

/var/www/dominio.com/httpdocs/

Syntax highlight (coloreado de sintaxis) en drupal

Nada más sencillo, y necesario en un blog sobre programacion web que se precie, que un sistema de coloreado de sintaxis para mostrar el código en un formato amigable o user friendly.

De todas las opciones que he probado, la que más me ha gustado por su sencillez de instalación y flexibilidad de uso en Geshi filter. Para usarlo:

  1. lo descargaremos desde su web en drupal.org, 
  2. lo descomprimimos en sites/all/modules y activamos en admin/build/modules
  3. vamos a la página de configuración y "sazonamos al gusto" desde admin/settings/geshifilter
  4. por último, lo activamos para el tipo de contenido en el que queramos usarlo. Por ejemplo, en mi caso blog type: admin/content/node-type/blog
  5. y lo habilitamos en el editor de texto que usemos, como wysiwyg, tinymce o derivados. En wysiwyg vamos a admin/settings/wysiwyg

Para comenzar a usarlo a mi me gusta este módulo porque tenemos control absoluto sobre el código y tenemos que añadir a mano la región y el tipo de lenguaje que vamos a usar a continuación. Como ventaja, soporta mayor cantidad de formatos que el resto, como bash, rails, sql, robots.txt, ada, mIRC Scripting, ...

Un ejemplo, comenzamos un trozo de código, usamos <code type="LENGUAJE"></code> donde LENGUAJE es el lenguaje que vamos a querer resaltar. Por ejemplo:

 

  <code language="java">

  for (int i; i<10; ++i) {

    dothisdothat(i);

  }

  </code>

se vería de esta forma:

for (int i; i<10; ++i) { dothisdothat(i); }

 

Programador web de bajo coste

ProgramadoresWeb es una iniciativa, casi una necesidad, de poder plasmar toda la información con la que me pego a diario trabajando como Programador Web, y que habitualmente almaceno en sitios como diigo, delicious o incluso en una agenda de desarrollo propio y que me acompaña a diario en mi pequeño Mac Book Air.

Soy experto, con perdón, en desarrollo en Drupal y, en menor grado de "experto" en Ruby on Rails. Esto tiene su explicación ya que la mayoría de proyectos a los que me enfrento a diario pueden afrontarse haciendo pequeñas modificaciones, programando unas pequeñas líneas de código sobre Drupal en lugar de levantar un software completo en Rails o en cualquier otro lenguaje, por muy sencillo que sea.

Por tanto, si buscas un programador web a bajo coste estás en el sitio adecuado :-)