IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Còpies de seguretat de Mysql

De SergiTurWiki
Share/Save/Bookmark
Dreceres ràpides: navegació, cerca

Contingut

mysqldump

La comanda mysqldump, volcà els continguts de tota una base de dades per la sortida estàndard. Els continguts són volcats en sentències mysql que més tard es poden executar per restaurar la base de dades. Exemple:

$ sudo mysqldump -p base_de_dades

Les dades de la base de dades apareixen per la sortida estàndard. Si volem guardar les dades en un fitxer podem utilitzar les redireccions Unix, per exemple, per fer una còpia de seguretat de la mediawiki executaríem:

$ sudo mysqldump -p base_de_dades > wikidb.sql 

Per restaurar la base de dades executaríem:

$ sudo mysql -p < wikidb.sql

Recursos;

Crear un usuari per a còpies de seguretat amb mysqldump

Els únics permisos que necessita l'usuari són SELECT i LOCK TABLES.

$ mysql -u root -p
mysql > GRANT SELECT, LOCK TABLES ON *.* TO backups@localhost IDENTIFIED BY "la_vostra_paraula_de_pas";
mysql >  FLUSH PRIVILEGES;
mysql> exit

Recursos:

Exemple

$ sudo mysqldump --add-drop-table -u root -p wikidb > /home/sergi/backup/mysql/wikidb-03-02-2009.sql

Automatitzar la copia de seguretat

Podem utilitzar cron.

$ sudo joe /etc/cron.d/mysql_backup

I afegim la línia:

0 4 * * 0 root mysqldump --user=wikiuser --password=PASSWORD wikidb > /home/sergi/backup/mysql/wikidb_sergi.sql

I tindrem un còpia de seguretat cada nit a les 4.

Ara recarreguem cron:

$ sudo /etc/init.d/cron reload

Character set o Character Encoding

automysqlbackup

Des de la versió Jaunty d'Ubuntu, podem instal·lar:

$ sudo apt-get install automysqlbackup

I sens realitzen per defecte còpies diàries, setmanals i mensuals de les nostres bases de dades MySQL. Les còpies es realitzen amb cron i les podeu trobar a la carpeta:

$ ls -la /var/lib/automysqlbackup/
total 20
drwxr-xr-x  5 root root 4096 2009-09-02 06:26 .
drwxr-xr-x 37 root root 4096 2009-09-01 21:15 ..
drwxr-xr-x  8 root root 4096 2009-09-01 21:25 daily
drwxr-xr-x  9 root root 4096 2009-09-01 21:24 monthly
drwxr-xr-x  8 root root 4096 2009-09-01 21:25 weekly

Els fitxers instal·lats són:

$ dpkg -L automysqlbackup
/.
/var
/var/lib
/var/lib/automysqlbackup
/etc
/etc/automysqlbackup
/etc/default
/etc/default/automysqlbackup
/etc/cron.daily
/etc/cron.daily/automysqlbackup
/usr
/usr/sbin
/usr/sbin/automysqlbackup
/usr/share
/usr/share/doc
/usr/share/doc/automysqlbackup
/usr/share/doc/automysqlbackup/README.Debian
/usr/share/doc/automysqlbackup/copyright
/usr/share/doc/automysqlbackup/changelog.Debian.gz
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/automysqlbackup.8.gz

El fitxer de configuració és:

 /etc/default/automysqlbackup

Per defecte s'utilitza l'usuari i la paraula de pas de l'usuari debian-sys-maint (creat durant la instal·lació del servidor mysql des de paquets de Debian/Ubuntu).

El que es fa és executar de forma diària l'script:

/usr/sbin/automysqlbackup

Paràmetres de configuració

Segons el manual:

$ man automysqlbackup

Els paràmetres bàsics són:

