Mysql Dump: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
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
mysqldump --no-create-info --no-autocommit --hex-blob --single-transaction --quick --flush-logs --set-gtid-purged=OFF --log-error=log.data.log --result-file=$db.data.sql --skip-lock-tables ${DB}


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}
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
==import Dump==


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

==Import del Dump==

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;