Còpies de seguretat de mysql

Últimament tinc abandonat aquest espai ja que dedique molta energia a una base de dades que estic fent per al centre. Està quedant genial però ara el que hem preocupa és la còpia de seguretat de les dades sobre mysql  en Debian.

Al final he trobat la solució amb aquest script

#!/bin/sh 
mysqldump -uusuari -pcontrasenya --opt nombasedades > /home/usuari/dropbox/nombackup.sql

He guardat aquest script amb el nom backup.sh (val qualsevol altre) en el meu directori home.

Què és el que fa?

  • la primera línia #!/bin/sh simplement indica al bash que és un script executable i on va a buscar el bash que utilitzarà per executar aquest script en aquest cas /bin/sh .
  • La segona línia és la que fa tota la feina, mysqldump és una ordre que “bolca” o còpia totes les dades que estiguen dins de la base de dades que li indiquem en la línia d’ordres, les opcions són les següents:
  1. U és per indicar l’usuari
  2. P és per indicar la contrasenya aquí has de col·locar la contrasenya de l’usuari que estàs utilitzant per connectar a la base de dades.
  3. Opt ací indiquem quina és la base de dades que volem que copiar
  4. > redirecciona l’eixida de l’ordre cap a un arxiu xxxxxx.sql Jo he triat el meu directori de dropbox ja que aquest em fa una copia de seguretat de tots els arxius durant un mes.

Ara el que necessite és automatitzar el l’execució del programeta, per això utilitze CRON  una eina que té Linux per a executar programes o scripts en forma repetitiva. Per modificar la taula de cron executem la següent comanda al nostre shell:

crontab -e

S’obrirà el crontab al nostre editor de text per defecte ací afegim la següent línia:
0 18 *** /home/usuari/backup.sh

Guardem el nostre arxiu i ja està llest per executar diàriament. L’arxiu de crontab té aquesta estructura d’esquerra a dreta:

  • Minuts (rang de 0-59)
  • Hores (0-23)
  • Dia del mes (1-31)
  • Mes (1-12)
  • Dia de la setmana (0-6 sent 0 = diumenge)
  • Path complet a l’script

El nostre script s’he executarà cada dia a la 18:00 hores. i arreplegarà tots els canvis del dia.

Salutacions

Fonts:

http://ask.edutictac.es/?qa=33/com-copia-base-dades-pmb

http://wikimanuals.edutictac.es/index.php?title=Backup_utilitzant_crontab

4 thoughts on “Còpies de seguretat de mysql

  1. Hola Samuel.

    Moltes gràcies per aquest post.

    Jo també estic utilitzant una base de dades per tal d’estructurar tot el que vaig fent a l’aula. Utilitze WordPress amb un Apache al meu portàtil i necessitava refrescar la memòria per fer còpies de seguretat, ara que ho has posat al bloc vaig a fer-ho aquesta mateixa nit.

    Soles un apunt.

    Ja seria genial que fera una còpia amb i que es quedara dins del nom la data, així podriem tenir diverses versions segons el dia. Ho he vist programat i sé que no és difícil de fer. En qualsevol cas vaig a seguir el teu exemple i em crearé un cron per tal d’automatitzar la feina, si arribe més lluny t’ho comentaré.

  2. De res company, es pot fer i no és molt complicat, però com que faig la còpia directament en dropbox sé que puc recuperar còpies de fins a un mes d’antiguitat… aquesta opció no és molt segura, per això volia preguntar-te… és podria xifrar la base de dades des de consola i automatitzar amb el cron la tasca? Gràcies

    • Ok.

      Basant-me en el que propose he provat que per fer la còpia automatitzada de la base de dades i que et pose la data per tal de tenir diverses versions he escrit això:

      ################
      #!/bin/sh
      USER=usuari
      DATA=`date +%Y-%m-%d`
      echo “Fent còpia backup de la base de dades”
      mysqldump -uusuari -pcontrasenya –opt base_de_dades > /home/lliurex/Backup/basedades-$DATA.sql
      echo “Acabat”

      ###############

      Personalment utilitze truecrypt en la modalitat de crear un contenidor, muntar-lo i després desmuntar-lo. En la pràctica és com una xicoteta partició que desmuntada està xifrada, però muntada es desxifra posant una contrasenya.

      Crec que no és solució per al problema que planteges.

      Potser aquesta solució alternativa et servisca:

      1. Amb el teu procediment tens una base de dades sense comprimir, potser seria bo que es comprimira abans per tal de xifrar-la.

      Mira això per automatitzar la compressió amb un script.

      http://www.taringa.net/posts/linux/9174827/Hacer-back-up-y-enviar-por-FTP-con-scripts-_GNU_Linux_.html

      2. Una vegada comprimida pot xifrar-la amb mcrypt, ja que aquesta utilitat sembla que pot xifrar fitxers, però, clar cal posar-li una contrasenya. Tens la documentació ací:

      http://robleshermoso.wordpress.com/2010/03/23/tip-encripta-ficheros-facilmente-con-mcrypt/

      Per automatitzar això cal escriure un script en bash (script per a cònsola).

      Aquest procediment no l’he provat.

      Seria bo que provares abans en local sense Dropbox per tal de no anar carregant-te coses crítiques.

      Bé ara bé l’alternativa de pagamament que sembla molt més fàcil que tot això:

      Boxcryptor és la resposta.

      https://www.boxcryptor.com/?lang=es#

      Sembla que aquest programa, disponible per a GNU/Linux, però de pagament és fàcil de fer servir. No l’he fet servir però sembla que funciona molt bé pel que tinc entés. Ara bé no sé si es pot fer servir des de la cònsola.

      Bé, tot això… és feina, molta feina. He intentat proposar-te alternatives. Si no et valen, al menys anem acostant-nos cap a una manera correcta de fer les coses.

      Gràcies al teu post he començat a fer còpies de seguretat de dades crítiques que porte al portàtil, i a passar-les a un altre dispositiu.

      Anem acostant-nos cap a les bones pràctiques.

      Salutacions

Moltes gràcies pel teu comentari.