Mysql Dump
Creazione Dump
Dump dei dati di un singolo database
mysqldump --no-autocommit --hex-blob --single-transaction --quick --flush-logs --set-gtid-purged=OFF --log-error=output.log --result-file=output.sql --skip-lock-tables ${DB}
Se si aggiunge --no-create-info non vengono generate le DDL delle tabelle
Se si aggiunge --no-data vengono generate solo le DDL senza le insert dei dati
--disable-keys disabilita indici prima di importare e abilita indici dopo import, utile per velocizzare
--add-locks esegue lock table prima di importare, velocizza
--no-autocommit non usa autocommit ma start transaction e commit esplicito a fine di ogni tabella
--extended-insert insert di più righe nello stesso statement, velocizza
--users esporta definizioni utenti e privilegi
--single-transaction consistenza di lettura del db tramite transazione, evita lock sul database sorgente
--default-character-set imposta il characterset del dump
--no-set-names e --skip-set-charset evitano che le create tables portino il charset del database sorgente, utile se si vuole migrare charset
Import del Dump
mysql --database=${DB} --batch < output.sql > import.log
Character set e collation
select schema_name,default_collation_name,default_character_set_name from information_schema.schemata;
Convertire le tabelle al nuovo codeset:
select concat('alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ;')
from information_schema.TABLES where TABLE_SCHEMA='mio_schema' and table_collation='latin1_swedish_ci';
Grandezza degli schemi
SELECT table_schema AS 'Schema', ROUND(SUM(data_length + index_length) / (1024 * 1024), 2) AS 'Dimensione (MB)' FROM information_schema.TABLES GROUP BY table_schema ORDER BY SUM(data_length + index_length) DESC;