WIP: Beautification of backups commands (MySQL, …) #21

Draft
benpro wants to merge 4 commits from beautification-of-backups-commands into master

View file

@ -39,13 +39,16 @@ mkdir -p -m 700 ${LOCAL_BACKUP_DIR}
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
## lang = C for english outputs # lang = C for english outputs
export LANGUAGE=C export LANGUAGE=C
export LANG=C export LANG=C
## Force umask # Force umask
umask 077 umask 077
# gzip binary, use pigz if available
GZIP_BIN=${$(command -v pigz):-$(command -v gzip)}
# Call test_server with "HOST:PORT" string # Call test_server with "HOST:PORT" string
# It will return with 0 if the server is reachable. # It will return with 0 if the server is reachable.
# It will return with 1 and a message on stderr if not. # It will return with 1 and a message on stderr if not.
@ -92,7 +95,7 @@ pick_server() {
echo "${SERVERS}" | cut -d' ' -f${field} echo "${SERVERS}" | cut -d' ' -f${field}
} }
## Verify other evobackup process and kill if needed # Verify other evobackup process and kill if needed
PIDFILE="/var/run/evobackup.pid" PIDFILE="/var/run/evobackup.pid"
if [ -e "${PIDFILE}" ]; then if [ -e "${PIDFILE}" ]; then
pid=$(cat "${PIDFILE}") pid=$(cat "${PIDFILE}")
@ -109,41 +112,80 @@ echo "$$" > ${PIDFILE}
trap "rm -f ${PIDFILE}" EXIT trap "rm -f ${PIDFILE}" EXIT
##### LOCAL BACKUP #################################################### ##### LOCAL BACKUP ####################################################
## To enable a backup, set the variable to true
#######################################################################
# You can comment or uncomment sections below to customize the backup # OpenLDAP with slapcat command
slapcatBackup=false
if $slapcatBackup; then
slapcat -l ${LOCAL_BACKUP_DIR}/ldap.bak
fi
## OpenLDAP : example with slapcat ##### MySQL Section ###################################################
# slapcat -l ${LOCAL_BACKUP_DIR}/ldap.bak mysqlPort=3306
mysqlDefaultsExtraFile="--defaults-extra-file=/etc/mysql/debian.cnf"
mysqlCommonArgs="--opt --force --events --hex-blob"
mysqlDatabases=$(echo SHOW DATABASES \
| mysql $mysqlDefaultsExtraFile -P $mysqlPort \
| egrep -v "^(Database|information_schema|performance_schema|sys)"
)
### MySQL # MySQL global compressed dump
mysqlGlobalDump=false
if $mysqlGlobalDump; then
mysqldump \
$mysqlDefaultsExtraFile \
-P $mysqlPort \
--all-databases \
$mysqlCommonArgs \
| $GZIP_BIN --best \
> ${LOCAL_BACKUP_DIR}/backup/mysql.bak.gz
fi
## example with global and compressed mysqldump # MySQL with data (.txt) separed from SQL structure (.sql)
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 \ mysqlDataStructure=false
# --opt --all-databases --force --events --hex-blob | gzip --best > ${LOCAL_BACKUP_DIR}/mysql.bak.gz if mysqlDataStructure; then
for database in ${mysqlDatabases}; do
mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysqldump/${database}
chown -RL mysql ${LOCAL_BACKUP_DIR}/mysqldump
mysqldump \
$mysqlDefaultsExtraFile \
-P $mysqlPort \
$mysqlCommonArgs \
-Q \
--skip-comments \
--fields-enclosed-by='\"' \
--fields-terminated-by=',' \
-T ${LOCAL_BACKUP_DIR}/mysqldump/${database} \
${database}
done
fi
## example with two dumps for each table (.sql/.txt) for all databases # MySQL compressed dump for each database
# for i in $(echo SHOW DATABASES | mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 \ mysqlEachDBDump=false
# | egrep -v "^(Database|information_schema|performance_schema|sys)" ); \ if $mysqlEachDBDump; then
# do mkdir -p -m 700 /home/mysqldump/$i ; chown -RL mysql /home/mysqldump ; \ mysqlDatabases 3306
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 -Q --opt --events --hex-blob --skip-comments \ mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysqldump/
# --fields-enclosed-by='\"' --fields-terminated-by=',' -T /home/mysqldump/$i $i; done for database in ${databases}; do
mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force\
-P 3306 --events --hex-blob $database \
| $GZIP_BIN --best \
> ${LOCAL_BACKUP_DIR}/mysqldump/${database}.sql.gz
done
fi
## example with compressed SQL dump for each databases # MySQL uncompressed dump for selected database(s)
# mkdir -p -m 700 /home/mysqldump/ mysqlSelectedDBDump=false
# for i in $(mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 -e 'show databases' -s --skip-column-names \ if $mysqlSelectedDBDump; then
# | egrep -v "^(Database|information_schema|performance_schema|sys)"); do databases="exampledb1 exampledb2"
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 --events --hex-blob $i | gzip --best > /home/mysqldump/${i}.sql.gz for database in ${databases}; do
# done mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysqldump/${database}
chown -RL mysql ${LOCAL_BACKUP_DIR}/mysqldump/
## example with *one* uncompressed SQL dump for *one* database (MYBASE) mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -Q \
# mkdir -p -m 700 /home/mysqldump/MYBASE --opt --events --hex-blob --skip-comments -T \
# chown -RL mysql /home/mysqldump/ ${LOCAL_BACKUP_DIR}/mysqldump/${database} ${database}
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -Q \ done
# --opt --events --hex-blob --skip-comments -T /home/mysqldump/MYBASE MYBASE fi
## example with mysqlhotcopy
# mkdir -p -m 700 /home/mysqlhotcopy/
# mysqlhotcopy BASE /home/mysqlhotcopy/
## example for multiples MySQL instances ## example for multiples MySQL instances
# mysqladminpasswd=$(grep -m1 'password = .*' /root/.my.cnf|cut -d" " -f3) # mysqladminpasswd=$(grep -m1 'password = .*' /root/.my.cnf|cut -d" " -f3)