Es el proceso tabla a tabla, por el cual creas una base tal y como debería quedar la actualizada y vas migrando los datos desde la vieja a la nueva.
Luego o haces un backup compelto, y "pisas" la base vieja con ese backup, o bien rediriges las conexiones a la base nueva.
Si sólo hay que modificar indices y alguna que otra clave, por allí te conviene hacer un proceso que verifique una a una las claves y los índices para ver si hay que crearlos o no.
Esto, por ejemplo, verifica todas las tablas que posean una definición de FOREIGNK KEY, lo que permite hacer un proceso de eliminación automático, que luego se prosigue creando las FK nuevas:
Código MySQL:
Ver originalFROM information_schema.KEY_COLUMN_USAGE K
CONSTRAINT_SCHEMA
= 'fulmar' AND CONSTRAINT_NAME !='PRIMARY'
Yo uso esto para borrar todas las FK y volverlas a crear, esta vez con ayuda de un script que contiene todas las creaciones, las vuelvo a crear.
Una consulta parecida me permite saber si hay ciertos índices creados:
Desde una aplicación, esto me devuelve un registro por cada campo de cada clave. SI la cantidad que tengo que encontrar y los nombres son iguales, entonces no lo genero. Si el índice existe, pero no tiene exactamente la estructura, lo borro y lo creo comno debe ser.
Es una tarea engorrosa pero es lo que tuve que diseñar, porque la aplicación fue enviada al mercado sin haber sido terminada y con la base en desarrollo.
¿Te sirven estas ideas?