Backup mysqldump usando Shell Script

Publicado por CalRaiden© 11/03/2009

[ Hits: 16.765 ]

Homepage: www.calraiden.com.br

Download backup_mysql




Esses dias fiz um script em php para realizar um mysql_dump. Porém, procurando na internet, encontrei um em shell, que em questão de perfomance mostrou-se bastante superior. Fiz algumas alterações e consertei um pequeno bug, sendo que realizava backup de todo mysql.

No meu caso só interessava backup das tabelas de um banco. Retirei a compactação atráves GZIP, mas isso está exigindo muitos recursos do server e ainda aumentava o tempo de execução do script. Por essa razão tirei, caso alguém veja o script original, saberá o que estou falando.

Acrescentei um log simples no final, apenas para saber quando começou a executar e quando terminou.

  



Esconder código-fonte

#!/bin/bash
# Shell script to backup MySql database
# To backup Nysql databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug - 2005
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# ------------------------------------------------------------------

#HORA INICIO DO SCRIPT --OPCIONAL, APENAS PARA SABER QUANDO COMEÇOU A EXECUTAR E TERMINOU
START="$(date)"

#configuration
MyUSER="root"   # USERNAME
MyPASS=""       # PASSWORD
MyHOST="localhost"  # Hostname
 
# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
 
# Backup Dest directory, change this if you have someother location
DEST="/root"
 
# Main directory where backup will be stored
MBD="$DEST/bkp_mysql_austin"
 
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
 
# File to store current backup file
FILE=""
# Store list of databases
TABLES=""
 
#  BACKUP these databases
DATABASE="live2go"
 
mkdir $MBD/$NOW
 
# Only root can access it!
$CHOWN 0.0 -R $MBD
$CHMOD 0600 $MBD
 
# Get all database list first
TABLES="$($MYSQL -u $MyUSER -h $MyHOST --password=$MyPASS $DATABASE -Bse 'SHOW TABLES')"
 
for tables in $TABLES
do
  FILE="$MBD/$NOW/$tables.gz"
  # do all inone job in pipe,
  # connect to mysql using mysqldump for select mysql database
  # and pipe it out to gz file in backup dir :)
    $MYSQLDUMP --add-drop-table --extended-insert --no-create-db  -u $MyUSER -h $MyHOST --password=$MyPASS $DATABASE $tables  > $FILE
done


#HORA FIM DO SCRIPT --OPCIONAL, APENAS PARA SABER QUANDO COMEÇOU A EXECUTAR E TERMINOU
END="$(date)"
#LOG SCRIPT
touch $MBD/$NOW/$NOW
echo $START >> $MBD/$NOW/$NOW
echo $END >> $MBD/$NOW/$NOW
#FIM DO LOG DO SCRIPT
exit;

Scripts recomendados

Script de backup em um case USB

Unzip para todos

Controle de banda com tc do pacote iproute2

Script simples para ripar CDs de áudio em mp3 com uso do CDDB para nomear as faixas.

Down


  

Comentários
[1] Comentário enviado por calraiden em 11/03/2009 - 11:33h

Melhorando a descrição:
Esses dias fiz um script em php para realizar um mysql_dump, porém procurando na internet, encontrei um em shell, que em questão de performance, mostrou-se bastante superior. Fiz alguma alterações e consertei um pequeno bug, sendo que realizava backup de todo mysql, no meu caso só interessava backup das tabelas de um banco. Retirei a compactação atráves GZIP, pos isso estava exigindo muitos recursos do server e além que aumentava o tempo de execução do script. Por essa razão tirei, caso alguém veja o script original, saberá o que estou falando. Além que acrescentei um log simples no final, apenas para saber quando começou a executar e quando terminou.


No mysqldump foi usado os atributos "--add-drop-table --extended-insert --no-create-db", pois o banco que estou fazendo um dump, não pode ser dado o lock, o ideal que seja trocado para "--opt" , ficando a critério de cada um.

De qualquer forma, os crédito são do verdadeiro autor.

[2] Comentário enviado por edson_nasilva em 01/04/2009 - 10:25h

como que eu faço para fazer o restore do banco?

[3] Comentário enviado por calraiden em 07/05/2009 - 08:39h

pode fazer usando a seguinte linha de comando, caso tenha feito via mysqldump.

mysql -h HOST -u NOME_USUARIO -p NOME_BANCO < BACKUP.sql


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts