Come Esportare/Importare Correttamente il Database WordPress (MySQL) Tramite Riga di Comando?
Normalmente, un database MySQL può essere esportato e importato utilizzando questi semplici comandi SSH:
Esportazione:
mysqldump -u USERNAME -p DATABASE_NAME > filename.sql
Importazione:
mysql -u USERNAME -p DATABASE_NAME < filename.sql
Ma quando si tratta di WordPress non è così semplice. Da quello che vedo, è necessario specificare parametri aggiuntivi, come ad esempio --add-drop-table
.
Il WordPress Codex fornisce alcune informazioni, ma sembrano disordinate e non abbastanza chiare.
Sarebbe fantastico se qualcuno che utilizza la riga di comando potesse condividere i comandi corretti per esportare e importare un database WordPress, con qualche spiegazione (dei nuovi parametri utilizzati).
Inoltre, ci sono motivi per cui non sarebbe consigliabile utilizzare la riga di comando quando si ha a che fare con il database, e invece utilizzare un'interfaccia grafica come phpMyAdmin?

È altrettanto semplice per WordPress. Utilizzo il seguente comando per eseguire il backup dei miei siti WP:
mysqldump -u USER -pPASSWORD --quick --extended-insert DBNAME > backup.sql
La documentazione di mysqldump fornisce i dettagli su tutti i parametri.
--extended-insert
è più veloce quando si aggiorna un database da un file di dump e rende il file di dump più piccolo.
--quick
rende più veloce la creazione del dump.
Non è strettamente necessario utilizzare nessuno di questi parametri, ma rendono le operazioni un po' più veloci e scrivere un insert per ogni riga mi fa sentire più tranquillo - la sintassi originale del tuo dump andrebbe comunque bene.
Non dimenticare però che ci sono voci specifiche del dominio nel database, quindi se stai utilizzando questo metodo per backup/ripristino va bene, ma se vuoi spostarti da uno.com a due.com dovrai modificare le voci in wp_options
dopo aver ripristinato il tuo dump.

Ma riguardo a --add-drop-table
e cose simili menzionate nella pagina del codex? http://codex.wordpress.org/Backing_Up_Your_Database#Using_Straight_MySQL_Commands - sei sicuro che non siano necessarie?

Non è necessario, con le opzioni che uso i file di dump hanno tutti questo prima della creazione della tabella e degli insert successivi:
DROP TABLE IF EXISTS <wp_tablename>
;
quindi le tabelle vengono sempre eliminate e poi ricreate, quindi i dati vengono inseriti al loro interno

Concordo con Steve, i tuoi comandi originali mysqldump -u USERNAME -p PASSWORD DATABASE_NAME > filename.sql
e
mysql -u USERNAME -p PASSWORD DATABASE_NAME < filename.sql
funzionerebbero perfettamente. L'unica cosa da tenere veramente presente è evitare di eseguire sostituzioni di stringhe tra l'esportazione e l'importazione se si sta migrando tra domini diversi.

Come aggiornamento riguardo alle opzioni: questo è tratto dalla documentazione di mysqldump:
Alcune opzioni di mysqldump sono abbreviazioni per gruppi di altre opzioni:
L'uso di --opt è equivalente a specificare --add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, e --set-charset. Tutte le opzioni rappresentate da --opt sono attive di default perché --opt è attivo di default.

Avendo investito tempo per imparare le basi della riga di comando, ora uso phpMyAdmin sempre meno.
Tuttavia, lo trovo più comodo quando ho bisogno di navigare o modificare una voce (come modificare le voci di wp_options
, come menzionato da Steve sopra).
Inoltre, prima utilizzavo l'interfaccia grafica quando volevo escludere una tabella particolarmente grande (come i log di un plugin) che non necessitava di backup. Ma ho scoperto che puoi semplicemente aggiungere
--ignore-table=my_db_name.my_table_name my_db_name

Per copiare un sito in una nuova posizione.
Utilizza --add-drop-table durante l'esportazione, se stai importando in un database vuoto. Ometti --add-drop-table durante l'esportazione, se stai importando per unire il database.
Ricorda di aggiornare wp_options dopo ogni importazione, poiché il percorso è diverso. Inoltre, aggiorna il file .htaccess con il nuovo percorso.
