diff options
| author | intrigeri <intrigeri@boum.org> | 2007-10-12 17:06:09 +0000 | 
|---|---|---|
| committer | intrigeri <intrigeri@boum.org> | 2007-10-12 17:06:09 +0000 | 
| commit | 579ea902ba24854b3c9acb307cda7e996e8e41a3 (patch) | |
| tree | 373ce0a2242050dad65b84950520c6d44a9445fc /handlers/mysql.helper.in | |
| parent | be75e4e6c536882c14db9a41c61585e7a9c045f6 (diff) | |
| download | backupninja-579ea902ba24854b3c9acb307cda7e996e8e41a3.tar.gz backupninja-579ea902ba24854b3c9acb307cda7e996e8e41a3.tar.bz2  | |
fixed autotools build, broken since r466, inhandlers/Makefile.am
Diffstat (limited to 'handlers/mysql.helper.in')
| -rw-r--r-- | handlers/mysql.helper.in | 212 | 
1 files changed, 212 insertions, 0 deletions
diff --git a/handlers/mysql.helper.in b/handlers/mysql.helper.in new file mode 100644 index 0000000..9622d41 --- /dev/null +++ b/handlers/mysql.helper.in @@ -0,0 +1,212 @@ +# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*- + +HELPERS="$HELPERS mysql:mysql_database_backup" + +do_mysql_vserver() { +   choose_one_vserver "$mysql_title" +   [ $? = 0 ] || return 1 +   mysql_vsname="vsname = $REPLY" +} + +do_mysql_databases() { +   REPLY= +   while [ -z "$REPLY" ]; do +      formBegin "$mysql_title: databases" +         formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +	 formItem "Database:" +      formDisplay +      [ $? = 0 ] || return 1 +      mysql_databases="databases = " +      for i in $REPLY; do +	 [ -n "$i" ] && mysql_databases="$mysql_databases $i" +      done +   done +} + +do_mysql_password() { +  inputBox "$mysql_title" "specify a mysql user:" +  [ $? = 1 ] && return +  user=$REPLY +  inputBox "$mysql_title" "specify the mysql user's password:" +  [ $? = 1 ] && return +  password=$REPLY +  do_mysql_final "dbusername = $user\ndbpassword = $password" +} + +do_mysql_debian() { +  _DISABLE_HOTCOPY=yes +  do_mysql_final "configfile = /etc/mysql/debian.cnf" +} + +do_mysql_user() { +  inputBox "$mysql_title" "what system user does mysql backup use?" +  [ $? = 1 ] && return +  do_mysql_final "user = $REPLY" +} + +do_mysql_final() { +   if [ -z "$_DISABLE_HOTCOPY" ]; then +      checkBox "$mysql_title" "check options" \ +         "sqldump" "create a backup using mysqldump (more compat)." no \ +         "hotcopy" "create a backup using mysqlhotcopy (faster)." yes \ +         "compress" "compress the sql output files" yes +      status=$? +      sqldump="sqldump = no" +      hotcopy="hotcopy = no" +   else +      checkBox "$mysql_title" "check options" \ +         "compress" "compress the sql output files" yes +      status=$? +      sqldump="sqldump = yes" +      hotcopy="hotcopy = no" +   fi + +   [ $status = 1 ] && return;     +   result="$REPLY" +   compress="compress = no" +   for opt in $result; do +      case $opt in +        '"sqldump"') sqldump="sqldump = yes";; +        '"hotcopy"') hotcopy="hotcopy = yes";; +        '"compress"') compress="compress = yes";; +      esac +   done +   get_next_filename $configdirectory/20.mysql +    +   cat >> $next_filename <<EOF +### backupninja MySQL config file ### + +# hotcopy = < yes | no > (default = no) +# make a backup of the actual database binary files using mysqlhotcopy. +$hotcopy + +# sqldump = < yes | no > (default = no) +# make a backup using mysqldump. this creates text files with sql commands +# sufficient to recontruct the database. +# +$sqldump + +# compress = < yes | no > (default = yes) +# if yes, compress the sqldump output. +$compress + +# dbhost      = <host> (default = localhost) + +EOF +   cat >> $next_filename <<EOF + +# backupdir = <dir> (default: /var/backups/mysql) +# where to dump the backups. hotcopy backups will be in a subdirectory +# 'hotcopy' and sqldump backups will be in a subdirectory 'sqldump' +$mysql_backupdir + +# databases = <all | db1 db2 db3 > (default = all) +# which databases to backup. should either be the word 'all' or a  +# space separated list of database names. +$mysql_databases + +EOF + +if [ $host_or_vservers == vservers ] +   then +       cat >> $next_filename <<EOF +# +# vsname = <vserver> (no default) +# vsname indicates which vserver to operate on, this is only used if  +# vserver is set to yes in /etc/backupninja.conf +# NOTE: if you do not specify a vsname the host will be operated on +# alsoNOTE: if operating on a vserver, $VROOTDIR will be  +# prepended to backupdir. +EOF +   echo -e "$mysql_vsname\n" >> $next_filename +fi + +   echo -e $@ >> $next_filename +    +   chmod 600 $next_filename +} + +mysql_wizard() { +    +   # Global variables +   mysql_title="MySQL action wizard" +    +   # backup the host system or a Vserver? +   choose_host_or_one_vserver "$mysql_title" +   [ $? = 0 ] || return 1 +   if [ $host_or_vservers == vservers ] +   then +       do_mysql_vserver +       [ $? = 0 ] || return 1 +   fi +       +   # backupdir +   if [ $host_or_vservers == vservers ] +   then +       inputBox "$mysql_title" "Directory where to store the backups:`echo \"\n(Relative to chosen vserver's root directory)\"`" "/var/backups/mysql" +   else +       inputBox "$mysql_title" "Directory where to store the backups" "/var/backups/mysql" +   fi +   [ $? = 1 ] && return +   mysql_backupdir="backupdir = $REPLY" + +   # databases +   booleanBox "$mysql_title" "Do you want to backup all of the databases? `echo \"\n\nIf not, you'll be offered to choose individual databases to backup.\"`" +   if [ $? = 0 ]; then +      mysql_databases="databases = all" +   else +      do_mysql_databases +      [ $? = 0 ] || return 1 +   fi +    +   while true; do +      _DISABLE_HOTCOPY= +      menuBoxHelpFile "$mysql_title" "choose a mysql authentication method:" \ +        user "change to a linux user first." \ +        password "manually specify mysql user and password." \ +        debian "use default mysql user debian-sys-maint."  +      status=$? +      if [ $status = 2 ]; then +	       # show help. +          helptmp="/tmp/backupninja.help.$$" +          cat > $helptmp <<EOF +To connect to mysql, backupninja must authenticate. +There are three possible authentication methods: + +USER +With this method, you specify a system user. Backupninja  will +then become this user before running mysqldump or mysqlhotcopy. +The result is that ~/.my.cnf is used for authentication. + +PASSWORD +With this method, you manually specify a mysql user and +password in the backup action configuration. + +DEBIAN +With this method, we use the debian-sys-maint user which is +already defined in /etc/mysql/debian.cnf. If you are running +debian, this is recommended, because no further configuration +is needed. The drawback is that this is incompatible with  +mysqlhotcopy: you must use mysqldump. +EOF +          dialog --textbox $helptmp 0 0 +          rm $helptmp +      fi + +      [ $status = 1 ] && return; +      result="$REPLY" +      case "$result" in +         "user") do_mysql_user;return;; +         "password") do_mysql_password;return;; +         "debian") do_mysql_debian;return;; +      esac +   done    +}  | 
