Què és mysqldump i com el faig servir?

Taula de continguts:

Què és mysqldump i com el faig servir?
Què és mysqldump i com el faig servir?
Anonim

Com una de les principals bases de dades disponibles gratuïtament, MySQL és una opció popular per a moltes aplicacions web. En estar exposada a Internet, la teva aplicació està exposada a atacs maliciosos. Si el vostre servidor està compromès, en el millor dels casos, haureu de reinstal·lar l'aplicació; en el pitjor dels casos, podeu perdre les vostres dades. A més, és possible que us trobeu en una situació en què necessiteu migrar una base de dades d'un servidor a un altre.

Per a què serveix mysqldump?

L'eina mysqldump t'ha cobert tant per a situacions de compromís del servidor com de migració. La seva funció bàsica és agafar una base de dades MySQL i abocar-la com a fitxer de text. Però no qualsevol fitxer de text; el fitxer és un conjunt de sentències SQL. Aquestes declaracions, quan s'executen, reconstrueixen la base de dades a l'estat precís en què es trobava quan es va executar l'abocament.

Utilitzeu mysqldump per crear exportacions d'una base de dades com a còpies de seguretat, o en moure la base de dades a un nou amfitrió. En qualsevol cas, el fitxer de text es tornarà a importar a un servidor de bases de dades MySQL. Executarà totes les sentències SQL del fitxer, que reconstrueix la base de dades al seu estat original. Aquesta part no utilitza l'ordre mysqldump, però tampoc no seria possible sense aquesta utilitat.

Els documents de MySQL llisten altres mètodes per fer còpies de seguretat, però aquests tenen inconvenients:

  • Copiar en calent una base de dades de MySQL Enterprise és una bona manera d'aconseguir aquestes còpies de seguretat, si no us importa l'etiqueta de preu d'Enterprise.
  • Copiar els directoris de dades de la base de dades pot ser complicat quan es mouen entre sistemes operatius, ja que les destinacions seran diferents.
  • Exportar a un fitxer de text delimitat us donarà el contingut, però haureu de recrear l'estructura.
  • Sovint podeu fer còpies de seguretat de les bases de dades des de programes GUI com MySQL Workbench. Però aquest és un procés manual; no és una cosa que podeu escriure o incloure en un treball per lots.

Instal·la l'eina mysqldump

Per a Windows, consulteu les nostres instruccions per instal·lar MySQL a Windows 7 (el procés d'instal·lació és el mateix per a Windows 10). A macOS, consulteu les nostres instruccions per instal·lar MySQL a macOS 10.7 (de nou, més antic però encara aplicable). Els usuaris de sistemes Linux basats en Ubuntu poden utilitzar l'ordre següent per instal·lar el client MySQL i les utilitats:

sudo apt install mysql-client

Extreure un abocador de MySQL

Un cop instal·lat, utilitzeu mysqldump per obtenir una còpia de seguretat completa d'una base de dades.

mysqldump -h [nom o IP de l'amfitrió de la base de dades] -u [nom de l'usuari de la base de dades] -p [nom de la base de dades] > db_backup.sql

Aquí hi ha una descripció de les banderes utilitzades en aquesta ordre:

  • - h: aquesta marca és l'amfitrió de la base de dades. Pot ser un nom d'amfitrió complet (per exemple, myhost.domain.com) o una adreça IP. Deixeu-ho en blanc si executeu l'ordre al mateix host que el servidor MySQL.
  • - u: el vostre nom d'usuari.
  • - p: si heu protegit correctament la instal·lació de MySQL, necessitareu una contrasenya per connectar-vos. Aquest senyalador sense argument us demana una contrasenya quan executeu l'ordre. De vegades és útil proporcionar la contrasenya directament com a argument d'aquesta marca, per exemple, en un script de còpia de seguretat. Però a la sol·licitud, no ho hauríeu de fer, perquè si algú accedeix al vostre ordinador, podria obtenir aquesta contrasenya a l'historial d'ordres.
  • > db_backup.sql: aquesta part indica a mysqldump que dirigeixi la seva sortida a un fitxer. Normalment, l'ordre envia tot a la consola, el que significa que veureu diverses sentències SQL a la pantalla. El símbol > canalitza la sortida al fitxer de text amb nom. Si aquest fitxer no existeix, es crea automàticament.

Quan s'hagi acabat, tindreu un fitxer. SQL. Aquest és un fitxer de text que conté sentències SQL. Podeu obrir-lo en qualsevol editor de text per inspeccionar el contingut. Aquí teniu una exportació d'una base de dades de WordPress que mostra com es combinen aquests fitxers.

Image
Image

El fitxer està dividit en seccions. La primera secció configura la taula per als comentaris de WordPress. La segona secció recrea el contingut d'aquestes taules (en aquest exemple, els registres de comentaris). Quan torneu a importar l'abocament de MySQL, l'ordre funciona a través del fitxer, executa les declaracions i torna a crear la base de dades tal com era.

Importar un fitxer d'abocament de MySQL

Abans d'importar el fitxer d'abocament, necessitareu una base de dades ja creada i el seu nom d'usuari i contrasenya vàlids. També hauríeu de tenir tots els permisos per a la base de dades. No necessiteu el permís GRANT, però és més fàcil concedir-los tots.

Més informació sobre els permisos de la base de dades abans de canviar les funcions de seguretat a la base de dades.

Per tornar a importar les vostres dades, inicieu sessió al servidor MySQL amb l'ordre mysql. Escriviu use [nom de la base de dades] a la sol·licitud i substituïu el nom de la base de dades. Introduïu source [nom del fitxer] i substituïu el nom del fitxer de bolcada que heu pres anteriorment.

Quan hagueu acabat, apareixerà una llista de missatges que indiquen que s'estan executant sentències SQL. Estigueu atents als errors, però si teniu els permisos adequats, hauríeu d'estar bé.

Image
Image

Quan s'hagi completat el procés, tindreu un duplicat de la base de dades original. Per verificar la similitud entre les bases de dades, feu un altre bolcat i compareu les dues sortides. Utilitzeu un editor de text o una eina de diferenciació dedicada per comparar els dos fitxers.

Image
Image

Hi ha dues diferències entre aquests fitxers, representades per línies vermelles a la part superior i inferior de la barra de desplaçament dreta. La primera és la línia que conté el nom de la base de dades, i això és diferent perquè els fitxers tenien un nom diferent. El segon és la marca de temps per al fitxer de bolcat. Això és diferent perquè la segona base de dades es va recrear després de la primera. En cas contrari, els fitxers són exactament els mateixos, és a dir, les bases de dades que els van generar també ho són.

FAQ

    Com es corregeix l'error mysqldump: Accés denegat quan s'utilitzen taules de bloqueig?

    Demaneu al vostre administrador de base de dades que us concedeixi el privilegi de BLOC. Si això no resol el problema, proveu d'executar la mateixa ordre mysqldump afegint la marca - -single-transaction, com ara [ $ mysqldump --single-transaction] [-u usuari] [-p DBNAME] > backup.sql

    Podeu utilitzar una clàusula "on" amb mysqldump?

    Utilitzeu una clàusula WHERE quan creeu una còpia de seguretat que només inclogui les files que compleixen la condició donada. Per exemple, per bolcar dades només de files amb la columna d'identificador superior a 100, introduïu "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Recomanat: