easydump script: Make a non consistent backup


/ Published in: Bash
Save to your folder(s)

Use it with MyISAM databases.
Guess this works with InnoDB, didn't tried tough
New version 2011-02-24 11:12


Copy this code and paste it in your HTML
  1. #!/bin/bash
  2. # - To restore the database you can use the command bellow which whill return the file
  3. # whithout send any output to the screen
  4. # mysql -h 127.0.0.1 -A -u root -e "USE db_name; \. databasefile.sql"
  5.  
  6. PROGNAME=${0##*/}
  7. PROGVERSION=0.9.1
  8.  
  9. usage()
  10. {
  11. cat << EO
  12.   Usage: $PROGNAME --database DBNAME --host HOSTIP_OR_HOSTNAME --user USERNAME [options]
  13.   $PROGNAME --version
  14.   $PROGNAME --help
  15.  
  16.   Make a non consistent backup
  17.  
  18.   Options:
  19. EO
  20. cat <<EO | column -s\& -t
  21.  
  22. -h|--help & show this output
  23. -V|-v|--version & show version information
  24. -B|--database & indicates the database name
  25. -h|--host & indicates the database server hostname
  26. -u|--user & Optional param, passes the login user name for the database server
  27. -p|--pwd & Optional param, sets the password for the user
  28. --tables & Optional param, if you whishes to dump only some tables use this parameter and passes the
  29. & tables names whithin a ' (simple coma) string like "--tables 'tab1 tab2'" or "--tables 'tab1'"
  30.  
  31.  
  32. EO
  33. }
  34.  
  35. ARGS=$(getopt -s bash --options vVB:h:u:p: --longoptions help,version,database:,host:,user:,pwd:,tables: -q -- "$@" )
  36.  
  37. eval set -- "$ARGS"
  38.  
  39. while true; do
  40. case $1 in
  41. --help)
  42. usage
  43. exit 0
  44. ;;
  45. -v|-V|--version)
  46. echo "easydump version: $PROGVERSION"
  47. exit
  48. ;;
  49. -B|--database)
  50. shift
  51. DATABASE="$1"
  52. ;;
  53. -h|--host)
  54. shift
  55. HOST="$1"
  56. ;;
  57. -u|--user)
  58. shift
  59. USERNAME="$1"
  60. ;;
  61. -p|--pwd)
  62. shift
  63. PASSWORD="$1"
  64. ;;
  65. --tables)
  66. shift
  67. TABLES="--tables $1"
  68. ;;
  69. --)
  70. shift
  71. break
  72. ;;
  73. *)
  74. shift
  75. break
  76. ;;
  77. esac
  78. shift
  79.  
  80. done
  81.  
  82. if [ -z "$DATABASE" ]
  83. then
  84. usage
  85. echo " IMPORTANTE: \"database\" parameter missing"
  86. echo ""
  87. exit
  88. fi
  89. if [ -z "$HOST" ]
  90. then
  91. usage
  92. echo " IMPORTANTE: \"host\" parameter missing"
  93. echo ""
  94. exit
  95. fi
  96. if [ -z "$USERNAME" ]
  97. then
  98. usage
  99. echo " IMPORTANTE: \"username\" parameter missing"
  100. echo ""
  101. exit
  102. fi
  103.  
  104. /usr/bin/mysqldump \
  105. --databases $DATABASE \
  106. --host=$HOST \
  107. --user=$USERNAME \
  108. --password=$PASSWORD \
  109. --log-error=/tmp/mysqldump\-erros.list `# registra os erros do aplicativo em um log para avaliação posterior` \
  110. --force `# continua o backup mesmo que encontre erros no meio do caminho` \
  111. --no-create-db `# não criar banco de dados` \
  112. --skip-lock-tables `# nao travar a tabela (gera um backup não consistente)` \
  113. --add-drop-table `# adiciona um comando drop table no inicio do script resultante` \
  114. --skip-comments `#evita adicinar informações extras como nome do servidor, versão do mysqldump e etc` \
  115. --create-options `# adiciona todas as opções do create table` \
  116. --disable-keys `# desliga chaves no retorno do backup deixando o restore mais rapido` \
  117. --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` \
  118. --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)` \
  119. --hex-blob `#transforma valores binarios em hexa (for example, 'abc' becomes 0x616263)` \
  120. --set-charset $TABLES

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.