git-svn-id: http://code.autistici.org/svn/backupninja/trunk@117
758a04ac-41e6-0310-8a23-
8373a73cc35d
-dbusername = root
-dbpassword = test
-dbhost = localhost
-databases = all
-backupdir = /var/backups/mysql
-hotcopy = yes
-sqldump = yes
-compress = yes
+## backupninja mysql config file ##
+dbhost = localhost
+databases = all
+backupdir = /var/backups/mysql
+hotcopy = yes
+sqldump = no
+compress = yes
+
+## authentication ##
+
+configfile = /etc/mysql/debian.cnf
+
+# or...
+# dbusername = <dbuser>
+# dbpassword = <dbpassword>
+
+# or...
+# user = root
+
+## notes ##
+
+# configfile = < path/to/file > (default = /etc/mysql/debian.cnf)
+# The config file is passed to mysql with --defaults-file.
+# On debian, this default will allow backupninja to make backups
+# of mysql without configuring any additional options.
+# (this option is not compatible with "user" or "dbusername").
+# user = <user> (default = root)
# Run mysql commands as 'user'. A valid .my.cnf must exist with a
# database username and password in the user's home directory.
# Run mysql commands as 'user'. A valid .my.cnf must exist with a
# database username and password in the user's home directory.
-# If this option is not set, use dbusername and dbpassword instead.
+# (this option is not compatible with "configfile" or "dbusername").
+# dbusername = <dbuser> (no default)
# The user must have access to the databases specified later.
# The user must have access to the databases specified later.
-# Use this option if not using the 'user' option.
+# (this option is not compatible with "configfile" or "user").
-# dbpassword = <dbpass>
-# The password. this password will NOT be passed on the command line
-# and is not readable using "ps aux". make sure that this file is not
-# world readable. Use this to specify the password in this config file
-# instead of ~user/.my.cnf.
+# dbpassword = <dbpass> (no default)
+# The password used with dbusername. this password will NOT be passed
+# on the command line and is not readable using "ps aux".
+# dbhost = <host> (default = localhost)
# only localhost works right now.
#
# only localhost works right now.
#
-# databases = < all | db1 db2 db3 >
+# databases = < all | db1 db2 db3 > (default = all)
# which databases to backup. should either be the word 'all' or a
# which databases to backup. should either be the word 'all' or a
-# comma seperated list of database names.
+# space separated list of database names.
-# backupdir = < path/to/destination >
+# backupdir = < path/to/destination > (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'
#
# where to dump the backups. hotcopy backups will be in a subdirectory 'hotcopy' and
# sqldump backups will be in a subdirectory 'sqldump'
#
-# hotcopy = < yes | no >
+# hotcopy = < yes | no > (default = yes)
# make a backup of the actual database binary files using mysqlhotcopy.
#
# make a backup of the actual database binary files using mysqlhotcopy.
#
-# sqldump = < yes | no >
+# sqldump = < yes | no > (default = no)
# make a backup using mysqldump. this creates text files with sql commands
# sufficient to recontruct the database.
#
# make a backup using mysqldump. this creates text files with sql commands
# sufficient to recontruct the database.
#
-# compress = < yes | no >
+# compress = < yes | no > (default = yes)
# if yes, compress the sqldump output.
#
# if yes, compress the sqldump output.
#
+# vsname = <vserver> (no default)
# what vserver to operate on, only used if vserver = yes in /etc/backupninja.conf
# if you do not specify a vsname the host will be operated on
# what vserver to operate on, only used if vserver = yes in /etc/backupninja.conf
# if you do not specify a vsname the host will be operated on
#
getconf backupdir /var/backups/mysql
#
getconf backupdir /var/backups/mysql
+getconf configfile /etc/mysql/debian.cnf
getconf databases all
getconf compress yes
getconf dbusername
getconf dbpassword
getconf dbhost localhost
getconf databases all
getconf compress yes
getconf dbusername
getconf dbpassword
getconf dbhost localhost
getconf sqldump no
getconf user root
getconf vsname
# If vservers are configured, decide if the handler should
# use them or if it should just operate on the host
getconf sqldump no
getconf user root
getconf vsname
# If vservers are configured, decide if the handler should
# use them or if it should just operate on the host
if [ "$VSERVERS" = "yes" ]
then
if [ ! -z $vsname ]
if [ "$VSERVERS" = "yes" ]
then
if [ ! -z $vsname ]
-# (we do this because we don't want to have to specify the password on the command line
-# because then anyone would be able to see it with a 'ps aux'. instead, we create a
-# temporary ~/.my.cnf in root's home directory).
+# only if dbusername and dbpassword specified.
+# we create a tmp file because we don't want to have to
+# specify the password on the command line.
-if [ "$dbusername" != "" ]; then
- home=`grep '^root:' $vroot/etc/passwd | awk -F: '{print $6}'`
- [ -d $home ] || fatal "Can't find root's home directory ($home)."
- mycnf="$vroot$home/.my.cnf"
+defaultsfile=""
+if [ "$dbusername" != "" -a "$dbpassword" != "" ]; then
+ mycnf="/tmp/backupninja.$$.my.cnf"
- # rename temporarily
- tmpcnf="$home/my.cnf.disable"
- debug "mv $mycnf $tmpcnf"
- mv $mycnf $tmpcnf
+ debug "rm $mycnf"
+ rm $mycnf
fi
oldmask=`umask`
umask 077
fi
oldmask=`umask`
umask 077
password=$dbpassword
EOF
umask $oldmask
password=$dbpassword
EOF
umask $oldmask
+ defaultsfile="--defaults-file $mycnf"
+else
+ # otherwise, use $configfile
+ defaultsfile="--defaults-file $configfile"
## HOT COPY
if [ "$hotcopy" == "yes" ]; then
if [ "$databases" == "all" ]; then
if [ $usevserver ]
then
## HOT COPY
if [ "$hotcopy" == "yes" ]; then
if [ "$databases" == "all" ]; then
if [ $usevserver ]
then
- execstr="$VSERVER $vsname exec $MYSQLHOTCOPY --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
+ execstr="$VSERVER $vsname exec $MYSQLHOTCOPY $defaultsfile --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
- execstr="$MYSQLHOTCOPY --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
+ execstr="$MYSQLHOTCOPY $defaultsfile --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
for db in $databases; do
if [ $usevserver ]
then
for db in $databases; do
if [ $usevserver ]
then
- execstr="$VSERVER $vsname exec $MYSQLHOTCOPY --allowold $db $hotdir"
+ execstr="$VSERVER $vsname exec $MYSQLHOTCOPY $defaultsfile --allowold $db $hotdir"
- execstr="$MYSQLHOTCOPY --allowold $db $hotdir"
+ execstr="$MYSQLHOTCOPY $defaultsfile --allowold $db $hotdir"
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
if [ "$databases" == "all" ]; then
if [ $usevserver ]
then
if [ "$databases" == "all" ]; then
if [ $usevserver ]
then
- databases=`echo 'show databases' | $VSERVER $vsname exec su $user -c "$MYSQL" | grep -v Database`
+ databases=`echo 'show databases' | $VSERVER $vsname exec su $user -c "$MYSQL $defaultsfile" | grep -v Database`
- databases=`echo 'show databases' | su $user -c "$MYSQL" | grep -v Database`
+ databases=`echo 'show databases' | su $user -c "$MYSQL $defaultsfile" | grep -v Database`
fi
fi
for db in $databases; do
if [ $usevserver ]
then
fi
fi
for db in $databases; do
if [ $usevserver ]
then
- execstr="$VSERVER $vsname exec $MYSQLDUMP --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $vroot$dumpdir/${db}.sql"
+ execstr="$VSERVER $vsname exec $MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $vroot$dumpdir/${db}.sql"
- execstr="$MYSQLDUMP --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $dumpdir/${db}.sql"
+ execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $db > $dumpdir/${db}.sql"
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
-if [ "$dbusername" != "" ]; then
- ## clean up tmp config file
+# clean up tmp config file
+if [ -f "$mycnf" ]; then
debug "rm $mycnf"
rm $mycnf
debug "rm $mycnf"
rm $mycnf
- if [ -f "$tmpcnf" ]; then
- debug "mv $tmpcnf $mycnf"
- mv $tmpcnf $mycnf
- fi