USERNAME=dbuser
             Username to access the MySQL server e.g. dbuser

      PASSWORD="password"
             Username to access the MySQL server e.g. password

      DBHOST=localhost
             Host name (or IP address) of MySQL server e.g localhost

      DBNAMES="DB1 DB2 DB3"
             List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"

      BACKUPDIR="/backups"
             Backup directory location e.g /backups

      MAILCONTENT="stdout"
             Mail setup What would you like to be mailed to you?
              - log   : send only log file
              - files : send log file and sql files as attachments (see docs)
              - stdout : will simply output the log to the screen if run manually.
              - quiet : Only send logs if an error occurs to the MAILADDR.

      MAXATTSIZE="4000"
             Set the maximum allowed email size in k. (4000 = approx 5MB email [see docs])

      MAILADDR="user@domain.com"
             Email Address to send mail to? (user@domain.com)

Es poden modificar a:

/etc/default/automysqlbackup

Els paràmetres avançats són:

ADVANCED OPTIONS
      MDBNAMES="mysql $DBNAMES"
             List of DBBNAMES for Monthly Backups.

      DBEXCLUDE=""
             List of DBNAMES to EXCLUDE if DBNAMES are set to all (must be in " quotes)

      CREATE_DATABASE=yes
             Include CREATE DATABASE in backup?

      SEPDIR=yes
             Separate backup directory and file for each DB? (yes or no)

      DOWEEKLY=6
             Which day do you want weekly backups at? (1 to 7 where 1 is Monday)

      COMP=gzip
             Choose Compression type. (gzip or bzip2)

      COMMCOMP=no
             Compress communications between backup server and MySQL server?

      LATEST=no
             Additionally keep a copy of the most recent backup in a seperate directory.

      MAX_ALLOWED_PACKET=
             The maximum size of the buffer for client/server communication. e.g. 16MB (maximum i

      SOCKET=
             For connections to localhost. Sometimes the Unix socket file must be specified.

      #PREBACKUP="/etc/automysqlbackup/mysql-backup-pre"
             Command to run before backups (uncomment to use)

      #POSTBACKUP="/etc/automysqlbackup/mysql-backup-post"
             Command run after backups (uncomment to use)

PHPMyAdmin =

TODO

Automatitzar una replica de base de dades entre dos servidors mysql

El primer que cal fer és seguir les passes de l'apartat anterior per obtenir una còpia de la base de dades. Suposem que la còpia de la base de dades la posem a la carpeta ~/backups/mysql:

$ cd ~/backup/mysql
$ sudo mysql -p wikidb

Utilitzarem SSH y rsync per transmetre la informació entre les dues màquines. El primer que hem de fer és seguir les passes de la secció Generació de claus ssh-keygen de l'article Gestió remota. SSH, Rsync... per generar unes claus i poder entrar a la màquina remota sense necessitat de contrasenyes. Suposem que l'usuari que utilitzem ś'anomena sergi:

$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub | ssh sergi@maquina_remota " cat - >> ~/.ssh/authorized_keys"

Ara amb la comanda:

$ rsync -e ssh -cavz --progress /home/sergi/backup/mysql/wikidb_sergi.sql maquina_remota:~/backup/mysql

Ja som capaços de copiar el fitxer de backup a la màquina remota. Ara es tracta d'utilitzar cron per automatitzar aquesta tasca.

$ sudo joe /etc/cron.d/replica_wiki

I afegim la següent línia:

0 5 * * * sergi rsync -e ssh -cavz --progress /home/sergi/backup/mysql/wikidb_sergi.sql sergi@www.iescopernic.com:/home/sergi/backup/mysql > /home/sergi/backup/mysql/wikidb_replica.log

Per fer una còpia cada dia a les 5 del matí. Ara recarreguem cron:

$ sudo /etc/init.d/cron reload

Ara anem a veure com restaurar la còpia a la màquina remota:

Ara a la màquina remota executem una restauració de la còpia a les 6:00h:

$ sudo joe /etc/cron.d/mysql_replica

I afegim la línia:

0 6 * * 0 root mysql --user=wikiuser --password=PASSWORD wikidb_sergi < /home/sergi/backup/mysql/wikidb_sergi.sql

Per seguretat podem canviar els permisos del fitxer:

$ sudo chmod 600 /etc/cron.d/mysql_replica

I tornem a iniciar cron:

$ sudo /etc/init.d/cron reload
OpenFPnet
IES Nicolau Copèrnic