Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
backupninja
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Custom issue tracker
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Liberate
backupninja
Commits
a56165ce
Commit
a56165ce
authored
19 years ago
by
elijah
Browse files
Options
Downloads
Patches
Plain Diff
added support for --defaults-file
parent
cadfdca9
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
etc/backup.d/example.mysql
+41
-25
41 additions, 25 deletions
etc/backup.d/example.mysql
handlers/mysql
+26
-27
26 additions, 27 deletions
handlers/mysql
with
67 additions
and
52 deletions
etc/backup.d/example.mysql
+
41
−
25
View file @
a56165ce
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>
# 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.
#
If
this option is not
set, use dbusername and dbpassword instead
.
#
(
this option is not
compatible with "configfile" or "dbusername")
.
#
# dbusername = <dbuser>
# dbusername = <dbuser>
(no default)
# The user must have access to the databases specified later.
#
Use
this option i
f
not
using the 'user' option
.
#
(
this option i
s
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>
# dbhost = <host>
(default = localhost)
# 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
#
comma
sep
e
rated list of database names.
#
space
sep
a
rated 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'
#
# hotcopy = < yes | no >
# hotcopy = < yes | no >
(default = yes)
# 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.
#
# compress = < yes | no >
# compress = < yes | no >
(default = yes)
# if yes, compress the sqldump output.
#
# vsname = <vserver>
# 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
This diff is collapsed.
Click to expand it.
handlers/mysql
+
26
−
27
View file @
a56165ce
...
...
@@ -3,18 +3,20 @@
#
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 hotcopy
no
getconf hotcopy
yes
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 ]
...
...
@@ -50,19 +52,16 @@ else
fi
# create .my.cnf
#
(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"
if [ -f $mycnf ]; then
# rename temporarily
tmpcnf="$home/my.cnf.disable"
debug "mv $mycnf $tmpcnf"
mv $mycnf $tmpcnf
debug "rm $mycnf"
rm $mycnf
fi
oldmask=`umask`
umask 077
...
...
@@ -81,17 +80,21 @@ user=$dbusername
password=$dbpassword
EOF
umask $oldmask
defaultsfile="--defaults-file $mycnf"
else
# otherwise, use $configfile
defaultsfile="--defaults-file $configfile"
fi
## 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"
else
execstr="$MYSQLHOTCOPY --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
execstr="$MYSQLHOTCOPY
$defaultsfile
--quiet --allowold --regexp /.\*/./.\*/ $hotdir"
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
...
...
@@ -109,9 +112,9 @@ if [ "$hotcopy" == "yes" ]; 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"
else
execstr="$MYSQLHOTCOPY --allowold $db $hotdir"
execstr="$MYSQLHOTCOPY
$defaultsfile
--allowold $db $hotdir"
fi
debug "su $user -c '$execstr'"
if [ ! $test ]; then
...
...
@@ -135,18 +138,18 @@ if [ "$sqldump" == "yes" ]; 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`
else
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
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"
else
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
...
...
@@ -168,14 +171,10 @@ if [ "$sqldump" == "yes" ]; then
fi
fi
if [ "$dbusername" != "" ]; then
## clean up tmp config file
# clean up tmp config file
if [ -f "$mycnf" ]; then
debug "rm $mycnf"
rm $mycnf
if [ -f "$tmpcnf" ]; then
debug "mv $tmpcnf $mycnf"
mv $tmpcnf $mycnf
fi
fi
return 0
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment