Migrare un sito sviluppato con Drupal in linea di massima è molto semplice. Basta copiare i file, migrare il database, modificare il file di configurazione settings.php et voilà. Pero se c'è più di un sito o altri domini o sottodomini, tutti dentro lo stessa database migrare solo uno di questi può essere un pò più complicato.
In questo caso, avendo tutte le tabelle di ogni sito dentro lo stessa database si dovrà prendere solo quelle con il prefisso impostato oppure tutte quelle senza nessun prefisso (indicato nel parametro prefix dentro il file settings.php).
Se il prefisso fosse sito1_ esseguire il seguente comando per avere l'elenco di tutte le tabelle in un file.
mysql -N information_schema -e "select table_name from tables where table_schema = 'databasename' and table_name like 'sito1_%'" > tables.txt
Poi, esseguire mysqldump indicando il file creato prima.
mysqldump dbname `cat tables.txt` > dump_file.sql
Siccome le tabelle di Drupal sono tante (dipendono dal numero di moduli installati in ogni sito) è più semplice fare un backup dell'intero database e poi cancellare tutte le tabelle presenti con il prefisso
mysqldump database_originale > database_originale_backup.sql
mysql -e "CREATE DATABASE nuova_database"
mysql nuova_database < database_originale_backup.sql
Cancellare le tabelle con il prefisso crm_
SET SESSION group_concat_max_len = 1000000;
SET @schema = 'nuova_database';
SET @pattern = 'crm_%';
SET @droplike = null;
SELECT
CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';') INTO @droplike
FROM
information_schema.tables
WHERE
@schema = database() AND
table_name LIKE @pattern AND
TABLE_SCHEMA = @schema;
PREPARE stmt FROM @droplike;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;