--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/mysql/templates/mysqlbackup.sh.erb Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,93 @@
+<%- if @kernel == 'Linux' -%>
+#!/bin/bash
+<%- else -%>
+#!/bin/sh
+<%- end -%>
+#
+# MySQL Backup Script
+# Dumps mysql databases to a file for another backup tool to pick up.
+#
+# MySQL code:
+# GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'user'@'localhost'
+# IDENTIFIED BY 'password';
+# FLUSH PRIVILEGES;
+#
+##### START CONFIG ###################################################
+
+USER=<%= @backupuser %>
+PASS='<%= @backuppassword %>'
+DIR=<%= @backupdir %>
+ROTATE=<%= [ Integer(@backuprotate) - 1, 0 ].max %>
+
+PREFIX=mysql_backup_
+<% if @ignore_events %>
+ADDITIONAL_OPTIONS="--ignore-table=mysql.event"
+<% else %>
+ADDITIONAL_OPTIONS="--events"
+<% end %>
+<%# Only include routines or triggers if we're doing a file per database -%>
+<%# backup. This happens if we named databases, or if we explicitly set -%>
+<%# file per database mode -%>
+<% if !@backupdatabases.empty? || @file_per_database -%>
+<% if @include_triggers -%>
+ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --triggers"
+<% else -%>
+ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --skip-triggers"
+<% end -%>
+<% if @include_routines -%>
+ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --routines"
+<% else -%>
+ADDITIONAL_OPTIONS="$ADDITIONAL_OPTIONS --skip-routines"
+<% end -%>
+<% end -%>
+
+##### STOP CONFIG ####################################################
+PATH=<%= @execpath %>
+
+
+
+<%- if @kernel == 'Linux' -%>
+set -o pipefail
+<%- end -%>
+
+cleanup()
+{
+ find "${DIR}/" -maxdepth 1 -type f -name "${PREFIX}*.sql*" -mtime +${ROTATE} -print0 | xargs -0 -r rm -f
+}
+
+<% if @delete_before_dump -%>
+cleanup
+
+<% end -%>
+<% if @backupdatabases.empty? -%>
+<% if @file_per_database -%>
+mysql -u${USER} -p${PASS} -s -r -N -e 'SHOW DATABASES' | while read dbname
+do
+ mysqldump -u${USER} -p${PASS} --opt --flush-logs --single-transaction \
+ ${ADDITIONAL_OPTIONS} \
+ ${dbname} <% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}${dbname}_`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %>
+done
+<% else -%>
+mysqldump -u${USER} -p${PASS} --opt --flush-logs --single-transaction \
+ ${ADDITIONAL_OPTIONS} \
+ --all-databases <% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %>
+<% end -%>
+<% else -%>
+<% @backupdatabases.each do |db| -%>
+mysqldump -u${USER} -p${PASS} --opt --flush-logs --single-transaction \
+ ${ADDITIONAL_OPTIONS} \
+ <%= db %><% if @backupcompress %>| bzcat -zc <% end %>> ${DIR}/${PREFIX}<%= db %>_`date +%Y%m%d-%H%M%S`.sql<% if @backupcompress %>.bz2<% end %>
+<% end -%>
+<% end -%>
+
+<% unless @delete_before_dump -%>
+if [ $? -eq 0 ] ; then
+ cleanup
+fi
+<% end -%>
+
+<% if @postscript -%>
+ <%- [@postscript].flatten.compact.each do |script|%>
+<%= script %>
+ <%- end -%>
+<% end -%>