author | Chloe Laisne <chloe.laisne@gmail.com> |
Sat, 16 Jul 2016 17:23:47 +0200 | |
changeset 240 | aa101458cd4e |
parent 146 | dc4d1cdc47e0 |
permissions | -rwxr-xr-x |
28 | 1 |
<%- if @kernel == 'Linux' -%> |
2 |
#!/bin/bash |
|
3 |
<%- else -%> |
|
4 |
#!/bin/sh |
|
5 |
<%- end -%> |
|
6 |
# |
|
7 |
# MySQL Backup Script |
|
8 |
# Dumps mysql databases to a file for another backup tool to pick up. |
|
9 |
# |
|
10 |
# MySQL code: |
|
11 |
# GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'user'@'localhost' |
|
12 |
# IDENTIFIED BY 'password'; |
|
13 |
# FLUSH PRIVILEGES; |
|
14 |
# |
|
15 |
##### START CONFIG ################################################### |
|
16 |
||
17 |
USER=<%= @backupuser %> |
|
18 |
PASS='<%= @backuppassword %>' |
|
19 |
DIR=<%= @backupdir %> |
|
20 |
ROTATE=<%= [ Integer(@backuprotate) - 1, 0 ].max %> |
|
21 |
||
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
22 |
# Create temporary mysql cnf file. |
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
23 |
TMPFILE=`mktemp /tmp/backup.XXXXXX` || exit 1 |
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
24 |
echo -e "[client]\npassword=$PASS\nuser=$USER" > $TMPFILE |
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
25 |
|
28 | 26 |
PREFIX=mysql_backup_ |
27 |
<% if @ignore_events %> |
|
28 |
ADDITIONAL_OPTIONS="--ignore-table=mysql.event" |
|
29 |
<% else %> |
|
30 |
ADDITIONAL_OPTIONS="--events" |
|
31 |
<% end %> |
|
32 |
<%# Only include routines or triggers if we're doing a file per database -%> |
|
33 |
<%# backup. This happens if we named databases, or if we explicitly set -%> |
|
34 |
<%# file per database mode -%> |
|
35 |
<% if !@backupdatabases.empty? || @file_per_database -%> |
|
36 |
<% if @include_triggers -%> |
|
37 |
ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --triggers" |
|
38 |
<% else -%> |
|
39 |
ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --skip-triggers" |
|
40 |
<% end -%> |
|
41 |
<% if @include_routines -%> |
|
42 |
ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --routines" |
|
43 |
<% else -%> |
|
44 |
ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --skip-routines" |
|
45 |
<% end -%> |
|
46 |
<% end -%> |
|
47 |
||
48 |
##### STOP CONFIG #################################################### |
|
49 |
PATH=<%= @execpath %> |
|
50 |
||
51 |
||
52 |
||
53 |
<%- if @kernel == 'Linux' -%> |
|
54 |
set -o pipefail |
|
55 |
<%- end -%> |
|
56 |
||
57 |
cleanup() |
|
58 |
{ |
|
59 |
find "${DIR}/" -maxdepth 1 -type f -name "${PREFIX}*.sql*" -mtime +${ROTATE} -print0 | xargs -0 -r rm -f |
|
60 |
} |
|
61 |
||
62 |
<% if @delete_before_dump -%> |
|
63 |
cleanup |
|
64 |
||
65 |
<% end -%> |
|
66 |
<% if @backupdatabases.empty? -%> |
|
67 |
<% if @file_per_database -%> |
|
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
68 |
mysql --defaults-file=$TMPFILE -s -r -N -e 'SHOW DATABASES' | while read dbname |
28 | 69 |
do |
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
70 |
mysqldump --defaults-file=$TMPFILE --opt --flush-logs --single-transaction \ |
28 | 71 |
${ADDITIONAL_OPTIONS} \ |
72 |
${dbname} <% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}${dbname}_`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %> |
|
73 |
done |
|
74 |
<% else -%> |
|
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
75 |
mysqldump --defaults-file=$TMPFILE --opt --flush-logs --single-transaction \ |
28 | 76 |
${ADDITIONAL_OPTIONS} \ |
77 |
--all-databases <% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %> |
|
78 |
<% end -%> |
|
79 |
<% else -%> |
|
80 |
<% @backupdatabases.each do |db| -%> |
|
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
81 |
mysqldump --defaults-file=$TMPFILE --opt --flush-logs --single-transaction \ |
28 | 82 |
${ADDITIONAL_OPTIONS} \ |
83 |
<%= db %><% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}<%= db %>_`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %> |
|
84 |
<% end -%> |
|
85 |
<% end -%> |
|
86 |
||
87 |
<% unless @delete_before_dump -%> |
|
88 |
if [ $? -eq 0 ] ; then |
|
89 |
cleanup |
|
90 |
fi |
|
91 |
<% end -%> |
|
92 |
||
93 |
<% if @postscript -%> |
|
94 |
<%- [@postscript].flatten.compact.each do |script|%> |
|
95 |
<%= script %> |
|
96 |
<%- end -%> |
|
97 |
<% end -%> |
|
146
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
98 |
|
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
99 |
# Remove temporary file |
dc4d1cdc47e0
first implementation of handle install. Need refinement
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
100 |
rm -f $TMPFILE |