Files
mariadb/EQN.MDB/migrazione/migrateDB.sh
T
2026-02-12 18:42:24 +01:00

36 lines
1.7 KiB
Bash

#!/bin/bash
NEW_DB_IP="db03.eqn" # Hostname/IP del nuovo LXC
DB_NAME="eqn_prod"
OLD_PASS="old_db_password"
echo "1. Esportazione Database $DB_NAME..."
# Nota: ho aggiunto --add-drop-database per pulire eventuali test precedenti
mysqldump -u root -p"$OLD_PASS" --single-transaction --routines --triggers --databases $DB_NAME | ssh root@$NEW_DB_IP "mariadb"
echo "2. Generazione file utenti e permessi..."
echo "2. Generazione file utenti e permessi..."
# Estrae l'istruzione completa direttamente come la scrive MariaDB
# Questo metodo evita di ricostruire la stringa manualmente con CONCAT
mysql -u root -p"$OLD_PASS" -B -N -e "SELECT CONCAT('CREATE USER IF NOT EXISTS ', QUOTE(user), '@', QUOTE(host), ' IDENTIFIED VIA mysql_native_password USING ', QUOTE(password), ';') FROM mysql.user WHERE user NOT IN ('root','mysql.sys','mariadb.sys','debian-sys-maint','phpmyadmin');" > users_statements.sql
# Estrae i privilegi (GRANT)
mysql -u root -p"$OLD_PASS" -B -N -e "SELECT CONCAT('SHOW GRANTS FOR ', QUOTE(user), '@', QUOTE(host), ';') FROM mysql.user WHERE user NOT IN ('root','mysql.sys','mariadb.sys','debian-sys-maint','phpmyadmin');" | \
mysql -u root -p"$OLD_PASS" -B -N | \
sed 's/$/;/' | grep -vE "phpmyadmin|eqn_test|wp_eqn" > grants_statements.sql
# Unisce i file
cat users_statements.sql grants_statements.sql > final_users.sql
echo "3. Importazione utenti su $NEW_DB_IP..."
# Copia il file sul nuovo server
scp final_users.sql root@$NEW_DB_IP:/tmp/final_users.sql
# Esegue l'importazione e pulisce i privilegi
ssh root@$NEW_DB_IP "mariadb < /tmp/final_users.sql && mariadb -e 'FLUSH PRIVILEGES;'"
# Pulizia file locali (opzionale)
rm users_statements.sql grants_statements.sql final_users.sql
echo "4. Migrazione completata con successo."