Recientemente he realizado una migración de dominios entre servidores. Gracias a que el servidor de destino lleva instalado un Plesk 8.1 la migración ha sido posible de manera realmente sencilla y rápida. A decir verdad sólamente he encontrado una pega en el proceso, relativa a los campos auto_increment de las bases de datos MySQL.
Os pongo en antecedentes. El software Plesk implementa una herramienta muy útil, bajo la pestaña de servidor, llamada “Administrador de Migraciones”. Al emplearla, solamente hemos de indicar el servidor origen y los datos de acceso como root.
Automáticamente detectará el software que gestiona dicho servidor, para nuestro caso un Ensim 4.1, y nos mostrará todos los dominios alojados para que seleccionemos el que queremos migrar.
Con todo esto y dependiendo de la cantidad de datos que compongan el dominio, obtendremos una migración completa de web, usuarios, bases de datos y cuentas de correo, siendo el proceso de traspaso de estos últimos lo mejor de todo. Respeta los usuarios y passwords de acceso a las cuentas, al menos en un entorno linux, con lo que el cambio será totalmente transparente para el usuario final.
La única pega a todo lo anterior, es el defecto que presenta el sistema de migración en lo relativo al traspaso de las bases de datos MySQL. Lo hará todo, estructura y datos, pero las columnas que se hayan definido de tipo “auto_increment”, no serán restauradas con esta propiedad, con lo que probablemente, al utilizarlas, la web empezará a dar errores de campos duplicados, o similares.
Para solventar este defecto, y mientras la empresa SwSoft, desarrolladora del software Plesk no lo arregle, tenemos dos opciones.
La primera y más lenta, consiste en restaurar manualmente estos campos. Ello implica revisar todas las tablas y anotar los campos auto_increment para luego, repasar las tablas migradas y ejecutar los correspondientes cambios.
Esta opción, pese a ser la más directa, conlleva un considerable esfuerzo directamente proporcional al número total de tablas de la base de datos.
Para evitar la primera opción, y a falta de un sistema automático, he desarrollado un script php que revisa una base de datos mysql, analiza los campos de todas las tablas, y finalmente genera por pantalla las instrucciones necesarias para replicar dichos campos de nuevo en las tablas migradas.
$link = mysql_connect('<servidor>', ‘<usuario>’, ‘<password>’);
if (!$link)
{
die('Could not connect: ‘ . mysql_error());
}
mysql_select_db('-basededatos-', $link) or die(’Could not select database: ‘ . mysql_error() );
$tables = mysql_query( 'SHOW TABLES' );
if (!$tables)
{
echo 'Could not run query: ‘ . mysql_error();
exit;
}
if (mysql_num_rows($tables) <= 0)
{
die;
}
while ($table = mysql_fetch_array( $tables ) )
{
$columns = mysql_query( 'SHOW COLUMNS FROM `' . $table[ 0 ] . ‘` where Extra = "auto_increment"’ );
if (!$columns)
{
echo 'Could not run query: ‘ . mysql_error();
die;
}
if (mysql_num_rows( $columns ) > 0)
{
while ( $col = mysql_fetch_assoc( $columns ) )
{
echo sprintf( "ALTER TABLE `%s` CHANGE `%s` `%s` %s auto_increment;\n",
$table[ 0 ],
$col[ 'Field' ],
$col[ 'Field' ],
$col[ 'Type' ]
);
}
}
}
mysql_close($link);
- Download this code: plesk_auto.php
Gracias a este código podremos completar una migración sin excesivas complicaciones y de manera rápida y efectiva.
0 Respuestas a “Columnas MySQL auto_increment y migraciones sobre Plesk 8.1”
Añade un Comentario