X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=handlers%2Fmysql.helper;h=9622d41d8080ffbb4d69bae7058df81c7881a1f0;hp=765f22889350b88e133605aefa1125e1ce7ad37d;hb=be75e4e6c536882c14db9a41c61585e7a9c045f6;hpb=4c8e2839949be4603fbb8fb9e7a7e536e59c1dc4 diff --git a/handlers/mysql.helper b/handlers/mysql.helper index 765f228..9622d41 100644 --- a/handlers/mysql.helper +++ b/handlers/mysql.helper @@ -1,13 +1,42 @@ +# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*- -do_mysql_user() { - inputBox "mysql action wizard" "specify a system user:" - do_mysql_final "user = $REPLY" +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 action wizard" "specify a mysql user:" + inputBox "$mysql_title" "specify a mysql user:" + [ $? = 1 ] && return user=$REPLY - inputBox "mysql action wizard" "specify the mysql user's password:" + inputBox "$mysql_title" "specify the mysql user's password:" + [ $? = 1 ] && return password=$REPLY do_mysql_final "dbusername = $user\ndbpassword = $password" } @@ -18,54 +47,129 @@ do_mysql_debian() { } do_mysql_user() { - inputBox "mysql action wizard" "what system user does mysql backup use?" + 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 action wizard" "check options" \ - "sqldump" "create a backup using mysqldump (more compat)." off \ - "hotcopy" "create a backup using mysqlhotcopy (faster)." on \ - "compress" "compress the sql output files" on + 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 = off" - hotcopy="hotcopy = off" + sqldump="sqldump = no" + hotcopy="hotcopy = no" else - checkBox "mysql action wizard" "check options" \ - "compress" "compress the sql output files" on + checkBox "$mysql_title" "check options" \ + "compress" "compress the sql output files" yes status=$? - sqldump="sqldump = on" - hotcopy="hotcopy = off" + sqldump="sqldump = yes" + hotcopy="hotcopy = no" fi [ $status = 1 ] && return; result="$REPLY" - compress="compress = off" + compress="compress = no" for opt in $result; do case $opt in - '"sqldump"') sqldump="sqldump = on";; - '"hotcopy"') hotcopy="hotcopy = on";; - '"compress"') compress="compress = on";; + '"sqldump"') sqldump="sqldump = yes";; + '"hotcopy"') hotcopy="hotcopy = yes";; + '"compress"') compress="compress = yes";; esac done get_next_filename $configdirectory/20.mysql - echo -e $@ > $next_filename + cat >> $next_filename < (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 -# databases = all -# backupdir = /var/backups/mysql -# dbhost = localhost + +# dbhost = (default = localhost) + EOF - chmod 000 $next_filename + cat >> $next_filename < (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 = (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 < (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 action wizard" "choose a mysql authentication method:" \ + 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." @@ -104,6 +208,5 @@ EOF "password") do_mysql_password;return;; "debian") do_mysql_debian;return;; esac - done + done } -