Mysql Dump: differenze tra le versioni
Nessun oggetto della modifica |
|||
| (11 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 1: | Riga 1: | ||
==Creazione Dump== |
==Creazione Dump== |
||
Dump dei dati di un singolo database |
Dump dei dati di un singolo database |
||
| ⚫ | |||
| ⚫ | |||
Dump dei metadati di un singolo database: |
|||
mysqldump --no-data --no-autocommit --hex-blob --single-transaction --quick --flush-logs --set-gtid-purged=OFF --no-tablespaces --triggers --routines --events --log-error=log.meta.log --result-file=db.matdata.sql --skip-lock-tables ${DB} |
|||
Se si aggiunge <code>--no-create-info</code> non vengono generate le DDL delle tabelle |
|||
| ⚫ | |||
Se si aggiunge <code>--no-data</code> vengono generate solo le DDL senza le insert dei dati |
|||
<code>--disable-keys</code> disabilita indici prima di importare e abilita indici dopo import, utile per velocizzare |
|||
<code>--add-locks</code> esegue lock table prima di importare, velocizza |
|||
<code>--no-autocommit</code> non usa autocommit ma start transaction e commit esplicito a fine di ogni tabella |
|||
<code>--extended-insert</code> insert di più righe nello stesso statement, velocizza |
|||
<code>--users</code> esporta definizioni utenti e privilegi |
|||
<code>--single-transaction</code> consistenza di lettura del db tramite transazione, evita lock sul database sorgente |
|||
<code>--default-character-set</code> imposta il characterset del dump |
|||
<code>--no-set-names</code> e <code>--skip-set-charset</code> evitano che le create tables portino il charset del database sorgente, utile se si vuole migrare charset |
|||
| ⚫ | |||
mysql --database=${DB} --batch < output.sql > import.log |
|||
==Character set e collation== |
==Character set e collation== |
||
select schema_name,default_collation_name,default_character_set_name from information_schema.schemata; |
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; |
|||
Versione attuale delle 14:53, 9 giu 2026
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;