/ Published in: Bash
Use it with MyISAM databases.
Guess this works with InnoDB, didn't tried tough
New version 2011-02-24 11:12
Guess this works with InnoDB, didn't tried tough
New version 2011-02-24 11:12
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#!/bin/bash # - To restore the database you can use the command bellow which whill return the file # whithout send any output to the screen # mysql -h 127.0.0.1 -A -u root -e "USE db_name; \. databasefile.sql" PROGNAME=${0##*/} PROGVERSION=0.9.1 usage() { cat << EO Usage: $PROGNAME --database DBNAME --host HOSTIP_OR_HOSTNAME --user USERNAME [options] $PROGNAME --version $PROGNAME --help Make a non consistent backup Options: EO cat <<EO | column -s\& -t -h|--help & show this output -V|-v|--version & show version information -B|--database & indicates the database name -h|--host & indicates the database server hostname -u|--user & Optional param, passes the login user name for the database server -p|--pwd & Optional param, sets the password for the user --tables & Optional param, if you whishes to dump only some tables use this parameter and passes the & tables names whithin a ' (simple coma) string like "--tables 'tab1 tab2'" or "--tables 'tab1'" EO } ARGS=$(getopt -s bash --options vVB:h:u:p: --longoptions help,version,database:,host:,user:,pwd:,tables: -q -- "$@" ) eval set -- "$ARGS" while true; do case $1 in --help) usage exit 0 ;; -v|-V|--version) echo "easydump version: $PROGVERSION" exit ;; -B|--database) shift DATABASE="$1" ;; -h|--host) shift HOST="$1" ;; -u|--user) shift USERNAME="$1" ;; -p|--pwd) shift PASSWORD="$1" ;; --tables) shift TABLES="--tables $1" ;; --) shift break ;; *) shift break ;; esac shift done if [ -z "$DATABASE" ] then usage echo " IMPORTANTE: \"database\" parameter missing" echo "" exit fi if [ -z "$HOST" ] then usage echo " IMPORTANTE: \"host\" parameter missing" echo "" exit fi if [ -z "$USERNAME" ] then usage echo " IMPORTANTE: \"username\" parameter missing" echo "" exit fi /usr/bin/mysqldump \ --databases $DATABASE \ --host=$HOST \ --user=$USERNAME \ --password=$PASSWORD \ --log-error=/tmp/mysqldump\-erros.list `# registra os erros do aplicativo em um log para avaliação posterior` \ --force `# continua o backup mesmo que encontre erros no meio do caminho` \ --no-create-db `# não criar banco de dados` \ --skip-lock-tables `# nao travar a tabela (gera um backup não consistente)` \ --add-drop-table `# adiciona um comando drop table no inicio do script resultante` \ --skip-comments `#evita adicinar informações extras como nome do servidor, versão do mysqldump e etc` \ --create-options `# adiciona todas as opções do create table` \ --disable-keys `# desliga chaves no retorno do backup deixando o restore mais rapido` \ --quick `#com isto o mysql não gera um buffer e depois faça o stream deste, ele faz um stream de linha a linha` \ --extended-insert `# Resulta em um arquivo menor e mais rápido para carga sendo um insert extendido (mais de uma linha da tabela inserida por comando insert)` \ --hex-blob `#transforma valores binarios em hexa (for example, 'abc' becomes 0x616263)` \ --set-charset $TABLES