[-]
[+]
|
Changed |
automysqlbackup.spec
|
|
[-]
[+]
|
Added |
automysqlbackup-2.6.9.sh
^
|
@@ -0,0 +1,1099 @@
+#!/bin/bash
+#
+# MySQL Backup Script
+# VER. 2.6.8 - http://sourceforge.net/projects/automysqlbackup/
+# Copyright (c) 2002-2003 wipe_out@lycos.co.uk
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#=====================================================================
+#=====================================================================
+# Set the following variables to your system needs
+# (Detailed instructions below variables)
+#=====================================================================
+#set -x
+CONFIGFILE="/etc/automysqlbackup/automysqlbackup.conf"
+
+if [ -r ${CONFIGFILE} ]; then
+ # Read the configfile if it's existing and readable
+ source ${CONFIGFILE}
+else
+ # do inline-config otherwise
+ # To create a configfile just copy the code between "### START CFG ###" and "### END CFG ###"
+ # to /etc/automysqlbackup/automysqlbackup.conf. After that you're able to upgrade this script
+ # (copy a new version to its location) without the need for editing it.
+ ### START CFG ###
+ # Username to access the MySQL server e.g. dbuser
+ USERNAME=`echo ${USERNAME:=dbuser}`
+
+ # Password to access the MySQL server e.g. password
+ PASSWORD=`echo ${PASSWORD:=password}`
+
+ # Host name (or IP address) of MySQL server e.g localhost
+ DBHOST=`echo ${DBHOST:=localhost}`
+
+ # Port where MYSQL Server is listening
+ DBPORT=`echo ${DBPORT:=3306}`
+
+ # List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
+ DBNAMES=`echo ${DBNAMES:="DB1 DB2 DB3"}`
+
+ # Backup directory location e.g /backups
+ BACKUPDIR=`echo ${BACKUPDIR:="/backup/mysql/${DBHOST}"}`
+
+ # Mail setup
+ # What would you like to be mailed to you?
+ # - log : send only log file
+ # - files : send log file and sql files as attachments (see docs)
+ # - stdout : will simply output the log to the screen if run manually.
+ # - quiet : Only send logs if an error occurs to the MAILADDR.
+ MAILCONTENT="quiet"
+
+ # Set the maximum allowed email size in k. (4000 = approx 5MB email [see docs])
+ MAXATTSIZE="4000"
+
+ # Email Address to send mail to? (user@domain.com)
+ MAILADDR=`echo ${MAILADDR:="maintenance@example.com"}`
+
+ # Email Address to send mail from? (root@host.tld)
+ FROMADDR="automysqlbackup@`hostname -f`"
+
+ # ============================================================
+ # === ADVANCED OPTIONS ( Read the doc's below for details )===
+ #=============================================================
+
+ # List of DBBNAMES for Monthly Backups.
+ MDBNAMES="${DBNAMES}"
+
+ # List of DBNAMES to EXLUCDE if DBNAMES are set to all (must be in " quotes)
+ DBEXCLUDE=`echo ${DBEXCLUDE:=""}`
+
+ # List of tables to exclude. Space-separated, with db name, e.g. "db1.table1 d2.table2"
+ TABLEEXCLUDE=`echo ${TABLEEXCLUDE:=""}`
+
+ # Include CREATE DATABASE in backup?
+ CREATE_DATABASE=yes
+
+ # Separate backup directory and file for each DB? (yes or no)
+ SEPDIR=yes
+
+ # Which day do you want weekly backups? (1 to 7 where 1 is Monday)
+ DOWEEKLY=6
+
+ # Choose Compression type. (gzip or bzip2)
+ COMP=`echo ${COMP:="bzip2"}`
+
+ # Use pipe compress
+ PIPECOMP=yes
+
+ # Compress communications between backup server and MySQL server?
+ COMMCOMP=no
+
+ # Additionally keep a copy of the most recent backup in a seperate directory.
+ LATEST=no
+
+ # The maximum size of the buffer for client/server communication. e.g. 16MB (maximum is 1GB)
+ MAX_ALLOWED_PACKET=
+
+ # For connections to localhost. Sometimes the Unix socket file must be specified.
+ SOCKET=
+
+ # Backup databases per table work if SEPDIR set to `yes'
+ PERTABLE=yes
+
+ # Command to run before backups (uncomment to use)
+ PREBACKUP="/etc/mysql-backup-pre"
+
+ # Command run after backups (uncomment to use)
+ POSTBACKUP="/etc/mysql-backup-post"
+
+ # doesn't show messages about rotating backups
+ QUIETROTA=`echo ${QUIETROTA:="no"}`
+ ### END CFG ###
+fi
+
+#=====================================================================
+# Options documantation
+#=====================================================================
+# Set USERNAME and PASSWORD of a user that has the appropriate permissions
+# to backup ALL databases. (See mysql documentation for details)
+# NEW in 2.5.1:
+# - If USERNAME is set to "debian" and PASSWORD is unset or "" obtain
+# them from the file /etc/mysql/debian.cnf
+# - First command line option "-c" for configfile
+# - Interpretable Exit-States:
+# 1: given configfile is not readable or does not exist
+# 2: unknown option
+#
+# Set the DBHOST option to the server you wish to backup, leave the
+# default to backup "this server".(to backup multiple servers make
+# copies of this file and set the options for that server)
+#
+# Put in the list of DBNAMES(Databases)to be backed up. If you would like
+# to backup ALL DBs on the server set DBNAMES="all".(if set to "all" then
+# any new DBs will automatically be backed up without needing to modify
+# this backup script when a new DB is created).
+#
+# If the DB you want to backup has a space in the name replace the space
+# with a % e.g. "data base" will become "data%base"
+# NOTE: Spaces in DB names may not work correctly when SEPDIR=no.
+#
+# You can change the backup storage location from /backups to anything
+# you like by using the BACKUPDIR setting..
+#
+# The MAILCONTENT and MAILADDR options and pretty self explanitory, use
+# these to have the backup log mailed to you at any email address or multiple
+# email addresses in a space seperated list.
+# (If you set mail content to "log" you will require access to the "mail" program
+# on your server. If you set this to "files" you will have to have mutt installed
+# on your server. If you set it to "stdout" it will log to the screen if run from
+# the console or to the cron job owner if run through cron. If you set it to "quiet"
+# logs will only be mailed if there are errors reported. )
+#
+# MAXATTSIZE sets the largest allowed email attachments total (all backup files) you
+# want the script to send. This is the size before it is encoded to be sent as an email
+# so if your mail server will allow a maximum mail size of 5MB I would suggest setting
+# MAXATTSIZE to be 25% smaller than that so a setting of 4000 would probably be fine.
+#
+# Finally copy automysqlbackup.sh to anywhere on your server and make sure
+# to set executable permission. You can also copy the script to
+# /etc/cron.daily to have it execute automatically every night or simply
+# place a symlink in /etc/cron.daily to the file if you wish to keep it
+# somwhere else.
+# NOTE:On Debian copy the file with no extention for it to be run
+# by cron e.g just name the file "automysqlbackup"
+#
+# Thats it..
+#
+#
+# === Advanced options doc's ===
+#
+# The list of MDBNAMES is the DB's to be backed up only monthly. You should
+# always include "mysql" in this list to backup your user/password
+# information along with any other DBs that you only feel need to
+# be backed up monthly. (if using a hosted server then you should
+# probably remove "mysql" as your provider will be backing this up)
+# NOTE: If DBNAMES="all" then MDBNAMES has no effect as all DBs will be backed
+# up anyway.
+#
+# If you set DBNAMES="all" you can configure the option DBEXCLUDE. Other
+# wise this option will not be used.
+# This option can be used if you want to backup all dbs, but you want
+# exclude some of them. (eg. a db is to big).
+#
+# Set CREATE_DATABASE to "yes" (the default) if you want your SQL-Dump to create
+# a database with the same name as the original database when restoring.
+# Saying "no" here will allow your to specify the database name you want to
+# restore your dump into, making a copy of the database by using the dump
|
[-]
[+]
|
Changed |
multimysqlbackup.conf
^
|
@@ -5,5 +5,5 @@
# host;user;password;databases_separated_by_spaces;exclude_databases;exclude_tables
# samples:
# localhost;root;;all;
-# localhost:port;root;password;mysql my_first_database my_second_database;exclude1_db exclude2_db;exclude3_db.exclude_table1 exclude4_db.exclude_table2
+# localhost:port;root;password;mysql my_first_database my_second_database;exclude1_db exclude2_db;exclude3_db.exclude_table1 exclude4_db.exclude_table2;bzip2;no
|
[-]
[+]
|
Changed |
multimysqlbackup.sh
^
|
@@ -2,17 +2,24 @@
#
# Name: multimysqlbackup
# Summary: wrapper for automysqlbackup to backup multiple hosts
-# Version: 0.2
+# Version: 0.3
# Author: Carsten Schoene <cs@linux-administrator.com>
-# Last change: 21-10-2011
+# Last change: 23-08-2021
#
###############################################################################
# path to host,db definitions
CONFPATH="/etc/multimysqlbackup.conf"
+if [ $# -gt 0 ]; then
+ # include custom config
+ if [ -f "$1" ] ; then
+ CONFPATH="$1"
+ fi
+fi
+
# path to mysql backup script
-AUTOMYSQLBACKUP="/usr/sbin/automysqlbackup"
+AUTOMYSQLBACKUP="$(which automysqlbackup 2>/dev/null)"
# lock each job
LOCKJOB=1
@@ -38,6 +45,8 @@
export DBNAMES=`echo ${LINE} | awk -F\; '{print $4}'|sed -e s@"%20%"@" "@g`
export DBEXCLUDE=`echo ${LINE} | awk -F\; '{print $5}'|sed -e s@"%20%"@" "@g`
export TABLEEXCLUDE=`echo ${LINE} | awk -F\; '{print $6}'|sed -e s@"%20%"@" "@g`
+ export COMP=`echo ${LINE} | awk -F\; '{print $7}'|sed -e s@"%20%"@" "@g`
+ export QUIETROTA=`echo ${LINE} | awk -F\; '{print $8}'|sed -e s@"%20%"@" "@g`
if [ ! -f /var/lock/${DBHOST}.lock ] && [ "${LOCKJOB}" == "1" ] ; then
@@ -69,6 +78,8 @@
export DBNAMES="all"
export DBEXCLUDE=""
export TABLEEXCLUDE=""
+ export COMP="bzip2"
+ export QUIETROTA="no"
if [ ! -f /var/lock/${DBHOST}.lock ] && [ "${LOCKJOB}" == "1" ] ; then
touch /var/lock/${DBHOST}.lock
|