From 6d48acffb0f7ddc6c69da6edd42aefee7cae13d1 Mon Sep 17 00:00:00 2001 From: bourasom Date: Mon, 4 Mar 2019 12:06:39 +0100 Subject: [PATCH 01/53] backup: general script --- srv/exo/bin/_setenv.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 srv/exo/bin/_setenv.sh diff --git a/srv/exo/bin/_setenv.sh b/srv/exo/bin/_setenv.sh new file mode 100755 index 0000000..0e98734 --- /dev/null +++ b/srv/exo/bin/_setenv.sh @@ -0,0 +1,27 @@ +#!/bin/sh -ue +# +# Copyright (C) 2003-2013 eXo Platform SAS. +# +# This is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 3 of +# the License, or (at your option) any later version. +# +# This software 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this software; if not, write to the Free +# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA, or see the FSF site: http://www.fsf.org. +# + +# Directories +PLF_SRV_DIR=/srv/exo +PLF_LOG_DIR=/srv/exo/current/logs +PLF_NAME=exo +EXO_PLF_SERVER=${PLF_SERVER} +EXO_ES_SERVER=${ES_SERVER} +EXO_USER=exo From a0f93a28feea6ddc2c02a5185156e75a24b4bd22 Mon Sep 17 00:00:00 2001 From: bourasom Date: Mon, 4 Mar 2019 12:19:07 +0100 Subject: [PATCH 02/53] Stop eXo and ES --- srv/exo/bin/_functions.sh | 8 ++++ srv/exo/bin/_startElasticSearch.sh | 24 ++++++++++++ srv/exo/bin/_startPLF.sh | 59 ++++++++++++++++++++++++++++++ srv/exo/bin/_stopElasticSearch.sh | 26 +++++++++++++ srv/exo/bin/_stopPLF.sh | 30 +++++++++++++++ srv/exo/bin/start_plateforme.sh | 24 ++++++++++++ srv/exo/bin/stop_plateforme.sh | 25 +++++++++++++ 7 files changed, 196 insertions(+) create mode 100755 srv/exo/bin/_functions.sh create mode 100755 srv/exo/bin/_startElasticSearch.sh create mode 100755 srv/exo/bin/_startPLF.sh create mode 100755 srv/exo/bin/_stopElasticSearch.sh create mode 100755 srv/exo/bin/_stopPLF.sh create mode 100755 srv/exo/bin/start_plateforme.sh create mode 100755 srv/exo/bin/stop_plateforme.sh diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh new file mode 100755 index 0000000..36c4272 --- /dev/null +++ b/srv/exo/bin/_functions.sh @@ -0,0 +1,8 @@ +#!/bin/bash -eu + +#Activate aliases usage in scripts +shopt -s expand_aliases + +# Various command aliases +alias display_time='/usr/bin/time -f "[INFO] Return code : %x\n[INFO] Time report (sec) : \t%e real,\t%U user,\t%S system"' +alias display_date='/bin/date +"%Y-%m-%d %H:%M:%S"' diff --git a/srv/exo/bin/_startElasticSearch.sh b/srv/exo/bin/_startElasticSearch.sh new file mode 100755 index 0000000..0596de8 --- /dev/null +++ b/srv/exo/bin/_startElasticSearch.sh @@ -0,0 +1,24 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then + + echo "" + ACTION=start + sudo systemctl ${ACTION} elasticsearch +fi +echo "[INFO] Done" diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh new file mode 100755 index 0000000..ad1d5d0 --- /dev/null +++ b/srv/exo/bin/_startPLF.sh @@ -0,0 +1,59 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Start PLF server on ${HOSTNAME} ..." +echo "[INFO] =======================================" +if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then + + echo "" + ACTION=start + set +u + if [ -n "${EXO_DEBUG}" ] + then + ACTION=debug + fi + set -u + + sudo systemctl ${ACTION} ${PLF_NAME} + echo -n "[INFO] $(display_date) Waiting for logs availability ." + while [ true ]; + do + if [ -e "${PLF_LOG_DIR}/platform.log" ]; then + break + fi + echo -n "." + sleep 1 + done + echo -n " OK" + echo "" + + # Display logs + tail -f ${PLF_LOG_DIR}/platform.log & + _tailPID=$! + # Check for the end of startup + set +e + while [ true ]; + do + if grep -q "Server startup in" ${PLF_LOG_DIR}/platform.log; then + kill ${_tailPID} + wait ${_tailPID} 2> /dev/null + break + fi + done + set -e + +else + echo "[WARN] $(display_date) ${PLF_NAME} not deployed. Cannot be started !!!" +fi +echo "[INFO] $(display_date) Done" diff --git a/srv/exo/bin/_stopElasticSearch.sh b/srv/exo/bin/_stopElasticSearch.sh new file mode 100755 index 0000000..2445fa4 --- /dev/null +++ b/srv/exo/bin/_stopElasticSearch.sh @@ -0,0 +1,26 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Stopping ElasticSearch server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then + + echo "" + ACTION=stop + sudo systemctl ${ACTION} elasticsearch +else + echo "[WARN] $(display_date) ElasticSearch not deployed. Cannot be stopped !!!" +fi +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopPLF.sh new file mode 100755 index 0000000..480ada1 --- /dev/null +++ b/srv/exo/bin/_stopPLF.sh @@ -0,0 +1,30 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Stop PLF on ${HOSTNAME} ..." +echo "[INFO] =======================================" + +if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then + sudo systemctl stop ${PLF_NAME} + if [ "$(pgrep -U $(id -u) soffice)" != "" ]; then + echo "[INFO] $(display_date) soffice processes of ${USER} exist. Killing them ..." + pgrep -U $(id -u) soffice | xargs kill -9 + fi +else + echo "[WARN] ${PLF_NAME} not deployed. Cannot be stopped !!!" +fi + +echo "[INFO] $(display_date) Done" + diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateforme.sh new file mode 100755 index 0000000..85fd9ea --- /dev/null +++ b/srv/exo/bin/start_plateforme.sh @@ -0,0 +1,24 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +echo $SCRIPT_NAME +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Start ${PLF_NAME} server on ${HOSTNAME} ..." +echo "[INFO] =======================================" + +#ssh ${COMMUNITY_MYSQL_SERVER} ${SCRIPT_DIR}/_startDatabase.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh + +echo "[INFO] $(display_date) Done" + diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateforme.sh new file mode 100755 index 0000000..cf4cc45 --- /dev/null +++ b/srv/exo/bin/stop_plateforme.sh @@ -0,0 +1,25 @@ + +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + + +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." +echo "[INFO] =======================================" + +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh +#ssh ${COMMUNITY_MYSQL_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh + +echo "[INFO] $(display_date) Done" From 756d64e4adc399bdebe4e0e6fbd2040c9af51e65 Mon Sep 17 00:00:00 2001 From: bourasom Date: Mon, 4 Mar 2019 19:53:41 +0100 Subject: [PATCH 03/53] Mongo and db start/stop --- srv/exo/bin/_setenv.sh | 2 ++ srv/exo/bin/_startDataBase.sh | 24 ++++++++++++++++++++++++ srv/exo/bin/_startMongo.sh | 24 ++++++++++++++++++++++++ srv/exo/bin/_stopDatabase.sh | 25 +++++++++++++++++++++++++ srv/exo/bin/_stopMongo.sh | 25 +++++++++++++++++++++++++ srv/exo/bin/start_plateforme.sh | 4 ++-- srv/exo/bin/stop_plateforme.sh | 3 ++- 7 files changed, 104 insertions(+), 3 deletions(-) create mode 100755 srv/exo/bin/_startDataBase.sh create mode 100755 srv/exo/bin/_startMongo.sh create mode 100755 srv/exo/bin/_stopDatabase.sh create mode 100755 srv/exo/bin/_stopMongo.sh diff --git a/srv/exo/bin/_setenv.sh b/srv/exo/bin/_setenv.sh index 0e98734..91dae51 100755 --- a/srv/exo/bin/_setenv.sh +++ b/srv/exo/bin/_setenv.sh @@ -24,4 +24,6 @@ PLF_LOG_DIR=/srv/exo/current/logs PLF_NAME=exo EXO_PLF_SERVER=${PLF_SERVER} EXO_ES_SERVER=${ES_SERVER} +EXO_DB_SERVER=${DB_SERVER} +EXO_MONGO_SERVER=${MONGO_SERVER} EXO_USER=exo diff --git a/srv/exo/bin/_startDataBase.sh b/srv/exo/bin/_startDataBase.sh new file mode 100755 index 0000000..f0f3ee5 --- /dev/null +++ b/srv/exo/bin/_startDataBase.sh @@ -0,0 +1,24 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Starting Database server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /lib/systemd/system/mysql.service ]; then + + echo "" + ACTION=start + sudo systemctl ${ACTION} mysql +fi +echo "[INFO] Done" diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh new file mode 100755 index 0000000..2661624 --- /dev/null +++ b/srv/exo/bin/_startMongo.sh @@ -0,0 +1,24 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Starting MongoDB server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /lib/systemd/system/mongod.service ]; then + + echo "" + ACTION=start + sudo systemctl ${ACTION} mongod +fi +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh new file mode 100755 index 0000000..6d15279 --- /dev/null +++ b/srv/exo/bin/_stopDatabase.sh @@ -0,0 +1,25 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Stopping Database server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /lib/systemd/system/mysql.service ]; then + echo "" + ACTION=stop + sudo systemctl ${ACTION} mysql +else + echo "[WARN] $(display_date) Database not deployed. Cannot be stopped !!!" +fi +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh new file mode 100755 index 0000000..65e1500 --- /dev/null +++ b/srv/exo/bin/_stopMongo.sh @@ -0,0 +1,25 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "[INFO] =======================================" +echo "[INFO] Stoping MongoDB server on ${HOSTNAME}..." +echo "[INFO] =======================================" + +if [ -e /lib/systemd/system/mongod.service ]; then + + echo "" + ACTION=stop + sudo systemctl ${ACTION} mongod +fi +echo "[INFO] Done" + diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateforme.sh index 85fd9ea..06a1bfa 100755 --- a/srv/exo/bin/start_plateforme.sh +++ b/srv/exo/bin/start_plateforme.sh @@ -15,8 +15,8 @@ echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Start ${PLF_NAME} server on ${HOSTNAME} ..." echo "[INFO] =======================================" - -#ssh ${COMMUNITY_MYSQL_SERVER} ${SCRIPT_DIR}/_startDatabase.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDataBase.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateforme.sh index cf4cc45..1a215a9 100755 --- a/srv/exo/bin/stop_plateforme.sh +++ b/srv/exo/bin/stop_plateforme.sh @@ -20,6 +20,7 @@ echo "[INFO] =======================================" ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh -#ssh ${COMMUNITY_MYSQL_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh echo "[INFO] $(display_date) Done" From 9a4b33416b3ab7918d5a950df8b00b78a773d911 Mon Sep 17 00:00:00 2001 From: bourasom Date: Wed, 6 Mar 2019 08:44:10 +0100 Subject: [PATCH 04/53] backup database --- srv/exo/bin/_dumpDatabase.sh | 29 +++++++++++++++++++++++++ srv/exo/bin/_functions.sh | 25 ++++++++++++++++++++++ srv/exo/bin/_setenv.sh | 3 +++ srv/exo/bin/backup_plateforme.sh | 36 ++++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100755 srv/exo/bin/_dumpDatabase.sh create mode 100755 srv/exo/bin/backup_plateforme.sh diff --git a/srv/exo/bin/_dumpDatabase.sh b/srv/exo/bin/_dumpDatabase.sh new file mode 100755 index 0000000..0165b20 --- /dev/null +++ b/srv/exo/bin/_dumpDatabase.sh @@ -0,0 +1,29 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +DUMP_OPTIONS="--single-transaction" + +# Initialize working directory +rm -rf ${DB_DUMP_WORKING_DIR}/* +pushd ${DB_DUMP_WORKING_DIR} > /dev/null 2>&1 + +echo "[INFO] =======================================" +echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${DB_DUMP_WORKING_DIR} ..." +echo "[INFO] =======================================" + + +display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${DB_DUMP_WORKING_DIR}/${PLF_DATABASE_NAME}-dumpDataBase.sql + +echo "[INFO] Done" + +popd > /dev/null 2>&1 \ No newline at end of file diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index 36c4272..f55591e 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -6,3 +6,28 @@ shopt -s expand_aliases # Various command aliases alias display_time='/usr/bin/time -f "[INFO] Return code : %x\n[INFO] Time report (sec) : \t%e real,\t%U user,\t%S system"' alias display_date='/bin/date +"%Y-%m-%d %H:%M:%S"' + +# $1 : Startup time +# $2 : End time +delay() { + if [ $# -lt 2 ]; then + echo "" + echo "[ERROR] No enough parameters for function delay !" + exit 1; + fi + local _start=$1 + local _end=$2 + echo "$(( (_end - _start)/3600 )) hour(s) $(( ((_end - _start) % 3600) / 60 )) minute(s) $(( (_end - _start) % 60 )) second(s)" +} + +# $1 : Message +# $2 : Startup time +# $3 : End time +display_delay() { + if [ $# -lt 3 ]; then + echo "" + echo "[ERROR] No enough parameters for function display_delay !" + exit 1; + fi + echo "[INFO] $1: $(delay $2 $3) ." +} diff --git a/srv/exo/bin/_setenv.sh b/srv/exo/bin/_setenv.sh index 91dae51..b7e82c4 100755 --- a/srv/exo/bin/_setenv.sh +++ b/srv/exo/bin/_setenv.sh @@ -27,3 +27,6 @@ EXO_ES_SERVER=${ES_SERVER} EXO_DB_SERVER=${DB_SERVER} EXO_MONGO_SERVER=${MONGO_SERVER} EXO_USER=exo +#Database Backup +DB_DUMP_WORKING_DIR=/srv/backup +PLF_DATABASE_NAME=exo diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh new file mode 100755 index 0000000..509c893 --- /dev/null +++ b/srv/exo/bin/backup_plateforme.sh @@ -0,0 +1,36 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +SCRIPT_START_TIME=$(date +%s) + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +DOWNTIME_START_TIME=$(date +%s) +# Stop it +#ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh + +# Dump database +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpDatabase.sh + +# Start it + +#ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +DOWNTIME_END_TIME=$(date +%s) + +SCRIPT_END_TIME=$(date +%s) + +echo "[INFO] =======================================" +echo "[INFO] = Backup ended -" `date` +echo "[INFO] =--------------------------------------" +display_delay "= -> Process duration" $SCRIPT_START_TIME $SCRIPT_END_TIME +echo "[INFO] =--------------------------------------" +display_delay "= -> Service downtime" $DOWNTIME_START_TIME $DOWNTIME_END_TIME +echo "[INFO] =======================================" \ No newline at end of file From d84faae249a569df39c2b38954a6710afebd1363 Mon Sep 17 00:00:00 2001 From: bourasom Date: Wed, 6 Mar 2019 18:04:39 +0100 Subject: [PATCH 05/53] backup data and mongodb --- srv/exo/bin/_dumpData.sh | 27 +++++++++++++++++++++++++++ srv/exo/bin/_dumpMongoDb.sh | 31 +++++++++++++++++++++++++++++++ srv/exo/bin/_setenv.sh | 6 ++++++ srv/exo/bin/backup_plateforme.sh | 8 ++++++-- 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 srv/exo/bin/_dumpData.sh create mode 100644 srv/exo/bin/_dumpMongoDb.sh diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh new file mode 100644 index 0000000..76eadce --- /dev/null +++ b/srv/exo/bin/_dumpData.sh @@ -0,0 +1,27 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` + +# Initialize working directory +rm -rf ${PLF_BCK_DIR}/* +pushd ${PLF_BCK_DIR} > /dev/null 2>&1 + +echo "[INFO] =======================================" +echo "[INFO] = Compressing ${PLF_NAME} data into ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] =======================================" +pushd ${PLF_BCK_DIR} > /dev/null 2>&1 +display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data +pushd ${PLF_BCK_DIR} > /dev/null 2>&1 +popd > /dev/null 2>&1 +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh new file mode 100644 index 0000000..9d83f48 --- /dev/null +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -0,0 +1,31 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +# Initialize working directory +rm -rf ${MONGODB_DUMP_WORKING_DIR}/* +pushd ${MONGODB_DUMP_WORKING_DIR} > /dev/null 2>&1 + +# settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps + +echo "[INFO] $(display_date)" +echo "[INFO] =======================================" +echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${MONGODB_DUMP_WORKING_DIR} ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" + +display_time sudo mongodump -o ${MONGODB_DUMP_WORKING_DIR} --db=${EXO_CHAT_MONGODB_NAME} + +echo "[INFO] Done" +echo "[INFO] $(display_date)" + +popd > /dev/null 2>&1 \ No newline at end of file diff --git a/srv/exo/bin/_setenv.sh b/srv/exo/bin/_setenv.sh index b7e82c4..4b05139 100755 --- a/srv/exo/bin/_setenv.sh +++ b/srv/exo/bin/_setenv.sh @@ -30,3 +30,9 @@ EXO_USER=exo #Database Backup DB_DUMP_WORKING_DIR=/srv/backup PLF_DATABASE_NAME=exo +#Data Backup +PLF_BCK_DIR=/srv/backup +DATA_WORKING_DIR=/srv/data/exo +#Mongo Backup +MONGODB_DUMP_WORKING_DIR=/srv/backup +EXO_CHAT_MONGODB_NAME=chat \ No newline at end of file diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index 509c893..7d9149b 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -15,14 +15,18 @@ source ${SCRIPT_DIR}/_functions.sh DOWNTIME_START_TIME=$(date +%s) # Stop it -#ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +# Dump data +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh # Dump database ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpDatabase.sh +# Dump MongoDB +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh # Start it -#ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh DOWNTIME_END_TIME=$(date +%s) SCRIPT_END_TIME=$(date +%s) From 1a687ae245dcd2e7807670b20ff16dceddd2efeb Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Thu, 7 Mar 2019 20:24:16 +0100 Subject: [PATCH 06/53] Update srv/exo/bin/_dumpDatabase.sh Co-Authored-By: bourasom --- srv/exo/bin/_dumpDatabase.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/srv/exo/bin/_dumpDatabase.sh b/srv/exo/bin/_dumpDatabase.sh index 0165b20..d724437 100755 --- a/srv/exo/bin/_dumpDatabase.sh +++ b/srv/exo/bin/_dumpDatabase.sh @@ -21,9 +21,8 @@ echo "[INFO] =======================================" echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${DB_DUMP_WORKING_DIR} ..." echo "[INFO] =======================================" - display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${DB_DUMP_WORKING_DIR}/${PLF_DATABASE_NAME}-dumpDataBase.sql echo "[INFO] Done" -popd > /dev/null 2>&1 \ No newline at end of file +popd > /dev/null 2>&1 From c83409f384fd41d61e44ac71c3ff14fba2ef17ad Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Thu, 7 Mar 2019 20:24:29 +0100 Subject: [PATCH 07/53] Update srv/exo/bin/_dumpDatabase.sh Co-Authored-By: bourasom --- srv/exo/bin/_dumpDatabase.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/srv/exo/bin/_dumpDatabase.sh b/srv/exo/bin/_dumpDatabase.sh index d724437..b403fdf 100755 --- a/srv/exo/bin/_dumpDatabase.sh +++ b/srv/exo/bin/_dumpDatabase.sh @@ -20,6 +20,7 @@ pushd ${DB_DUMP_WORKING_DIR} > /dev/null 2>&1 echo "[INFO] =======================================" echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${DB_DUMP_WORKING_DIR} ..." echo "[INFO] =======================================" +echo "[INFO] $(display_date)" display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${DB_DUMP_WORKING_DIR}/${PLF_DATABASE_NAME}-dumpDataBase.sql From cf951259f9e051fa56711bf24fa2e29e8fb3edec Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Thu, 7 Mar 2019 20:25:53 +0100 Subject: [PATCH 08/53] Update srv/exo/bin/_dumpDatabase.sh Co-Authored-By: bourasom --- srv/exo/bin/_dumpDatabase.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/srv/exo/bin/_dumpDatabase.sh b/srv/exo/bin/_dumpDatabase.sh index b403fdf..cced952 100755 --- a/srv/exo/bin/_dumpDatabase.sh +++ b/srv/exo/bin/_dumpDatabase.sh @@ -24,6 +24,7 @@ echo "[INFO] $(display_date)" display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${DB_DUMP_WORKING_DIR}/${PLF_DATABASE_NAME}-dumpDataBase.sql -echo "[INFO] Done" +echo "[INFO] $(display_date)" +echo "[INFO] Done popd > /dev/null 2>&1 From 30521b11b02badab73dcc1fca330a2caaca0d843 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Thu, 7 Mar 2019 20:32:56 +0100 Subject: [PATCH 09/53] Update srv/exo/bin/_dumpData.sh Co-Authored-By: bourasom --- srv/exo/bin/_dumpData.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index 76eadce..f34be46 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -20,8 +20,9 @@ pushd ${PLF_BCK_DIR} > /dev/null 2>&1 echo "[INFO] =======================================" echo "[INFO] = Compressing ${PLF_NAME} data into ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" +echo "[INFO] $(display_date)" pushd ${PLF_BCK_DIR} > /dev/null 2>&1 display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data pushd ${PLF_BCK_DIR} > /dev/null 2>&1 popd > /dev/null 2>&1 -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" From 8b95d5d240d4600b17d5686d80eded495dc130ab Mon Sep 17 00:00:00 2001 From: bourasom Date: Thu, 7 Mar 2019 21:12:49 +0100 Subject: [PATCH 10/53] Update backup PR --- srv/exo/bin/_dumpData.sh | 4 ++-- srv/exo/bin/_dumpMongoDb.sh | 2 +- .../{_dumpDatabase.sh => _dumpMysqlDatabase.sh} | 2 +- srv/exo/bin/{_setenv.sh => _setenv-template.sh} | 6 +++--- srv/exo/bin/_startDataBase.sh | 14 +++++--------- srv/exo/bin/_startElasticSearch.sh | 14 +++++--------- srv/exo/bin/_startMongo.sh | 14 +++++--------- srv/exo/bin/_startPLF.sh | 4 ++-- srv/exo/bin/_stopDatabase.sh | 4 ++-- srv/exo/bin/_stopElasticSearch.sh | 4 ++-- srv/exo/bin/_stopMongo.sh | 5 ++--- srv/exo/bin/_stopPLF.sh | 7 ++----- srv/exo/bin/backup_plateforme.sh | 2 +- srv/exo/bin/start_plateforme.sh | 14 ++++++-------- srv/exo/bin/stop_plateforme.sh | 12 ++++++------ 15 files changed, 45 insertions(+), 63 deletions(-) rename srv/exo/bin/{_dumpDatabase.sh => _dumpMysqlDatabase.sh} (95%) rename srv/exo/bin/{_setenv.sh => _setenv-template.sh} (90%) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index f34be46..3b81e19 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -25,4 +25,4 @@ pushd ${PLF_BCK_DIR} > /dev/null 2>&1 display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data pushd ${PLF_BCK_DIR} > /dev/null 2>&1 popd > /dev/null 2>&1 -echo "[INFO] Done" +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index 9d83f48..83c31aa 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_dumpDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh similarity index 95% rename from srv/exo/bin/_dumpDatabase.sh rename to srv/exo/bin/_dumpMysqlDatabase.sh index cced952..0e01581 100755 --- a/srv/exo/bin/_dumpDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_setenv.sh b/srv/exo/bin/_setenv-template.sh similarity index 90% rename from srv/exo/bin/_setenv.sh rename to srv/exo/bin/_setenv-template.sh index 4b05139..eaabff9 100755 --- a/srv/exo/bin/_setenv.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -28,11 +28,11 @@ EXO_DB_SERVER=${DB_SERVER} EXO_MONGO_SERVER=${MONGO_SERVER} EXO_USER=exo #Database Backup -DB_DUMP_WORKING_DIR=/srv/backup +DB_DUMP_WORKING_DIR=/srv/backup/tmp_db PLF_DATABASE_NAME=exo #Data Backup -PLF_BCK_DIR=/srv/backup +PLF_BCK_DIR=/srv/backup/tmp_data DATA_WORKING_DIR=/srv/data/exo #Mongo Backup -MONGODB_DUMP_WORKING_DIR=/srv/backup +MONGODB_DUMP_WORKING_DIR=/srv/backup/tmp_mongodb EXO_CHAT_MONGODB_NAME=chat \ No newline at end of file diff --git a/srv/exo/bin/_startDataBase.sh b/srv/exo/bin/_startDataBase.sh index f0f3ee5..229d9e4 100755 --- a/srv/exo/bin/_startDataBase.sh +++ b/srv/exo/bin/_startDataBase.sh @@ -7,18 +7,14 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "[INFO] =======================================" echo "[INFO] Starting Database server on ${HOSTNAME}..." echo "[INFO] =======================================" - -if [ -e /lib/systemd/system/mysql.service ]; then - - echo "" - ACTION=start - sudo systemctl ${ACTION} mysql -fi -echo "[INFO] Done" +echo "" +ACTION=start +sudo systemctl ${ACTION} mysql +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startElasticSearch.sh b/srv/exo/bin/_startElasticSearch.sh index 0596de8..33dc220 100755 --- a/srv/exo/bin/_startElasticSearch.sh +++ b/srv/exo/bin/_startElasticSearch.sh @@ -7,18 +7,14 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "[INFO] =======================================" echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." echo "[INFO] =======================================" - -if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then - - echo "" - ACTION=start - sudo systemctl ${ACTION} elasticsearch -fi -echo "[INFO] Done" +echo "" +ACTION=start +sudo systemctl ${ACTION} elasticsearch +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh index 2661624..f08447c 100755 --- a/srv/exo/bin/_startMongo.sh +++ b/srv/exo/bin/_startMongo.sh @@ -7,18 +7,14 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "[INFO] =======================================" echo "[INFO] Starting MongoDB server on ${HOSTNAME}..." echo "[INFO] =======================================" - -if [ -e /lib/systemd/system/mongod.service ]; then - - echo "" - ACTION=start - sudo systemctl ${ACTION} mongod -fi -echo "[INFO] Done" +echo "" +ACTION=start +sudo systemctl ${ACTION} mongod +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh index ad1d5d0..b41edd8 100755 --- a/srv/exo/bin/_startPLF.sh +++ b/srv/exo/bin/_startPLF.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "" @@ -56,4 +56,4 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N else echo "[WARN] $(display_date) ${PLF_NAME} not deployed. Cannot be started !!!" fi -echo "[INFO] $(display_date) Done" +echo "[INFO] $(display_date) Done" \ No newline at end of file diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh index 6d15279..7efb865 100755 --- a/srv/exo/bin/_stopDatabase.sh +++ b/srv/exo/bin/_stopDatabase.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -22,4 +22,4 @@ if [ -e /lib/systemd/system/mysql.service ]; then else echo "[WARN] $(display_date) Database not deployed. Cannot be stopped !!!" fi -echo "[INFO] Done" +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_stopElasticSearch.sh b/srv/exo/bin/_stopElasticSearch.sh index 2445fa4..1374dd1 100755 --- a/srv/exo/bin/_stopElasticSearch.sh +++ b/srv/exo/bin/_stopElasticSearch.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -23,4 +23,4 @@ if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then else echo "[WARN] $(display_date) ElasticSearch not deployed. Cannot be stopped !!!" fi -echo "[INFO] Done" +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh index 65e1500..c0c7f59 100755 --- a/srv/exo/bin/_stopMongo.sh +++ b/srv/exo/bin/_stopMongo.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -21,5 +21,4 @@ if [ -e /lib/systemd/system/mongod.service ]; then ACTION=stop sudo systemctl ${ACTION} mongod fi -echo "[INFO] Done" - +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopPLF.sh index 480ada1..5295436 100755 --- a/srv/exo/bin/_stopPLF.sh +++ b/srv/exo/bin/_stopPLF.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -24,7 +24,4 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N fi else echo "[WARN] ${PLF_NAME} not deployed. Cannot be stopped !!!" -fi - -echo "[INFO] $(display_date) Done" - +fi \ No newline at end of file diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index 7d9149b..b92dfbc 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -9,7 +9,7 @@ SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_START_TIME=$(date +%s) # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateforme.sh index 06a1bfa..88eaa91 100755 --- a/srv/exo/bin/start_plateforme.sh +++ b/srv/exo/bin/start_plateforme.sh @@ -8,17 +8,15 @@ echo $SCRIPT_NAME SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Start ${PLF_NAME} server on ${HOSTNAME} ..." echo "[INFO] =======================================" -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDataBase.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh - -echo "[INFO] $(display_date) Done" - +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDataBase.sh +ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +echo "[INFO] $(display_date) Done" \ No newline at end of file diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateforme.sh index 1a215a9..a08a35c 100755 --- a/srv/exo/bin/stop_plateforme.sh +++ b/srv/exo/bin/stop_plateforme.sh @@ -8,7 +8,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv.sh +source ${SCRIPT_DIR}/_setenv-template.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -18,9 +18,9 @@ echo "[INFO] =======================================" echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." echo "[INFO] =======================================" -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh +ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh -echo "[INFO] $(display_date) Done" +echo "[INFO] $(display_date) Done" \ No newline at end of file From 14b02439b8d7d989b23bf6a493876ee09b7a3e6a Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 8 Mar 2019 08:47:20 +0100 Subject: [PATCH 11/53] Abort platform startup when errors in logs --- srv/exo/bin/_startPLF.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh index b41edd8..04a59f3 100755 --- a/srv/exo/bin/_startPLF.sh +++ b/srv/exo/bin/_startPLF.sh @@ -45,6 +45,13 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N set +e while [ true ]; do + if grep -q "ERROR" ${PLF_LOG_DIR}/platform.log; then + sudo systemctl stop ${PLF_NAME} + echo -n "[ERROR] $(display_date) Startup aborted due to logs errors." + kill ${_tailPID} + wait ${_tailPID} 2> /dev/null + break + fi if grep -q "Server startup in" ${PLF_LOG_DIR}/platform.log; then kill ${_tailPID} wait ${_tailPID} 2> /dev/null From f40222cd1e2c4eb89e5a8b8ebcee0426dc2b9ac4 Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 8 Mar 2019 17:13:31 +0100 Subject: [PATCH 12/53] Add rsync option and es backup --- srv/exo/bin/_dumpData.sh | 13 +++++++------ srv/exo/bin/_dumpElasticSearch.sh | 29 +++++++++++++++++++++++++++++ srv/exo/bin/_dumpMongoDb.sh | 10 ++++++---- srv/exo/bin/_dumpMysqlDatabase.sh | 11 ++++++----- srv/exo/bin/_setenv-template.sh | 12 ++++++++---- srv/exo/bin/backup_plateforme.sh | 26 ++++++++++++++++---------- 6 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 srv/exo/bin/_dumpElasticSearch.sh diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index 3b81e19..fbd9957 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -14,15 +14,16 @@ source ${SCRIPT_DIR}/_functions.sh SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` # Initialize working directory -rm -rf ${PLF_BCK_DIR}/* -pushd ${PLF_BCK_DIR} > /dev/null 2>&1 +mkdir -p ${BACKUP_WORKING_DIR}/tmp_data +rm -rf ${BACKUP_WORKING_DIR}/tmp_data/* +pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Compressing ${PLF_NAME} data into ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -pushd ${PLF_BCK_DIR} > /dev/null 2>&1 -display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${PLF_BCK_DIR}/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data -pushd ${PLF_BCK_DIR} > /dev/null 2>&1 +pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 +display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data +pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 popd > /dev/null 2>&1 echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_dumpElasticSearch.sh b/srv/exo/bin/_dumpElasticSearch.sh new file mode 100644 index 0000000..f803322 --- /dev/null +++ b/srv/exo/bin/_dumpElasticSearch.sh @@ -0,0 +1,29 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Load env settings +source ${SCRIPT_DIR}/_setenv-template.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` + +# Initialize working directory +mkdir -p ${BACKUP_WORKING_DIR}/tmp_elastic +rm -rf ${BACKUP_WORKING_DIR}/tmp_elastic/* +pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 + +echo "[INFO] =======================================" +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-ES-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" +pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 +display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-ES-${SCRIPT_DATE}.tar.bz2 elasticsearch +pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 +popd > /dev/null 2>&1 +echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index 83c31aa..d792e64 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -12,18 +12,20 @@ source ${SCRIPT_DIR}/_setenv-template.sh source ${SCRIPT_DIR}/_functions.sh # Initialize working directory -rm -rf ${MONGODB_DUMP_WORKING_DIR}/* -pushd ${MONGODB_DUMP_WORKING_DIR} > /dev/null 2>&1 +mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo +rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* +pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ > /dev/null 2>&1 # settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps echo "[INFO] $(display_date)" echo "[INFO] =======================================" -echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${MONGODB_DUMP_WORKING_DIR} ..." +echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${BACKUP_WORKING_DIR}/tmp_mongo ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo mongodump -o ${MONGODB_DUMP_WORKING_DIR} --db=${EXO_CHAT_MONGODB_NAME} +display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} +#display_time sudo chown -R exo:exo ${BACKUP_WORKING_DIR}/tmp_mongo echo "[INFO] Done" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 0e01581..343991b 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -14,17 +14,18 @@ source ${SCRIPT_DIR}/_functions.sh DUMP_OPTIONS="--single-transaction" # Initialize working directory -rm -rf ${DB_DUMP_WORKING_DIR}/* -pushd ${DB_DUMP_WORKING_DIR} > /dev/null 2>&1 +mkdir -p ${BACKUP_WORKING_DIR}/tmp_db +rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* +pushd ${BACKUP_WORKING_DIR}/tmp_db > /dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${DB_DUMP_WORKING_DIR} ..." +echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${BACKUP_WORKING_DIR}/tmp_db ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${DB_DUMP_WORKING_DIR}/${PLF_DATABASE_NAME}-dumpDataBase.sql +display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDataBase.sql echo "[INFO] $(display_date)" -echo "[INFO] Done +echo "[INFO] Done" popd > /dev/null 2>&1 diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index eaabff9..5e610c9 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -27,12 +27,16 @@ EXO_ES_SERVER=${ES_SERVER} EXO_DB_SERVER=${DB_SERVER} EXO_MONGO_SERVER=${MONGO_SERVER} EXO_USER=exo +BACKUP_DIR=/srv/backup +BACKUP_WORKING_DIR=/var/backup #Database Backup -DB_DUMP_WORKING_DIR=/srv/backup/tmp_db PLF_DATABASE_NAME=exo #Data Backup -PLF_BCK_DIR=/srv/backup/tmp_data DATA_WORKING_DIR=/srv/data/exo #Mongo Backup -MONGODB_DUMP_WORKING_DIR=/srv/backup/tmp_mongodb -EXO_CHAT_MONGODB_NAME=chat \ No newline at end of file +EXO_CHAT_MONGODB_NAME=chat +#Elastic Backup +ELASTIC_WORKING_DIR=/srv/data/ +#DOWNLOAD BACKUP +DOWNLOAD_BACKUP=false + diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index b92dfbc..b1780de 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -15,22 +15,28 @@ source ${SCRIPT_DIR}/_functions.sh DOWNTIME_START_TIME=$(date +%s) # Stop it -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh # Dump data -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh # Dump database -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpDatabase.sh +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh # Dump MongoDB -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh - +ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh +# Dump Elastic +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticSearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh # Start it - -ssh -i ${SCRIPT_DIR}/id_rsa ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh -DOWNTIME_END_TIME=$(date +%s) - +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +DOWNTIME_END_TIME=$(date +%s) +if [ ${DOWNLOAD_BACKUP} ]; then + rsync -avz ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} + rsync -avz ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} + rsync -avz ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} + rsync -avz ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} +fi SCRIPT_END_TIME=$(date +%s) - echo "[INFO] =======================================" echo "[INFO] = Backup ended -" `date` echo "[INFO] =--------------------------------------" From ecd6561647ce44adc00215f5f2f0af784964e597 Mon Sep 17 00:00:00 2001 From: bourasom Date: Tue, 9 Apr 2019 18:52:08 +0200 Subject: [PATCH 13/53] update backup scripts --- srv/exo/bin/_dumpData.sh | 2 +- ...umpElasticSearch.sh => _dumpElasticsearch.sh} | 4 ++-- srv/exo/bin/_dumpMongoDb.sh | 14 ++++++++------ srv/exo/bin/_dumpMysqlDatabase.sh | 8 +++----- .../bin/{_startDataBase.sh => _startDatabase.sh} | 2 +- ...rtElasticSearch.sh => _startElasticsearch.sh} | 2 +- srv/exo/bin/_startMongo.sh | 2 +- srv/exo/bin/_startPLF.sh | 2 +- srv/exo/bin/_stopDatabase.sh | 2 +- ...topElasticSearch.sh => _stopElasticsearch.sh} | 2 +- srv/exo/bin/_stopMongo.sh | 2 +- srv/exo/bin/_stopPLF.sh | 2 +- srv/exo/bin/backup_plateforme.sh | 16 ++++++++-------- srv/exo/bin/start_plateforme.sh | 2 +- srv/exo/bin/stop_plateforme.sh | 2 +- 15 files changed, 32 insertions(+), 32 deletions(-) rename srv/exo/bin/{_dumpElasticSearch.sh => _dumpElasticsearch.sh} (93%) rename srv/exo/bin/{_startDataBase.sh => _startDatabase.sh} (94%) rename srv/exo/bin/{_startElasticSearch.sh => _startElasticsearch.sh} (94%) rename srv/exo/bin/{_stopElasticSearch.sh => _stopElasticsearch.sh} (95%) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index fbd9957..868b272 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_dumpElasticSearch.sh b/srv/exo/bin/_dumpElasticsearch.sh similarity index 93% rename from srv/exo/bin/_dumpElasticSearch.sh rename to srv/exo/bin/_dumpElasticsearch.sh index f803322..7af6c31 100644 --- a/srv/exo/bin/_dumpElasticSearch.sh +++ b/srv/exo/bin/_dumpElasticsearch.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -23,7 +23,7 @@ echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elast echo "[INFO] =======================================" echo "[INFO] $(display_date)" pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 -display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-ES-${SCRIPT_DATE}.tar.bz2 elasticsearch +display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 elasticsearch pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 popd > /dev/null 2>&1 echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index d792e64..f804331 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -15,18 +15,20 @@ source ${SCRIPT_DIR}/_functions.sh mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ > /dev/null 2>&1 +SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` # settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps echo "[INFO] $(display_date)" echo "[INFO] =======================================" -echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${BACKUP_WORKING_DIR}/tmp_mongo ..." +echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" - -display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} -#display_time sudo chown -R exo:exo ${BACKUP_WORKING_DIR}/tmp_mongo - +display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} +echo "[INFO] compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2" +display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 chat +echo "[INFO] Suppress ${BACKUP_WORKING_DIR}/tmp_mongo/chat " +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/chat echo "[INFO] Done" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 343991b..f708243 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -17,15 +17,13 @@ DUMP_OPTIONS="--single-transaction" mkdir -p ${BACKUP_WORKING_DIR}/tmp_db rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* pushd ${BACKUP_WORKING_DIR}/tmp_db > /dev/null 2>&1 +SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` echo "[INFO] =======================================" echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${BACKUP_WORKING_DIR}/tmp_db ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" - -display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} > ${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDataBase.sql - -echo "[INFO] $(display_date)" +display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} | pbzip2 > ${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDatabase.sql.bz2 echo "[INFO] Done" popd > /dev/null 2>&1 diff --git a/srv/exo/bin/_startDataBase.sh b/srv/exo/bin/_startDatabase.sh similarity index 94% rename from srv/exo/bin/_startDataBase.sh rename to srv/exo/bin/_startDatabase.sh index 229d9e4..20c8f64 100755 --- a/srv/exo/bin/_startDataBase.sh +++ b/srv/exo/bin/_startDatabase.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_startElasticSearch.sh b/srv/exo/bin/_startElasticsearch.sh similarity index 94% rename from srv/exo/bin/_startElasticSearch.sh rename to srv/exo/bin/_startElasticsearch.sh index 33dc220..0b8b73a 100755 --- a/srv/exo/bin/_startElasticSearch.sh +++ b/srv/exo/bin/_startElasticsearch.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh index f08447c..9871b4b 100755 --- a/srv/exo/bin/_startMongo.sh +++ b/srv/exo/bin/_startMongo.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh index 04a59f3..f50e5e8 100755 --- a/srv/exo/bin/_startPLF.sh +++ b/srv/exo/bin/_startPLF.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "" diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh index 7efb865..2da24a0 100755 --- a/srv/exo/bin/_stopDatabase.sh +++ b/srv/exo/bin/_stopDatabase.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_stopElasticSearch.sh b/srv/exo/bin/_stopElasticsearch.sh similarity index 95% rename from srv/exo/bin/_stopElasticSearch.sh rename to srv/exo/bin/_stopElasticsearch.sh index 1374dd1..53804d8 100755 --- a/srv/exo/bin/_stopElasticSearch.sh +++ b/srv/exo/bin/_stopElasticsearch.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh index c0c7f59..5453dfa 100755 --- a/srv/exo/bin/_stopMongo.sh +++ b/srv/exo/bin/_stopMongo.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopPLF.sh index 5295436..c05963d 100755 --- a/srv/exo/bin/_stopPLF.sh +++ b/srv/exo/bin/_stopPLF.sh @@ -7,7 +7,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index b1780de..eace7a1 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -9,7 +9,7 @@ SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_START_TIME=$(date +%s) # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh @@ -24,17 +24,17 @@ ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh # Dump MongoDB ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh # Dump Elastic -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticSearch.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh DOWNTIME_END_TIME=$(date +%s) if [ ${DOWNLOAD_BACKUP} ]; then - rsync -avz ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} - rsync -avz ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} - rsync -avz ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} - rsync -avz ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} fi SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateforme.sh index 88eaa91..a10e5a8 100755 --- a/srv/exo/bin/start_plateforme.sh +++ b/srv/exo/bin/start_plateforme.sh @@ -8,7 +8,7 @@ echo $SCRIPT_NAME SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh echo "" diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateforme.sh index a08a35c..792a223 100755 --- a/srv/exo/bin/stop_plateforme.sh +++ b/srv/exo/bin/stop_plateforme.sh @@ -8,7 +8,7 @@ SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Load env settings -source ${SCRIPT_DIR}/_setenv-template.sh +source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh From ca9af65c155dc8cb65315b3fe6e7078d78ad0c47 Mon Sep 17 00:00:00 2001 From: bourasom Date: Thu, 11 Apr 2019 12:43:28 +0200 Subject: [PATCH 14/53] generic systemd cmd function --- srv/exo/bin/_functions.sh | 33 ++++++++++++++++++++++++++++++ srv/exo/bin/_startDatabase.sh | 2 +- srv/exo/bin/_startElasticsearch.sh | 2 +- srv/exo/bin/_startMongo.sh | 2 +- srv/exo/bin/_startPLF.sh | 4 ++-- srv/exo/bin/_stopDatabase.sh | 2 +- srv/exo/bin/_stopElasticsearch.sh | 2 +- srv/exo/bin/_stopMongo.sh | 2 +- srv/exo/bin/_stopPLF.sh | 2 +- 9 files changed, 42 insertions(+), 9 deletions(-) diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index f55591e..6e3e9d8 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -31,3 +31,36 @@ display_delay() { fi echo "[INFO] $1: $(delay $2 $3) ." } + +# $1 : Action +# $2 : Service +systemd_action(){ + if [ $# -lt 2 ]; then + echo "" + echo "[ERROR] No enough parameters for function systemd_action !" + exit 1; + fi + case $1 in + start) + sudo systemctl start $2 + if $(sudo systemctl -q is-active $2); then + echo "[INFO] Service $2 started successfuly" + else + echo "[ERROR] Service $2 failed to start" + exit 1; + fi + ;; + stop) + sudo systemctl stop $2 + ;; + status) + sudo systemctl status $2 + break + ;; + *) + echo "[ERROR] No systemd action defined !" + exit 1; + ;; + esac + +} diff --git a/srv/exo/bin/_startDatabase.sh b/srv/exo/bin/_startDatabase.sh index 20c8f64..0e93e97 100755 --- a/srv/exo/bin/_startDatabase.sh +++ b/srv/exo/bin/_startDatabase.sh @@ -16,5 +16,5 @@ echo "[INFO] Starting Database server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" ACTION=start -sudo systemctl ${ACTION} mysql +systemd_action ${ACTION} mysql echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startElasticsearch.sh b/srv/exo/bin/_startElasticsearch.sh index 0b8b73a..7d7f246 100755 --- a/srv/exo/bin/_startElasticsearch.sh +++ b/srv/exo/bin/_startElasticsearch.sh @@ -16,5 +16,5 @@ echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" ACTION=start -sudo systemctl ${ACTION} elasticsearch +systemd_action ${ACTION} elasticsearch echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh index 9871b4b..8ebd24c 100755 --- a/srv/exo/bin/_startMongo.sh +++ b/srv/exo/bin/_startMongo.sh @@ -16,5 +16,5 @@ echo "[INFO] Starting MongoDB server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" ACTION=start -sudo systemctl ${ACTION} mongod +systemd_action ${ACTION} mongod echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh index f50e5e8..cab1a99 100755 --- a/srv/exo/bin/_startPLF.sh +++ b/srv/exo/bin/_startPLF.sh @@ -25,7 +25,7 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N fi set -u - sudo systemctl ${ACTION} ${PLF_NAME} + systemd_action ${ACTION} ${PLF_NAME} echo -n "[INFO] $(display_date) Waiting for logs availability ." while [ true ]; do @@ -46,7 +46,7 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N while [ true ]; do if grep -q "ERROR" ${PLF_LOG_DIR}/platform.log; then - sudo systemctl stop ${PLF_NAME} + systemd_action stop ${PLF_NAME} echo -n "[ERROR] $(display_date) Startup aborted due to logs errors." kill ${_tailPID} wait ${_tailPID} 2> /dev/null diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh index 2da24a0..41c2ce0 100755 --- a/srv/exo/bin/_stopDatabase.sh +++ b/srv/exo/bin/_stopDatabase.sh @@ -18,7 +18,7 @@ echo "[INFO] =======================================" if [ -e /lib/systemd/system/mysql.service ]; then echo "" ACTION=stop - sudo systemctl ${ACTION} mysql + systemd_action ${ACTION} mysql else echo "[WARN] $(display_date) Database not deployed. Cannot be stopped !!!" fi diff --git a/srv/exo/bin/_stopElasticsearch.sh b/srv/exo/bin/_stopElasticsearch.sh index 53804d8..b52be4a 100755 --- a/srv/exo/bin/_stopElasticsearch.sh +++ b/srv/exo/bin/_stopElasticsearch.sh @@ -19,7 +19,7 @@ if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then echo "" ACTION=stop - sudo systemctl ${ACTION} elasticsearch + systemd_action ${ACTION} elasticsearch else echo "[WARN] $(display_date) ElasticSearch not deployed. Cannot be stopped !!!" fi diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh index 5453dfa..d85dc3d 100755 --- a/srv/exo/bin/_stopMongo.sh +++ b/srv/exo/bin/_stopMongo.sh @@ -19,6 +19,6 @@ if [ -e /lib/systemd/system/mongod.service ]; then echo "" ACTION=stop - sudo systemctl ${ACTION} mongod + systemd_action ${ACTION} mongod fi echo "[INFO] Done" \ No newline at end of file diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopPLF.sh index c05963d..cfbd53d 100755 --- a/srv/exo/bin/_stopPLF.sh +++ b/srv/exo/bin/_stopPLF.sh @@ -17,7 +17,7 @@ echo "[INFO] = $(display_date) Stop PLF on ${HOSTNAME} ..." echo "[INFO] =======================================" if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then - sudo systemctl stop ${PLF_NAME} + systemd_action stop ${PLF_NAME} if [ "$(pgrep -U $(id -u) soffice)" != "" ]; then echo "[INFO] $(display_date) soffice processes of ${USER} exist. Killing them ..." pgrep -U $(id -u) soffice | xargs kill -9 From 8f488d7f9b9fae94985ca912384682919989a664 Mon Sep 17 00:00:00 2001 From: bourasom Date: Thu, 11 Apr 2019 13:07:06 +0200 Subject: [PATCH 15/53] local rsync in case of no backup download --- srv/exo/bin/_functions.sh | 1 + srv/exo/bin/backup_plateforme.sh | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index 6e3e9d8..99f3462 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -51,6 +51,7 @@ systemd_action(){ fi ;; stop) + echo "[INFO] Stop $2 service" sudo systemctl stop $2 ;; status) diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index eace7a1..e2f2e20 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -35,6 +35,11 @@ if [ ${DOWNLOAD_BACKUP} ]; then rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} +else + rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} fi SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" From 05b1ce9f93503e0792292019765dd481d8e24713 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Thu, 11 Apr 2019 20:01:17 +0200 Subject: [PATCH 16/53] code format --- srv/exo/bin/_dumpData.sh | 18 ++++++------- srv/exo/bin/_dumpElasticsearch.sh | 18 ++++++------- srv/exo/bin/_dumpMongoDb.sh | 12 ++++----- srv/exo/bin/_dumpMysqlDatabase.sh | 12 ++++----- srv/exo/bin/_functions.sh | 42 +++++++++++++++--------------- srv/exo/bin/_setenv-template.sh | 1 - srv/exo/bin/_startDatabase.sh | 8 +++--- srv/exo/bin/_startElasticsearch.sh | 8 +++--- srv/exo/bin/_startMongo.sh | 8 +++--- srv/exo/bin/_startPLF.sh | 25 ++++++++---------- srv/exo/bin/_stopDatabase.sh | 8 +++--- srv/exo/bin/_stopElasticsearch.sh | 8 +++--- srv/exo/bin/_stopMongo.sh | 8 +++--- srv/exo/bin/_stopPLF.sh | 6 ++--- srv/exo/bin/backup_plateforme.sh | 28 ++++++++++---------- srv/exo/bin/start_plateforme.sh | 6 ++--- srv/exo/bin/stop_plateforme.sh | 8 +++--- 17 files changed, 109 insertions(+), 115 deletions(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index 868b272..9100de5 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -2,28 +2,28 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` +SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_data rm -rf ${BACKUP_WORKING_DIR}/tmp_data/* -pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 +pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 echo "[INFO] =======================================" echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 -display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data -pushd ${BACKUP_WORKING_DIR}/tmp_data > /dev/null 2>&1 -popd > /dev/null 2>&1 -echo "[INFO] Done" \ No newline at end of file +pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 +display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data +pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 +popd >/dev/null 2>&1 +echo "[INFO] Done" diff --git a/srv/exo/bin/_dumpElasticsearch.sh b/srv/exo/bin/_dumpElasticsearch.sh index 7af6c31..5700c4e 100644 --- a/srv/exo/bin/_dumpElasticsearch.sh +++ b/srv/exo/bin/_dumpElasticsearch.sh @@ -2,28 +2,28 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` +SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_elastic rm -rf ${BACKUP_WORKING_DIR}/tmp_elastic/* -pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 +pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 echo "[INFO] =======================================" echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-ES-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 -display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 elasticsearch -pushd ${BACKUP_WORKING_DIR}/tmp_elastic > /dev/null 2>&1 -popd > /dev/null 2>&1 -echo "[INFO] Done" \ No newline at end of file +pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 +display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 elasticsearch +pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 +popd >/dev/null 2>&1 +echo "[INFO] Done" diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index f804331..079f575 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -14,8 +14,8 @@ source ${SCRIPT_DIR}/_functions.sh # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* -pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ > /dev/null 2>&1 -SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` +pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ >/dev/null 2>&1 +SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") # settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps @@ -24,7 +24,7 @@ echo "[INFO] =======================================" echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} +display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} echo "[INFO] compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2" display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 chat echo "[INFO] Suppress ${BACKUP_WORKING_DIR}/tmp_mongo/chat " @@ -32,4 +32,4 @@ display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/chat echo "[INFO] Done" echo "[INFO] $(display_date)" -popd > /dev/null 2>&1 \ No newline at end of file +popd >/dev/null 2>&1 diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index f708243..cc99872 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -16,14 +16,14 @@ DUMP_OPTIONS="--single-transaction" # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_db rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* -pushd ${BACKUP_WORKING_DIR}/tmp_db > /dev/null 2>&1 -SCRIPT_DATE=`date "+%Y-%m-%d-%H%M%S"` +pushd ${BACKUP_WORKING_DIR}/tmp_db >/dev/null 2>&1 +SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") echo "[INFO] =======================================" echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${BACKUP_WORKING_DIR}/tmp_db ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} | pbzip2 > ${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDatabase.sql.bz2 +display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} | pbzip2 >${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDatabase.sql.bz2 echo "[INFO] Done" -popd > /dev/null 2>&1 +popd >/dev/null 2>&1 diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index 99f3462..46265ed 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -13,11 +13,11 @@ delay() { if [ $# -lt 2 ]; then echo "" echo "[ERROR] No enough parameters for function delay !" - exit 1; + exit 1 fi local _start=$1 local _end=$2 - echo "$(( (_end - _start)/3600 )) hour(s) $(( ((_end - _start) % 3600) / 60 )) minute(s) $(( (_end - _start) % 60 )) second(s)" + echo "$(((_end - _start) / 3600)) hour(s) $((((_end - _start) % 3600) / 60)) minute(s) $(((_end - _start) % 60)) second(s)" } # $1 : Message @@ -27,41 +27,41 @@ display_delay() { if [ $# -lt 3 ]; then echo "" echo "[ERROR] No enough parameters for function display_delay !" - exit 1; + exit 1 fi - echo "[INFO] $1: $(delay $2 $3) ." + echo "[INFO] $1: $(delay $2 $3) ." } # $1 : Action -# $2 : Service -systemd_action(){ +# $2 : Service +systemd_action() { if [ $# -lt 2 ]; then echo "" echo "[ERROR] No enough parameters for function systemd_action !" - exit 1; + exit 1 fi case $1 in - start) - sudo systemctl start $2 + start) + sudo systemctl start $2 if $(sudo systemctl -q is-active $2); then echo "[INFO] Service $2 started successfuly" - else + else echo "[ERROR] Service $2 failed to start" - exit 1; + exit 1 fi - ;; - stop) + ;; + stop) echo "[INFO] Stop $2 service" - sudo systemctl stop $2 - ;; - status) + sudo systemctl stop $2 + ;; + status) sudo systemctl status $2 break ;; - *) - echo "[ERROR] No systemd action defined !" - exit 1; - ;; + *) + echo "[ERROR] No systemd action defined !" + exit 1 + ;; esac - + } diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index 5e610c9..8a90555 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -39,4 +39,3 @@ EXO_CHAT_MONGODB_NAME=chat ELASTIC_WORKING_DIR=/srv/data/ #DOWNLOAD BACKUP DOWNLOAD_BACKUP=false - diff --git a/srv/exo/bin/_startDatabase.sh b/srv/exo/bin/_startDatabase.sh index 0e93e97..9ef2356 100755 --- a/srv/exo/bin/_startDatabase.sh +++ b/srv/exo/bin/_startDatabase.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -15,6 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Starting Database server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start +ACTION=start systemd_action ${ACTION} mysql -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_startElasticsearch.sh b/srv/exo/bin/_startElasticsearch.sh index 7d7f246..bfd7e19 100755 --- a/srv/exo/bin/_startElasticsearch.sh +++ b/srv/exo/bin/_startElasticsearch.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -15,6 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start +ACTION=start systemd_action ${ACTION} elasticsearch -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh index 8ebd24c..e91f1c0 100755 --- a/srv/exo/bin/_startMongo.sh +++ b/srv/exo/bin/_startMongo.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -15,6 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Starting MongoDB server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start +ACTION=start systemd_action ${ACTION} mongod -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_startPLF.sh index cab1a99..5628abf 100755 --- a/srv/exo/bin/_startPLF.sh +++ b/srv/exo/bin/_startPLF.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -19,17 +19,15 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N echo "" ACTION=start set +u - if [ -n "${EXO_DEBUG}" ] - then + if [ -n "${EXO_DEBUG}" ]; then ACTION=debug fi set -u - systemd_action ${ACTION} ${PLF_NAME} + systemd_action ${ACTION} ${PLF_NAME} echo -n "[INFO] $(display_date) Waiting for logs availability ." - while [ true ]; - do - if [ -e "${PLF_LOG_DIR}/platform.log" ]; then + while [ true ]; do + if [ -e "${PLF_LOG_DIR}/platform.log" ]; then break fi echo -n "." @@ -43,24 +41,23 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N _tailPID=$! # Check for the end of startup set +e - while [ true ]; - do + while [ true ]; do if grep -q "ERROR" ${PLF_LOG_DIR}/platform.log; then systemd_action stop ${PLF_NAME} echo -n "[ERROR] $(display_date) Startup aborted due to logs errors." kill ${_tailPID} - wait ${_tailPID} 2> /dev/null + wait ${_tailPID} 2>/dev/null break fi if grep -q "Server startup in" ${PLF_LOG_DIR}/platform.log; then kill ${_tailPID} - wait ${_tailPID} 2> /dev/null + wait ${_tailPID} 2>/dev/null break fi done set -e - + else echo "[WARN] $(display_date) ${PLF_NAME} not deployed. Cannot be started !!!" fi -echo "[INFO] $(display_date) Done" \ No newline at end of file +echo "[INFO] $(display_date) Done" diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh index 41c2ce0..fc1af13 100755 --- a/srv/exo/bin/_stopDatabase.sh +++ b/srv/exo/bin/_stopDatabase.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -17,9 +17,9 @@ echo "[INFO] =======================================" if [ -e /lib/systemd/system/mysql.service ]; then echo "" - ACTION=stop + ACTION=stop systemd_action ${ACTION} mysql else echo "[WARN] $(display_date) Database not deployed. Cannot be stopped !!!" fi -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopElasticsearch.sh b/srv/exo/bin/_stopElasticsearch.sh index b52be4a..ad353e6 100755 --- a/srv/exo/bin/_stopElasticsearch.sh +++ b/srv/exo/bin/_stopElasticsearch.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -18,9 +18,9 @@ echo "[INFO] =======================================" if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then echo "" - ACTION=stop + ACTION=stop systemd_action ${ACTION} elasticsearch else echo "[WARN] $(display_date) ElasticSearch not deployed. Cannot be stopped !!!" fi -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh index d85dc3d..5e5ca33 100755 --- a/srv/exo/bin/_stopMongo.sh +++ b/srv/exo/bin/_stopMongo.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -18,7 +18,7 @@ echo "[INFO] =======================================" if [ -e /lib/systemd/system/mongod.service ]; then echo "" - ACTION=stop + ACTION=stop systemd_action ${ACTION} mongod fi -echo "[INFO] Done" \ No newline at end of file +echo "[INFO] Done" diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopPLF.sh index cfbd53d..8496b3f 100755 --- a/srv/exo/bin/_stopPLF.sh +++ b/srv/exo/bin/_stopPLF.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -24,4 +24,4 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N fi else echo "[WARN] ${PLF_NAME} not deployed. Cannot be stopped !!!" -fi \ No newline at end of file +fi diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index e2f2e20..ae1d007 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -2,9 +2,9 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_START_TIME=$(date +%s) @@ -29,23 +29,23 @@ ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh -DOWNTIME_END_TIME=$(date +%s) +DOWNTIME_END_TIME=$(date +%s) if [ ${DOWNLOAD_BACKUP} ]; then - rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} -else - rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} +else + rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} fi SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" -echo "[INFO] = Backup ended -" `date` +echo "[INFO] = Backup ended -" $(date) echo "[INFO] =--------------------------------------" display_delay "= -> Process duration" $SCRIPT_START_TIME $SCRIPT_END_TIME echo "[INFO] =--------------------------------------" display_delay "= -> Service downtime" $DOWNTIME_START_TIME $DOWNTIME_END_TIME -echo "[INFO] =======================================" \ No newline at end of file +echo "[INFO] =======================================" diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateforme.sh index a10e5a8..dd8fb6b 100755 --- a/srv/exo/bin/start_plateforme.sh +++ b/srv/exo/bin/start_plateforme.sh @@ -2,10 +2,10 @@ # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" echo $SCRIPT_NAME -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh @@ -19,4 +19,4 @@ ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDataBase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh -echo "[INFO] $(display_date) Done" \ No newline at end of file +echo "[INFO] $(display_date) Done" diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateforme.sh index 792a223..eda171e 100755 --- a/srv/exo/bin/stop_plateforme.sh +++ b/srv/exo/bin/stop_plateforme.sh @@ -1,18 +1,16 @@ - #!/bin/bash -eu # ############################################################################# # Initialize -# ############################################################################# +# ############################################################################# SCRIPT_NAME="${0##*/}" -SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Load env settings source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh - echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." @@ -23,4 +21,4 @@ ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh -echo "[INFO] $(display_date) Done" \ No newline at end of file +echo "[INFO] $(display_date) Done" From 0841b01f49e3f4115a0359981b7ca216db36e084 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 00:13:59 +0200 Subject: [PATCH 17/53] Improve start stop commamds - centralize the service detection on _functions.sh - Remove an unnecessary variable containing the action - Don't stop anymore tomcat if an error is detected during the startup - Rename _*PLF.sh _*eXo.sh --- srv/exo/bin/_functions.sh | 25 +++++++++++++++------- srv/exo/bin/_startDatabase.sh | 5 +++-- srv/exo/bin/_startElasticsearch.sh | 5 +++-- srv/exo/bin/_startMongo.sh | 5 +++-- srv/exo/bin/{_startPLF.sh => _starteXo.sh} | 0 srv/exo/bin/_stopDatabase.sh | 9 ++------ srv/exo/bin/_stopElasticsearch.sh | 8 +------ srv/exo/bin/_stopMongo.sh | 6 +----- srv/exo/bin/{_stopPLF.sh => _stopeXo.sh} | 3 +++ srv/exo/bin/backup_plateforme.sh | 7 ++++++ 10 files changed, 40 insertions(+), 33 deletions(-) rename srv/exo/bin/{_startPLF.sh => _starteXo.sh} (100%) rename srv/exo/bin/{_stopPLF.sh => _stopeXo.sh} (99%) diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index 46265ed..8288c64 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -40,22 +40,31 @@ systemd_action() { echo "[ERROR] No enough parameters for function systemd_action !" exit 1 fi - case $1 in + local ACTION=$1 + local SERVICE=$2 + + # check is the service is installed + if [ "$(systemctl list-unit-files ${SERVICE}.service --quiet --no-legend | wc -l)" == 0 ]; then + echo "[ERROR] Service ${SERVICE} not found" + exit 1 + fi + + case ${ACTION} in start) - sudo systemctl start $2 - if $(sudo systemctl -q is-active $2); then - echo "[INFO] Service $2 started successfuly" + sudo systemctl start ${SERVICE} + if $(sudo systemctl -q is-active ${SERVICE}); then + echo "[INFO] Service ${SERVICE} started successfuly" else - echo "[ERROR] Service $2 failed to start" + echo "[ERROR] Service ${SERVICE} failed to start" exit 1 fi ;; stop) - echo "[INFO] Stop $2 service" - sudo systemctl stop $2 + echo "[INFO] Stop ${SERVICE} service" + sudo systemctl stop ${SERVICE} ;; status) - sudo systemctl status $2 + sudo systemctl status ${SERVICE} break ;; *) diff --git a/srv/exo/bin/_startDatabase.sh b/srv/exo/bin/_startDatabase.sh index 9ef2356..efa0d83 100755 --- a/srv/exo/bin/_startDatabase.sh +++ b/srv/exo/bin/_startDatabase.sh @@ -15,6 +15,7 @@ echo "[INFO] =======================================" echo "[INFO] Starting Database server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start -systemd_action ${ACTION} mysql + +systemd_action start mysql + echo "[INFO] Done" diff --git a/srv/exo/bin/_startElasticsearch.sh b/srv/exo/bin/_startElasticsearch.sh index bfd7e19..37f0c25 100755 --- a/srv/exo/bin/_startElasticsearch.sh +++ b/srv/exo/bin/_startElasticsearch.sh @@ -15,6 +15,7 @@ echo "[INFO] =======================================" echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start -systemd_action ${ACTION} elasticsearch + +systemd_action start elasticsearch + echo "[INFO] Done" diff --git a/srv/exo/bin/_startMongo.sh b/srv/exo/bin/_startMongo.sh index e91f1c0..c3e0bb4 100755 --- a/srv/exo/bin/_startMongo.sh +++ b/srv/exo/bin/_startMongo.sh @@ -15,6 +15,7 @@ echo "[INFO] =======================================" echo "[INFO] Starting MongoDB server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" -ACTION=start -systemd_action ${ACTION} mongod + +systemd_action start mongod + echo "[INFO] Done" diff --git a/srv/exo/bin/_startPLF.sh b/srv/exo/bin/_starteXo.sh similarity index 100% rename from srv/exo/bin/_startPLF.sh rename to srv/exo/bin/_starteXo.sh diff --git a/srv/exo/bin/_stopDatabase.sh b/srv/exo/bin/_stopDatabase.sh index fc1af13..9bc5276 100755 --- a/srv/exo/bin/_stopDatabase.sh +++ b/srv/exo/bin/_stopDatabase.sh @@ -15,11 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Stopping Database server on ${HOSTNAME}..." echo "[INFO] =======================================" -if [ -e /lib/systemd/system/mysql.service ]; then - echo "" - ACTION=stop - systemd_action ${ACTION} mysql -else - echo "[WARN] $(display_date) Database not deployed. Cannot be stopped !!!" -fi +systemd_action stop mysql + echo "[INFO] Done" diff --git a/srv/exo/bin/_stopElasticsearch.sh b/srv/exo/bin/_stopElasticsearch.sh index ad353e6..c20ec36 100755 --- a/srv/exo/bin/_stopElasticsearch.sh +++ b/srv/exo/bin/_stopElasticsearch.sh @@ -15,12 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Stopping ElasticSearch server on ${HOSTNAME}..." echo "[INFO] =======================================" -if [ -e /usr/lib/systemd/system/elasticsearch.service ]; then +systemd_action stop elasticsearch - echo "" - ACTION=stop - systemd_action ${ACTION} elasticsearch -else - echo "[WARN] $(display_date) ElasticSearch not deployed. Cannot be stopped !!!" -fi echo "[INFO] Done" diff --git a/srv/exo/bin/_stopMongo.sh b/srv/exo/bin/_stopMongo.sh index 5e5ca33..35cfaa6 100755 --- a/srv/exo/bin/_stopMongo.sh +++ b/srv/exo/bin/_stopMongo.sh @@ -15,10 +15,6 @@ echo "[INFO] =======================================" echo "[INFO] Stoping MongoDB server on ${HOSTNAME}..." echo "[INFO] =======================================" -if [ -e /lib/systemd/system/mongod.service ]; then +systemd_action stop mongod - echo "" - ACTION=stop - systemd_action ${ACTION} mongod -fi echo "[INFO] Done" diff --git a/srv/exo/bin/_stopPLF.sh b/srv/exo/bin/_stopeXo.sh similarity index 99% rename from srv/exo/bin/_stopPLF.sh rename to srv/exo/bin/_stopeXo.sh index 8496b3f..f1567db 100755 --- a/srv/exo/bin/_stopPLF.sh +++ b/srv/exo/bin/_stopeXo.sh @@ -17,11 +17,14 @@ echo "[INFO] = $(display_date) Stop PLF on ${HOSTNAME} ..." echo "[INFO] =======================================" if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then + systemd_action stop ${PLF_NAME} + if [ "$(pgrep -U $(id -u) soffice)" != "" ]; then echo "[INFO] $(display_date) soffice processes of ${USER} exist. Killing them ..." pgrep -U $(id -u) soffice | xargs kill -9 fi + else echo "[WARN] ${PLF_NAME} not deployed. Cannot be stopped !!!" fi diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index ae1d007..366f9f8 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -19,16 +19,21 @@ ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh # Dump data ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh + # Dump database ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh + # Dump MongoDB ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh + # Dump Elastic ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh + # Start it ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh + DOWNTIME_END_TIME=$(date +%s) if [ ${DOWNLOAD_BACKUP} ]; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} @@ -41,7 +46,9 @@ else rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} fi + SCRIPT_END_TIME=$(date +%s) + echo "[INFO] =======================================" echo "[INFO] = Backup ended -" $(date) echo "[INFO] =--------------------------------------" From 892d338926d10c6132a38ac194c852e206376fea Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 00:27:48 +0200 Subject: [PATCH 18/53] Don't stop eXo if an ERROR log appears on the startup logs --- srv/exo/bin/_starteXo.sh | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/srv/exo/bin/_starteXo.sh b/srv/exo/bin/_starteXo.sh index 5628abf..2e3219b 100755 --- a/srv/exo/bin/_starteXo.sh +++ b/srv/exo/bin/_starteXo.sh @@ -16,15 +16,8 @@ echo "[INFO] = $(display_date) Start PLF server on ${HOSTNAME} ..." echo "[INFO] =======================================" if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then - echo "" - ACTION=start - set +u - if [ -n "${EXO_DEBUG}" ]; then - ACTION=debug - fi - set -u + systemd_action start ${PLF_NAME} - systemd_action ${ACTION} ${PLF_NAME} echo -n "[INFO] $(display_date) Waiting for logs availability ." while [ true ]; do if [ -e "${PLF_LOG_DIR}/platform.log" ]; then @@ -42,18 +35,12 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N # Check for the end of startup set +e while [ true ]; do - if grep -q "ERROR" ${PLF_LOG_DIR}/platform.log; then - systemd_action stop ${PLF_NAME} - echo -n "[ERROR] $(display_date) Startup aborted due to logs errors." - kill ${_tailPID} - wait ${_tailPID} 2>/dev/null - break - fi if grep -q "Server startup in" ${PLF_LOG_DIR}/platform.log; then kill ${_tailPID} wait ${_tailPID} 2>/dev/null break fi + sleep .5 done set -e From f68ec31be31584da60b84e034d760a2104e12ab3 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 00:48:48 +0200 Subject: [PATCH 19/53] Improve exo backup - ensure we go back to the initial directory at the end - ensure the backup is made from the n-1 level and don't assume the data dir is name data --- srv/exo/bin/_dumpData.sh | 6 ++++-- srv/exo/bin/_setenv-template.sh | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index 9100de5..b863644 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -22,8 +22,10 @@ echo "[INFO] =======================================" echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" + pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 -display_time tar --directory ${DATA_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 data -pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 + +display_time tar --directory $(dirname ${EXO_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 $(basename ${EXO_DATA_DIR}) + popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index 8a90555..5ba4902 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -32,7 +32,7 @@ BACKUP_WORKING_DIR=/var/backup #Database Backup PLF_DATABASE_NAME=exo #Data Backup -DATA_WORKING_DIR=/srv/data/exo +EXO_DATA_DIR=/srv/data/exo #Mongo Backup EXO_CHAT_MONGODB_NAME=chat #Elastic Backup From dae279282b57224c085c4b99a0de824514e5a305 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 01:03:32 +0200 Subject: [PATCH 20/53] Improve elasticsearch backup - use elasticsearch instead of elastic - respect the full path for the backup --- srv/exo/bin/_dumpElasticsearch.sh | 14 ++++++++------ srv/exo/bin/_setenv-template.sh | 2 +- srv/exo/bin/backup_plateforme.sh | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/srv/exo/bin/_dumpElasticsearch.sh b/srv/exo/bin/_dumpElasticsearch.sh index 5700c4e..39fe10f 100644 --- a/srv/exo/bin/_dumpElasticsearch.sh +++ b/srv/exo/bin/_dumpElasticsearch.sh @@ -14,16 +14,18 @@ source ${SCRIPT_DIR}/_functions.sh SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") # Initialize working directory -mkdir -p ${BACKUP_WORKING_DIR}/tmp_elastic -rm -rf ${BACKUP_WORKING_DIR}/tmp_elastic/* -pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 +mkdir -p ${BACKUP_WORKING_DIR}/tmp_elasticsearch +rm -rf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/* +pushd ${BACKUP_WORKING_DIR}/tmp_elasticsearch >/dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-ES-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" + pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 -display_time tar --directory ${ELASTIC_WORKING_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 elasticsearch -pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 + +display_time tar --directory $(dirname ${ELASTICSEARCH_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 $(basename ${ELASTICSEARCH_DATA_DIR}) + popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index 5ba4902..5c954e0 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -36,6 +36,6 @@ EXO_DATA_DIR=/srv/data/exo #Mongo Backup EXO_CHAT_MONGODB_NAME=chat #Elastic Backup -ELASTIC_WORKING_DIR=/srv/data/ +ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch #DOWNLOAD BACKUP DOWNLOAD_BACKUP=false diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateforme.sh index 366f9f8..b07a653 100755 --- a/srv/exo/bin/backup_plateforme.sh +++ b/srv/exo/bin/backup_plateforme.sh @@ -39,12 +39,12 @@ if [ ${DOWNLOAD_BACKUP} ]; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${BACKUP_DIR} else rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elastic/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} fi SCRIPT_END_TIME=$(date +%s) From 34e114f6ee00264070ba42c422b63d42ba69dc21 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 01:27:35 +0200 Subject: [PATCH 21/53] Rename chat database parameter --- srv/exo/bin/_dumpMongoDb.sh | 15 +++++++++------ srv/exo/bin/_setenv-template.sh | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index 079f575..d07be77 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -21,14 +21,17 @@ SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") echo "[INFO] $(display_date)" echo "[INFO] =======================================" -echo "[INFO] = Dumping MongoDB ${EXO_CHAT_MONGODB_NAME} into ${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Dumping MongoDB ${CHAT_DATABASE} into ${PLF_NAME}-${CHAT_DATABASE}-${SCRIPT_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${EXO_CHAT_MONGODB_NAME} -echo "[INFO] compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2" -display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 chat -echo "[INFO] Suppress ${BACKUP_WORKING_DIR}/tmp_mongo/chat " -display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/chat + +display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${CHAT_DATABASE} + +echo "[INFO] Compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-${CHAT_DATABASE}-${SCRIPT_DATE}.tar.bz2" +display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 ${CHAT_DATABASE} + +echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}" +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} echo "[INFO] Done" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index 5c954e0..ae9e31a 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -34,7 +34,7 @@ PLF_DATABASE_NAME=exo #Data Backup EXO_DATA_DIR=/srv/data/exo #Mongo Backup -EXO_CHAT_MONGODB_NAME=chat +CHAT_DATABASE=chat #Elastic Backup ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch #DOWNLOAD BACKUP From b77e583d2f24e45ef7d038bc26ec921faeb4cc56 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 01:30:40 +0200 Subject: [PATCH 22/53] Mysql backup changes - Rename database name paramter - Rename finale dump to respect usual template --- srv/exo/bin/_dumpMysqlDatabase.sh | 6 ++++-- srv/exo/bin/_setenv-template.sh | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index cc99872..43cbab9 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -19,11 +19,13 @@ rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* pushd ${BACKUP_WORKING_DIR}/tmp_db >/dev/null 2>&1 SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") +TARGET_NAME="${PLF_NAME}-db-${SCRIPT_DATE}.sql.bz2" + echo "[INFO] =======================================" -echo "[INFO] = Dumping database ${PLF_DATABASE_NAME} into ${BACKUP_WORKING_DIR}/tmp_db ..." +echo "[INFO] = Dumping database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo mysqldump ${DUMP_OPTIONS} ${PLF_DATABASE_NAME} | pbzip2 >${BACKUP_WORKING_DIR}/tmp_db/${PLF_DATABASE_NAME}-dumpDatabase.sql.bz2 +display_time sudo mysqldump ${DUMP_OPTIONS} ${EXO_DATABASE} | pbzip2 >${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} echo "[INFO] Done" popd >/dev/null 2>&1 diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index ae9e31a..e7fcdd3 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -30,7 +30,7 @@ EXO_USER=exo BACKUP_DIR=/srv/backup BACKUP_WORKING_DIR=/var/backup #Database Backup -PLF_DATABASE_NAME=exo +EXO_DATABASE=exo #Data Backup EXO_DATA_DIR=/srv/data/exo #Mongo Backup From de931729637c0f326f9f8ce60ad59531bb839a4d Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 01:34:47 +0200 Subject: [PATCH 23/53] translate start/stop script names --- srv/exo/bin/{backup_plateforme.sh => backup_plateform.sh} | 0 srv/exo/bin/{start_plateforme.sh => start_plateform.sh} | 0 srv/exo/bin/{stop_plateforme.sh => stop_plateform.sh} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename srv/exo/bin/{backup_plateforme.sh => backup_plateform.sh} (100%) rename srv/exo/bin/{start_plateforme.sh => start_plateform.sh} (100%) rename srv/exo/bin/{stop_plateforme.sh => stop_plateform.sh} (100%) diff --git a/srv/exo/bin/backup_plateforme.sh b/srv/exo/bin/backup_plateform.sh similarity index 100% rename from srv/exo/bin/backup_plateforme.sh rename to srv/exo/bin/backup_plateform.sh diff --git a/srv/exo/bin/start_plateforme.sh b/srv/exo/bin/start_plateform.sh similarity index 100% rename from srv/exo/bin/start_plateforme.sh rename to srv/exo/bin/start_plateform.sh diff --git a/srv/exo/bin/stop_plateforme.sh b/srv/exo/bin/stop_plateform.sh similarity index 100% rename from srv/exo/bin/stop_plateforme.sh rename to srv/exo/bin/stop_plateform.sh From 7e13cc29890e935ddd34533bc779139a41d6a69c Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 01:43:07 +0200 Subject: [PATCH 24/53] Use the same date for all the archives --- srv/exo/bin/_dumpData.sh | 6 +++--- srv/exo/bin/_dumpElasticsearch.sh | 6 +++--- srv/exo/bin/_dumpMongoDb.sh | 11 +++++++---- srv/exo/bin/_dumpMysqlDatabase.sh | 5 +++-- srv/exo/bin/backup_plateform.sh | 11 +++++++---- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index b863644..de6e2f1 100644 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -11,7 +11,7 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_data @@ -19,13 +19,13 @@ rm -rf ${BACKUP_WORKING_DIR}/tmp_data/* pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 -display_time tar --directory $(dirname ${EXO_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${SCRIPT_DATE}.tar.bz2 $(basename ${EXO_DATA_DIR}) +display_time tar --directory $(dirname ${EXO_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 $(basename ${EXO_DATA_DIR}) popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_dumpElasticsearch.sh b/srv/exo/bin/_dumpElasticsearch.sh index 39fe10f..dc8000d 100644 --- a/srv/exo/bin/_dumpElasticsearch.sh +++ b/srv/exo/bin/_dumpElasticsearch.sh @@ -11,7 +11,7 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_elasticsearch @@ -19,13 +19,13 @@ rm -rf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/* pushd ${BACKUP_WORKING_DIR}/tmp_elasticsearch >/dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 -display_time tar --directory $(dirname ${ELASTICSEARCH_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${SCRIPT_DATE}.tar.bz2 $(basename ${ELASTICSEARCH_DATA_DIR}) +display_time tar --directory $(dirname ${ELASTICSEARCH_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 $(basename ${ELASTICSEARCH_DATA_DIR}) popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index d07be77..f324071 100644 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -15,20 +15,23 @@ source ${SCRIPT_DIR}/_functions.sh mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ >/dev/null 2>&1 -SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") + +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} # settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps echo "[INFO] $(display_date)" echo "[INFO] =======================================" -echo "[INFO] = Dumping MongoDB ${CHAT_DATABASE} into ${PLF_NAME}-${CHAT_DATABASE}-${SCRIPT_DATE}.tar.bz2 ..." +echo "[INFO] = Dumping MongoDB ${CHAT_DATABASE} into ${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" +TARGET="${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2" + display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${CHAT_DATABASE} -echo "[INFO] Compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-${CHAT_DATABASE}-${SCRIPT_DATE}.tar.bz2" -display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${PLF_NAME}-chat-${SCRIPT_DATE}.tar.bz2 ${CHAT_DATABASE} +echo "[INFO] Compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET}" +display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} ${CHAT_DATABASE} echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}" display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 43cbab9..76f9a83 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -17,9 +17,10 @@ DUMP_OPTIONS="--single-transaction" mkdir -p ${BACKUP_WORKING_DIR}/tmp_db rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* pushd ${BACKUP_WORKING_DIR}/tmp_db >/dev/null 2>&1 -SCRIPT_DATE=$(date "+%Y-%m-%d-%H%M%S") -TARGET_NAME="${PLF_NAME}-db-${SCRIPT_DATE}.sql.bz2" +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} + +TARGET_NAME="${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2" echo "[INFO] =======================================" echo "[INFO] = Dumping database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." diff --git a/srv/exo/bin/backup_plateform.sh b/srv/exo/bin/backup_plateform.sh index b07a653..d935bd5 100755 --- a/srv/exo/bin/backup_plateform.sh +++ b/srv/exo/bin/backup_plateform.sh @@ -14,21 +14,24 @@ source ${SCRIPT_DIR}/setenv.sh source ${SCRIPT_DIR}/_functions.sh DOWNTIME_START_TIME=$(date +%s) + +BACKUP_DATE=$(date "+%Y-%m-%d-%H%M%S") + # Stop it ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh # Dump data -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh ${BACKUP_DATE} # Dump database -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh ${BACKUP_DATE} # Dump MongoDB -ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh +ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh ${BACKUP_DATE} # Dump Elastic ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh ${BACKUP_DATE} ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it From 84c2aaf77cd2e9fcf14282c94f4f987450fa5ed2 Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 12 Apr 2019 16:37:24 +0200 Subject: [PATCH 25/53] Add drop database instruction in the dump --- srv/exo/bin/_dumpMysqlDatabase.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 76f9a83..9fa82cf 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -11,7 +11,7 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -DUMP_OPTIONS="--single-transaction" +DUMP_OPTIONS="--single-transaction --add-drop-database " # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_db From 00b0da4a1c28793150479a0009f04612c17b2477 Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 12 Apr 2019 16:37:57 +0200 Subject: [PATCH 26/53] Add restore scripts --- srv/exo/bin/_restoreData.sh | 29 +++++++++++++ srv/exo/bin/_restoreElasticsearch.sh | 30 ++++++++++++++ srv/exo/bin/_restoreMongoDb.sh | 39 ++++++++++++++++++ srv/exo/bin/_restoreMysqlDatabase.sh | 36 ++++++++++++++++ srv/exo/bin/restore_plateform.sh | 61 ++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+) create mode 100644 srv/exo/bin/_restoreData.sh create mode 100644 srv/exo/bin/_restoreElasticsearch.sh create mode 100644 srv/exo/bin/_restoreMongoDb.sh create mode 100755 srv/exo/bin/_restoreMysqlDatabase.sh create mode 100755 srv/exo/bin/restore_plateform.sh diff --git a/srv/exo/bin/_restoreData.sh b/srv/exo/bin/_restoreData.sh new file mode 100644 index 0000000..eb8e6d3 --- /dev/null +++ b/srv/exo/bin/_restoreData.sh @@ -0,0 +1,29 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} + +# Initialize working directory +rm -rf ${EXO_DATA_DIR}/* +pushd ${EXO_DATA_DIR}/* >/dev/null 2>&1 + +echo "[INFO] =======================================" +echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 into ${EXO_DATA_DIR} ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" + +pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 + +display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 -C ${EXO_DATA_DIR} +popd >/dev/null 2>&1 +echo "[INFO] Done" diff --git a/srv/exo/bin/_restoreElasticsearch.sh b/srv/exo/bin/_restoreElasticsearch.sh new file mode 100644 index 0000000..7b64c5f --- /dev/null +++ b/srv/exo/bin/_restoreElasticsearch.sh @@ -0,0 +1,30 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} + +# Initialize working directory +rm -rf ${ELASTICSEARCH_DATA_DIR}/* +pushd ${ELASTICSEARCH_DATA_DIR}/ >/dev/null 2>&1 + +echo "[INFO] =======================================" +echo "[INFO] = UnCompressing ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" + +pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 + +display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 -C ${ELASTICSEARCH_DATA_DIR} + +popd >/dev/null 2>&1 +echo "[INFO] Done" diff --git a/srv/exo/bin/_restoreMongoDb.sh b/srv/exo/bin/_restoreMongoDb.sh new file mode 100644 index 0000000..039779c --- /dev/null +++ b/srv/exo/bin/_restoreMongoDb.sh @@ -0,0 +1,39 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +# Initialize working directory +mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo +rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* +pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ >/dev/null 2>&1 + +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} + +# settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps + +echo "[INFO] $(display_date)" +echo "[INFO] =======================================" +echo "[INFO] = restore MongoDB ${CHAT_DATABASE} from ${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" + +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} +TARGET="${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2" +echo "[INFO] Compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET}" +display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} -C ${BACKUP_WORKING_DIR}/tmp_mongo/ +display_time mongorestore --drop --db=${CHAT_DATABASE} ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} +echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/* content" +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* +echo "[INFO] Done" +echo "[INFO] $(display_date)" + +popd >/dev/null 2>&1 diff --git a/srv/exo/bin/_restoreMysqlDatabase.sh b/srv/exo/bin/_restoreMysqlDatabase.sh new file mode 100755 index 0000000..79ffc5b --- /dev/null +++ b/srv/exo/bin/_restoreMysqlDatabase.sh @@ -0,0 +1,36 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +DUMP_OPTIONS="--single-transaction" + +# Initialize working directory +mkdir -p ${BACKUP_WORKING_DIR}/tmp_db +rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* +pushd ${BACKUP_WORKING_DIR}/tmp_db >/dev/null 2>&1 + +BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} + +TARGET_NAME="${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2" + +echo "[INFO] =======================================" +echo "[INFO] = Dumping database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." +echo "[INFO] =======================================" +echo "[INFO] $(display_date)" +display_time sudo bunzip2 < ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} | mysql +echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_db/ content" +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* +echo "[INFO] Done" +echo "[INFO] $(display_date)" +echo "[INFO] Done" + +popd >/dev/null 2>&1 diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_plateform.sh new file mode 100755 index 0000000..c7d2865 --- /dev/null +++ b/srv/exo/bin/restore_plateform.sh @@ -0,0 +1,61 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +SCRIPT_START_TIME=$(date +%s) + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +if [ ${DOWNLOAD_BACKUP} ]; then + rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ +else + rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ + rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ + rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ + rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ +fi + +DOWNTIME_START_TIME=$(date +%s) + +BACKUP_DATE=$(date "+%Y-%m-%d-%H%M%S") + +# Stop it +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh + +# restore data +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_restoreData.sh ${BACKUP_DATE} + +# Dump database +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_restoreMysqlDatabase.sh ${BACKUP_DATE} + +# Dump MongoDB +ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_restoreMongoDb.sh ${BACKUP_DATE} + +# Dump Elastic +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_restoreElasticsearch.sh ${BACKUP_DATE} +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh + +# Start it +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh + +DOWNTIME_END_TIME=$(date +%s) +SCRIPT_END_TIME=$(date +%s) + +echo "[INFO] =======================================" +echo "[INFO] = Backup ended -" $(date) +echo "[INFO] =--------------------------------------" +display_delay "= -> Process duration" $SCRIPT_START_TIME $SCRIPT_END_TIME +echo "[INFO] =--------------------------------------" +display_delay "= -> Service downtime" $DOWNTIME_START_TIME $DOWNTIME_END_TIME +echo "[INFO] =======================================" From 0c04bb4fd8b7e090a4a19ece8ae1c8432cc7ca48 Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 12 Apr 2019 16:45:45 +0200 Subject: [PATCH 27/53] update retore_plateform script --- srv/exo/bin/restore_plateform.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_plateform.sh index c7d2865..baa1933 100755 --- a/srv/exo/bin/restore_plateform.sh +++ b/srv/exo/bin/restore_plateform.sh @@ -5,6 +5,7 @@ # ############################################################################# SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BACKUP_DATE=$1 SCRIPT_START_TIME=$(date +%s) @@ -13,6 +14,14 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh +if [ $# -lt 1 ]; then + echo "" + echo "[ERROR] Need backup date to proceede to the restore !" + exit 1 +fi + +local BACKUP_DATE=$1 + if [ ${DOWNLOAD_BACKUP} ]; then rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ @@ -27,8 +36,6 @@ fi DOWNTIME_START_TIME=$(date +%s) -BACKUP_DATE=$(date "+%Y-%m-%d-%H%M%S") - # Stop it ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh From 594a51660e614b874d174210e9a2615ebaf95e2f Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 12 Apr 2019 19:03:51 +0200 Subject: [PATCH 28/53] Some cleanup in restore --- srv/exo/bin/_restoreData.sh | 2 +- srv/exo/bin/_restoreMysqlDatabase.sh | 7 +------ srv/exo/bin/restore_plateform.sh | 3 +-- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/srv/exo/bin/_restoreData.sh b/srv/exo/bin/_restoreData.sh index eb8e6d3..ddbc622 100644 --- a/srv/exo/bin/_restoreData.sh +++ b/srv/exo/bin/_restoreData.sh @@ -15,7 +15,7 @@ BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} # Initialize working directory rm -rf ${EXO_DATA_DIR}/* -pushd ${EXO_DATA_DIR}/* >/dev/null 2>&1 +pushd ${EXO_DATA_DIR} >/dev/null 2>&1 echo "[INFO] =======================================" echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 into ${EXO_DATA_DIR} ..." diff --git a/srv/exo/bin/_restoreMysqlDatabase.sh b/srv/exo/bin/_restoreMysqlDatabase.sh index 79ffc5b..dcc947f 100755 --- a/srv/exo/bin/_restoreMysqlDatabase.sh +++ b/srv/exo/bin/_restoreMysqlDatabase.sh @@ -13,17 +13,12 @@ source ${SCRIPT_DIR}/_functions.sh DUMP_OPTIONS="--single-transaction" -# Initialize working directory -mkdir -p ${BACKUP_WORKING_DIR}/tmp_db -rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* -pushd ${BACKUP_WORKING_DIR}/tmp_db >/dev/null 2>&1 - BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} TARGET_NAME="${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2" echo "[INFO] =======================================" -echo "[INFO] = Dumping database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." +echo "[INFO] = restoring database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" display_time sudo bunzip2 < ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} | mysql diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_plateform.sh index baa1933..7101096 100755 --- a/srv/exo/bin/restore_plateform.sh +++ b/srv/exo/bin/restore_plateform.sh @@ -5,7 +5,6 @@ # ############################################################################# SCRIPT_NAME="${0##*/}" SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -BACKUP_DATE=$1 SCRIPT_START_TIME=$(date +%s) @@ -20,7 +19,7 @@ if [ $# -lt 1 ]; then exit 1 fi -local BACKUP_DATE=$1 +BACKUP_DATE=$1 if [ ${DOWNLOAD_BACKUP} ]; then rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ From 7d09ad36449b9450c7b0785d91686d8fe5575fd6 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 19:24:55 +0200 Subject: [PATCH 29/53] Fix typo on script names --- srv/exo/bin/backup_plateform.sh | 4 ++-- srv/exo/bin/restore_plateform.sh | 4 ++-- srv/exo/bin/start_plateform.sh | 6 +++--- srv/exo/bin/stop_plateform.sh | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/srv/exo/bin/backup_plateform.sh b/srv/exo/bin/backup_plateform.sh index d935bd5..cb0cec8 100755 --- a/srv/exo/bin/backup_plateform.sh +++ b/srv/exo/bin/backup_plateform.sh @@ -18,7 +18,7 @@ DOWNTIME_START_TIME=$(date +%s) BACKUP_DATE=$(date "+%Y-%m-%d-%H%M%S") # Stop it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh # Dump data ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh ${BACKUP_DATE} @@ -35,7 +35,7 @@ ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh ${BACKUP_DA ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh DOWNTIME_END_TIME=$(date +%s) if [ ${DOWNLOAD_BACKUP} ]; then diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_plateform.sh index 7101096..6c5fd2b 100755 --- a/srv/exo/bin/restore_plateform.sh +++ b/srv/exo/bin/restore_plateform.sh @@ -36,7 +36,7 @@ fi DOWNTIME_START_TIME=$(date +%s) # Stop it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh # restore data ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_restoreData.sh ${BACKUP_DATE} @@ -53,7 +53,7 @@ ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_restoreElasticsearch.sh ${BACKUP ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh DOWNTIME_END_TIME=$(date +%s) SCRIPT_END_TIME=$(date +%s) diff --git a/srv/exo/bin/start_plateform.sh b/srv/exo/bin/start_plateform.sh index dd8fb6b..920653a 100755 --- a/srv/exo/bin/start_plateform.sh +++ b/srv/exo/bin/start_plateform.sh @@ -15,8 +15,8 @@ echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Start ${PLF_NAME} server on ${HOSTNAME} ..." echo "[INFO] =======================================" -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDataBase.sh +ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDatabase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticSearch.sh -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_startPLF.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh echo "[INFO] $(display_date) Done" diff --git a/srv/exo/bin/stop_plateform.sh b/srv/exo/bin/stop_plateform.sh index eda171e..1e889b9 100755 --- a/srv/exo/bin/stop_plateform.sh +++ b/srv/exo/bin/stop_plateform.sh @@ -16,7 +16,7 @@ echo "[INFO] =======================================" echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." echo "[INFO] =======================================" -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopPLF.sh +ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh From 925d6d1ed9516d04082fef21cdd37584a76f2728 Mon Sep 17 00:00:00 2001 From: bourasom Date: Fri, 12 Apr 2019 19:37:48 +0200 Subject: [PATCH 30/53] change from drop-database to drop-table in db dump option --- srv/exo/bin/_dumpMysqlDatabase.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 9fa82cf..67bfa79 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -11,7 +11,7 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh -DUMP_OPTIONS="--single-transaction --add-drop-database " +DUMP_OPTIONS="--single-transaction --add-drop-table" # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_db From 4b711cc5f862da1aa85be6e306bb1cc777f4b448 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Fri, 12 Apr 2019 20:15:25 +0200 Subject: [PATCH 31/53] one more typo --- srv/exo/bin/_restoreElasticsearch.sh | 2 +- srv/exo/bin/_startElasticsearch.sh | 2 +- srv/exo/bin/_stopElasticsearch.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) mode change 100644 => 100755 srv/exo/bin/_restoreElasticsearch.sh diff --git a/srv/exo/bin/_restoreElasticsearch.sh b/srv/exo/bin/_restoreElasticsearch.sh old mode 100644 new mode 100755 index 7b64c5f..8688751 --- a/srv/exo/bin/_restoreElasticsearch.sh +++ b/srv/exo/bin/_restoreElasticsearch.sh @@ -18,7 +18,7 @@ rm -rf ${ELASTICSEARCH_DATA_DIR}/* pushd ${ELASTICSEARCH_DATA_DIR}/ >/dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = UnCompressing ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." +echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_startElasticsearch.sh b/srv/exo/bin/_startElasticsearch.sh index 37f0c25..7d86f54 100755 --- a/srv/exo/bin/_startElasticsearch.sh +++ b/srv/exo/bin/_startElasticsearch.sh @@ -12,7 +12,7 @@ source ${SCRIPT_DIR}/setenv.sh source ${SCRIPT_DIR}/_functions.sh echo "[INFO] =======================================" -echo "[INFO] Starting ElasticSearch server on ${HOSTNAME}..." +echo "[INFO] Starting Elasticsearch server on ${HOSTNAME}..." echo "[INFO] =======================================" echo "" diff --git a/srv/exo/bin/_stopElasticsearch.sh b/srv/exo/bin/_stopElasticsearch.sh index c20ec36..01de1d9 100755 --- a/srv/exo/bin/_stopElasticsearch.sh +++ b/srv/exo/bin/_stopElasticsearch.sh @@ -12,7 +12,7 @@ source ${SCRIPT_DIR}/setenv.sh source ${SCRIPT_DIR}/_functions.sh echo "[INFO] =======================================" -echo "[INFO] Stopping ElasticSearch server on ${HOSTNAME}..." +echo "[INFO] Stopping Elasticsearch server on ${HOSTNAME}..." echo "[INFO] =======================================" systemd_action stop elasticsearch From 4ca6363644999aa54410c118919e209897ce53de Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 12:37:48 +0200 Subject: [PATCH 32/53] Set executable permission --- srv/exo/bin/_dumpData.sh | 0 srv/exo/bin/_dumpElasticsearch.sh | 0 srv/exo/bin/_dumpMongoDb.sh | 0 srv/exo/bin/_restoreData.sh | 0 srv/exo/bin/_restoreMongoDb.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 srv/exo/bin/_dumpData.sh mode change 100644 => 100755 srv/exo/bin/_dumpElasticsearch.sh mode change 100644 => 100755 srv/exo/bin/_dumpMongoDb.sh mode change 100644 => 100755 srv/exo/bin/_restoreData.sh mode change 100644 => 100755 srv/exo/bin/_restoreMongoDb.sh diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh old mode 100644 new mode 100755 diff --git a/srv/exo/bin/_dumpElasticsearch.sh b/srv/exo/bin/_dumpElasticsearch.sh old mode 100644 new mode 100755 diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh old mode 100644 new mode 100755 diff --git a/srv/exo/bin/_restoreData.sh b/srv/exo/bin/_restoreData.sh old mode 100644 new mode 100755 diff --git a/srv/exo/bin/_restoreMongoDb.sh b/srv/exo/bin/_restoreMongoDb.sh old mode 100644 new mode 100755 From 3bad63d95052f7bd13b6401d357396b5a86270f3 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 12:38:30 +0200 Subject: [PATCH 33/53] Fix eXo startup detection --- srv/exo/bin/_starteXo.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/srv/exo/bin/_starteXo.sh b/srv/exo/bin/_starteXo.sh index 2e3219b..2d4d8d4 100755 --- a/srv/exo/bin/_starteXo.sh +++ b/srv/exo/bin/_starteXo.sh @@ -16,6 +16,8 @@ echo "[INFO] = $(display_date) Start PLF server on ${HOSTNAME} ..." echo "[INFO] =======================================" if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then + PREVIOUS_START_COUNT=$(grep -c "Server startup in" ${PLF_LOG_DIR}/platform.log) + systemd_action start ${PLF_NAME} echo -n "[INFO] $(display_date) Waiting for logs availability ." @@ -35,7 +37,7 @@ if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_N # Check for the end of startup set +e while [ true ]; do - if grep -q "Server startup in" ${PLF_LOG_DIR}/platform.log; then + if [ $(grep -c "Server startup in" ${PLF_LOG_DIR}/platform.log) -gt ${PREVIOUS_START_COUNT} ] ; then kill ${_tailPID} wait ${_tailPID} 2>/dev/null break From b6f443e5dda5bec0687c7a312aa4b5b24f792230 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 12:38:44 +0200 Subject: [PATCH 34/53] Fix one mor typo --- srv/exo/bin/stop_plateform.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/exo/bin/stop_plateform.sh b/srv/exo/bin/stop_plateform.sh index 1e889b9..ea5c668 100755 --- a/srv/exo/bin/stop_plateform.sh +++ b/srv/exo/bin/stop_plateform.sh @@ -17,7 +17,7 @@ echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." echo "[INFO] =======================================" ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticSearch.sh +ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh From 54122b79f9360bfae5e40a1e62610f461a8e05fa Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 12:40:04 +0200 Subject: [PATCH 35/53] utility script to install/synchonize all the servers --- srv/exo/bin/sync_scripts.sh | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 srv/exo/bin/sync_scripts.sh diff --git a/srv/exo/bin/sync_scripts.sh b/srv/exo/bin/sync_scripts.sh new file mode 100755 index 0000000..8caa217 --- /dev/null +++ b/srv/exo/bin/sync_scripts.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +#### +# Copy the management scripts on all the servers +### + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +echo $SCRIPT_NAME +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh +echo "" + +sync_files() { + local CONNECT_STRING=$1 + rsync -avP --delete --backup ${SCRIPT_DIR}/backups ${SCRIPT_DIR}/ ${CONNECT_STRING}:${SCRIPT_DIR} +} + +mkdir -p backup + +echo "[INFO] Copying script to eXo server..." +sync_files ${EXO_USER}@${EXO_PLF_SERVER} + +echo "[INFO] Copying script to database server..." +sync_files ${EXO_USER}@${EXO_DB_SERVER} + +echo "[INFO] Copying script to mongo server..." +sync_files ${EXO_USER}@${EXO_MONGO_SERVER} + +echo "[INFO] Copying script to elasticsearch server..." +sync_files ${EXO_USER}@${EXO_ES_SERVER} + +echo "[INFO] $(display_date) Done" From 2922e337fd9650113fc998d0e82b738c9d20bbdb Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 17:16:23 +0200 Subject: [PATCH 36/53] Elasticsearch restore --- srv/exo/bin/_dumpElasticsearch.sh | 4 ++-- srv/exo/bin/_restoreElasticsearch.sh | 27 ++++++++++++++++++-------- srv/exo/bin/_setenv-template.sh | 2 ++ srv/exo/bin/_sudoers/exo-elasticsearch | 3 +++ 4 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 srv/exo/bin/_sudoers/exo-elasticsearch diff --git a/srv/exo/bin/_dumpElasticsearch.sh b/srv/exo/bin/_dumpElasticsearch.sh index dc8000d..cd5abdb 100755 --- a/srv/exo/bin/_dumpElasticsearch.sh +++ b/srv/exo/bin/_dumpElasticsearch.sh @@ -19,11 +19,11 @@ rm -rf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/* pushd ${BACKUP_WORKING_DIR}/tmp_elasticsearch >/dev/null 2>&1 echo "[INFO] =======================================" -echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ..." +echo "[INFO] = Compressing ${PLF_NAME} data into ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 +pushd ${BACKUP_WORKING_DIR}/tmp_elasticsearch >/dev/null 2>&1 display_time tar --directory $(dirname ${ELASTICSEARCH_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 $(basename ${ELASTICSEARCH_DATA_DIR}) diff --git a/srv/exo/bin/_restoreElasticsearch.sh b/srv/exo/bin/_restoreElasticsearch.sh index 8688751..ac1f05b 100755 --- a/srv/exo/bin/_restoreElasticsearch.sh +++ b/srv/exo/bin/_restoreElasticsearch.sh @@ -13,18 +13,29 @@ source ${SCRIPT_DIR}/_functions.sh BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} -# Initialize working directory -rm -rf ${ELASTICSEARCH_DATA_DIR}/* -pushd ${ELASTICSEARCH_DATA_DIR}/ >/dev/null 2>&1 - echo "[INFO] =======================================" -echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_elastic/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." +echo "[INFO] Restoring Elasticsearch data" echo "[INFO] =======================================" -echo "[INFO] $(display_date)" -pushd ${BACKUP_WORKING_DIR}/tmp_elastic >/dev/null 2>&1 +pushd ${BACKUP_WORKING_DIR}/tmp_elasticsearch >/dev/null 2>&1 + +if ${BACKUP_ON_RESTORE} && [ -e "${ELASTICSEARCH_DATA_DIR}/nodes.old" ]; then + echo "[INFO] Removing previous backup save directory (${ELASTICSEARCH_DATA_DIR}/nodes.old)..." + sudo -u elasticsearch rm -rf ${ELASTICSEARCH_DATA_DIR}/nodes.old +fi -display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 -C ${ELASTICSEARCH_DATA_DIR} +if ${BACKUP_ON_RESTORE} && [ -e "${ELASTICSEARCH_DATA_DIR}/nodes" ]; then + echo "[INFO] Keeping current data in (${ELASTICSEARCH_DATA_DIR}/nodes.old) directory ..." + sudo -u elasticsearch mv -f ${ELASTICSEARCH_DATA_DIR}/nodes ${ELASTICSEARCH_DATA_DIR}/nodes.old +else + echo "[INFO] Removing current data on (${ELASTICSEARCH_DATA_DIR}/nodes) directory ..." + sudo -u elasticsearch rm -rf ${ELASTICSEARCH_DATA_DIR}/nodes ${ELASTICSEARCH_DATA_DIR}/nodes +fi + + +echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." +echo "[INFO] $(display_date)" +display_time sudo -u elasticsearch tar xf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 -C ${ELASTICSEARCH_DATA_DIR}/.. popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index e7fcdd3..d76119a 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -39,3 +39,5 @@ CHAT_DATABASE=chat ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch #DOWNLOAD BACKUP DOWNLOAD_BACKUP=false +# Backup the current data before restoring +BACKUP_ON_RESTORE=true diff --git a/srv/exo/bin/_sudoers/exo-elasticsearch b/srv/exo/bin/_sudoers/exo-elasticsearch new file mode 100644 index 0000000..0f8220c --- /dev/null +++ b/srv/exo/bin/_sudoers/exo-elasticsearch @@ -0,0 +1,3 @@ +Cmnd_Alias EXO_CMD = /bin/systemctl start elasticsearch,/bin/systemctl stop elasticsearch,/bin/systemctl status elasticsearch +exo ALL=(ALL) NOPASSWD: EXO_CMD +exo ALL=(elasticsearch) NOPASSWD: ALL From 50acacd41574d756821c389bebcfcd4567ce9868 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 17:19:58 +0200 Subject: [PATCH 37/53] Fix remote and local backup sync --- srv/exo/bin/_setenv-template.sh | 4 ++-- srv/exo/bin/backup_plateform.sh | 10 +++++----- srv/exo/bin/restore_plateform.sh | 12 ++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/_setenv-template.sh index d76119a..a3a4999 100755 --- a/srv/exo/bin/_setenv-template.sh +++ b/srv/exo/bin/_setenv-template.sh @@ -37,7 +37,7 @@ EXO_DATA_DIR=/srv/data/exo CHAT_DATABASE=chat #Elastic Backup ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch -#DOWNLOAD BACKUP -DOWNLOAD_BACKUP=false +# Retrieve the backup on the server launching the restore +REMOTE_BACKUP=true # Backup the current data before restoring BACKUP_ON_RESTORE=true diff --git a/srv/exo/bin/backup_plateform.sh b/srv/exo/bin/backup_plateform.sh index cb0cec8..806f775 100755 --- a/srv/exo/bin/backup_plateform.sh +++ b/srv/exo/bin/backup_plateform.sh @@ -38,16 +38,16 @@ ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh DOWNTIME_END_TIME=$(date +%s) -if [ ${DOWNLOAD_BACKUP} ]; then +if [ ${REMOTE_BACKUP} ]; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${BACKUP_DIR} else - rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR} - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR} + rsync -av ${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} + rsync -av ${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} + rsync -av ${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} + rsync -av ${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${BACKUP_DIR} fi SCRIPT_END_TIME=$(date +%s) diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_plateform.sh index 6c5fd2b..d3cad18 100755 --- a/srv/exo/bin/restore_plateform.sh +++ b/srv/exo/bin/restore_plateform.sh @@ -21,16 +21,16 @@ fi BACKUP_DATE=$1 -if [ ${DOWNLOAD_BACKUP} ]; then - rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ - rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ - rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ - rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ -else +if ${REMOTE_BACKUP}; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ +else + rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ fi DOWNTIME_START_TIME=$(date +%s) From abfd9548cc66c72ae083702ff8eefac33cb7d518 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 17:26:19 +0200 Subject: [PATCH 38/53] rename _setenv-template.sh --- srv/exo/bin/{_setenv-template.sh => setenv-template.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename srv/exo/bin/{_setenv-template.sh => setenv-template.sh} (100%) diff --git a/srv/exo/bin/_setenv-template.sh b/srv/exo/bin/setenv-template.sh similarity index 100% rename from srv/exo/bin/_setenv-template.sh rename to srv/exo/bin/setenv-template.sh From 8898d527d1f1c56af78062a43ac410252a9878e2 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 19:26:47 +0200 Subject: [PATCH 39/53] improve mongo restoration --- srv/exo/bin/_dumpMongoDb.sh | 1 + srv/exo/bin/_restoreMongoDb.sh | 34 ++++++++++++++++++++++++++-------- srv/exo/bin/_sudoers/exo-mongo | 2 ++ 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 srv/exo/bin/_sudoers/exo-mongo diff --git a/srv/exo/bin/_dumpMongoDb.sh b/srv/exo/bin/_dumpMongoDb.sh index f324071..bab52ac 100755 --- a/srv/exo/bin/_dumpMongoDb.sh +++ b/srv/exo/bin/_dumpMongoDb.sh @@ -35,6 +35,7 @@ display_time tar --directory ${BACKUP_WORKING_DIR}/tmp_mongo --use-compress-prog echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}" display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} + echo "[INFO] Done" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_restoreMongoDb.sh b/srv/exo/bin/_restoreMongoDb.sh index 039779c..d7f273c 100755 --- a/srv/exo/bin/_restoreMongoDb.sh +++ b/srv/exo/bin/_restoreMongoDb.sh @@ -13,26 +13,44 @@ source ${SCRIPT_DIR}/_functions.sh # Initialize working directory mkdir -p ${BACKUP_WORKING_DIR}/tmp_mongo -rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} pushd ${BACKUP_WORKING_DIR}/tmp_mongo/ >/dev/null 2>&1 BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} -# settings : http://docs.mongodb.org/manual/single/index.html#document-tutorial/backup-databases-with-binary-database-dumps - echo "[INFO] $(display_date)" echo "[INFO] =======================================" echo "[INFO] = restore MongoDB ${CHAT_DATABASE} from ${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} +if ${BACKUP_ON_RESTORE}; then + if [ -e "${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}.old" ]; then + echo "[INFO] = remove previous backup save ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}.old ..." + rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}.old + fi + + echo "[INFO] = Backup current data on ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}.old ..." + display_time mongodump -o ${BACKUP_WORKING_DIR}/tmp_mongo --db=${CHAT_DATABASE} + mv -v ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}.old +fi + TARGET="${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2" -echo "[INFO] Compress mongo dump into ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET}" -display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} -C ${BACKUP_WORKING_DIR}/tmp_mongo/ + +echo "[INFO] Uncompress mongo dump on ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}" +display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} --use-compress-program pbzip2 -C ${BACKUP_WORKING_DIR}/tmp_mongo/ + +echo "[INFO]" +echo "[INFO] Restore database ${CHAT_DATABASE} from ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE}" display_time mongorestore --drop --db=${CHAT_DATABASE} ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} -echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/* content" -display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/* + +echo "[INFO]" + echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} content ..." +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_mongo/${CHAT_DATABASE} + +echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} ..." +display_time rm ${BACKUP_WORKING_DIR}/tmp_mongo/${TARGET} + echo "[INFO] Done" echo "[INFO] $(display_date)" diff --git a/srv/exo/bin/_sudoers/exo-mongo b/srv/exo/bin/_sudoers/exo-mongo new file mode 100644 index 0000000..8095eba --- /dev/null +++ b/srv/exo/bin/_sudoers/exo-mongo @@ -0,0 +1,2 @@ +Cmnd_Alias EXO_CMD = /bin/systemctl start mongod,/bin/systemctl stop mongod,/bin/systemctl status mongod +exo ALL=(ALL) NOPASSWD: EXO_CMD From 475838e50a49b68ead6f4fd84b7c064c5d11a409 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 22:31:33 +0200 Subject: [PATCH 40/53] mysql restore --- srv/exo/bin/_dumpMysqlDatabase.sh | 4 +++- srv/exo/bin/_restoreMysqlDatabase.sh | 21 +++++++++++++++++---- srv/exo/bin/_sudoers/exo-mysql | 2 ++ 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 srv/exo/bin/_sudoers/exo-mysql diff --git a/srv/exo/bin/_dumpMysqlDatabase.sh b/srv/exo/bin/_dumpMysqlDatabase.sh index 67bfa79..a84139f 100755 --- a/srv/exo/bin/_dumpMysqlDatabase.sh +++ b/srv/exo/bin/_dumpMysqlDatabase.sh @@ -26,7 +26,9 @@ echo "[INFO] =======================================" echo "[INFO] = Dumping database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo mysqldump ${DUMP_OPTIONS} ${EXO_DATABASE} | pbzip2 >${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} + +display_time mysqldump ${DUMP_OPTIONS} ${EXO_DATABASE} | pbzip2 >${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} + echo "[INFO] Done" popd >/dev/null 2>&1 diff --git a/srv/exo/bin/_restoreMysqlDatabase.sh b/srv/exo/bin/_restoreMysqlDatabase.sh index dcc947f..4b406ae 100755 --- a/srv/exo/bin/_restoreMysqlDatabase.sh +++ b/srv/exo/bin/_restoreMysqlDatabase.sh @@ -21,10 +21,23 @@ echo "[INFO] =======================================" echo "[INFO] = restoring database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" -display_time sudo bunzip2 < ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} | mysql -echo "[INFO] Remove ${BACKUP_WORKING_DIR}/tmp_db/ content" -display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_db/* -echo "[INFO] Done" + +if ${BACKUP_ON_RESTORE}; then + BACKUP_FILE="${BACKUP_WORKING_DIR}/tmp_db/mysql-old.sql.bz2" + echo "[INFO] Save current database in ${BACKUP_FILE}" + + DUMP_OPTIONS="--single-transaction --add-drop-table" + + display_time sudo mysqldump ${DUMP_OPTIONS} ${EXO_DATABASE} | pbzip2 >${BACKUP_FILE} + + echo "[INFO] $(display_date)" +fi + +display_time pbzip2 -d -c ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} | mysql ${EXO_DATABASE} + +echo "[INFO] Clean ${BACKUP_WORKING_DIR}/tmp_db/ content" +display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} + echo "[INFO] $(display_date)" echo "[INFO] Done" diff --git a/srv/exo/bin/_sudoers/exo-mysql b/srv/exo/bin/_sudoers/exo-mysql new file mode 100644 index 0000000..66b6b05 --- /dev/null +++ b/srv/exo/bin/_sudoers/exo-mysql @@ -0,0 +1,2 @@ +Cmnd_Alias EXO_CMD = /bin/systemctl start mysql, /bin/systemctl stop mysql, /bin/systemctl status mysql +exo ALL=(ALL) NOPASSWD: EXO_CMD From 915a0c33dcab334ca3c19fde402a884aa1de8091 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 23:12:38 +0200 Subject: [PATCH 41/53] exo data restore --- srv/exo/bin/_dumpData.sh | 2 +- srv/exo/bin/_restoreData.sh | 38 +++++++++++++++++++++++++++++++--- srv/exo/bin/setenv-template.sh | 2 +- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index de6e2f1..5e600e7 100755 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -25,7 +25,7 @@ echo "[INFO] $(display_date)" pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 -display_time tar --directory $(dirname ${EXO_DATA_DIR}) --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 $(basename ${EXO_DATA_DIR}) +display_time tar --directory ${EXO_DATA_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 data popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/_restoreData.sh b/srv/exo/bin/_restoreData.sh index ddbc622..b44461d 100755 --- a/srv/exo/bin/_restoreData.sh +++ b/srv/exo/bin/_restoreData.sh @@ -14,16 +14,48 @@ source ${SCRIPT_DIR}/_functions.sh BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} # Initialize working directory -rm -rf ${EXO_DATA_DIR}/* pushd ${EXO_DATA_DIR} >/dev/null 2>&1 +ARCHIVE="${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2" + echo "[INFO] =======================================" -echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 into ${EXO_DATA_DIR} ..." +echo "[INFO] Restoring data from ${ARCHIVE}" echo "[INFO] =======================================" echo "[INFO] $(display_date)" +if ${BACKUP_ON_RESTORE}; then + echo "[INFO] Saving current data ..." + + if [ -e ${EXO_DATA_DIR}/data.beforerestore ]; then + mv -v ${EXO_DATA_DIR}/data.beforerestore ${EXO_DATA_DIR}/data.beforerestore-old + # Can be long process in background + rm -rf ${EXO_DATA_DIR}/data.beforerestore-old & + fi + + if [ -e ${EXO_DATA_DIR}/data ]; then + mv -v ${EXO_DATA_DIR}/data ${EXO_DATA_DIR}/data.beforerestore + fi +else + echo "[INFO] Removing current data ..." + if [ -e ${EXO_DATA_DIR}/data ]; then + mv -v ${EXO_DATA_DIR}/data ${EXO_DATA_DIR}/data.beforerestore + # Can be long process in background + rm -rf ${EXO_DATA_DIR}/data.beforerestore & + fi +fi + pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 -display_time tar xvf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 -C ${EXO_DATA_DIR} +echo "[INFO] = Uncompressing ${ARCHIVE} into ${EXO_DATA_DIR} ..." +display_time tar xf ${ARCHIVE} -C ${EXO_DATA_DIR} +echo "[INFO] $(display_date)" +echo "[INFO] Done" + +rm -v ${ARCHIVE} + +echo "[INFO] = waiting for cleanup to end ..." +# be sure all the cleanup processes are finished +wait + popd >/dev/null 2>&1 echo "[INFO] Done" diff --git a/srv/exo/bin/setenv-template.sh b/srv/exo/bin/setenv-template.sh index a3a4999..534bf66 100755 --- a/srv/exo/bin/setenv-template.sh +++ b/srv/exo/bin/setenv-template.sh @@ -31,7 +31,7 @@ BACKUP_DIR=/srv/backup BACKUP_WORKING_DIR=/var/backup #Database Backup EXO_DATABASE=exo -#Data Backup +# The directory where the eXo "data" directory is present EXO_DATA_DIR=/srv/data/exo #Mongo Backup CHAT_DATABASE=chat From 35afbe9cff0645f6eca0d9e73424232d2a913628 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sat, 13 Apr 2019 23:13:17 +0200 Subject: [PATCH 42/53] allow is-active action on sudoers --- srv/exo/bin/_sudoers/exo-elasticsearch | 2 +- srv/exo/bin/_sudoers/exo-exo | 2 ++ srv/exo/bin/_sudoers/exo-mongo | 2 +- srv/exo/bin/_sudoers/exo-mysql | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 srv/exo/bin/_sudoers/exo-exo diff --git a/srv/exo/bin/_sudoers/exo-elasticsearch b/srv/exo/bin/_sudoers/exo-elasticsearch index 0f8220c..1ddcfa9 100644 --- a/srv/exo/bin/_sudoers/exo-elasticsearch +++ b/srv/exo/bin/_sudoers/exo-elasticsearch @@ -1,3 +1,3 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start elasticsearch,/bin/systemctl stop elasticsearch,/bin/systemctl status elasticsearch +Cmnd_Alias EXO_CMD = /bin/systemctl start elasticsearch,/bin/systemctl stop elasticsearch,/bin/systemctl status elasticsearch, /bin/systemctl -q is-active elasticsearch exo ALL=(ALL) NOPASSWD: EXO_CMD exo ALL=(elasticsearch) NOPASSWD: ALL diff --git a/srv/exo/bin/_sudoers/exo-exo b/srv/exo/bin/_sudoers/exo-exo new file mode 100644 index 0000000..e2b59a9 --- /dev/null +++ b/srv/exo/bin/_sudoers/exo-exo @@ -0,0 +1,2 @@ +Cmnd_Alias EXO_CMD = /bin/systemctl stop exo,/bin/systemctl start exo,/bin/systemctl status exo, /bin/systemctl -q is-active exo +exo ALL=(ALL) NOPASSWD: EXO_CMD diff --git a/srv/exo/bin/_sudoers/exo-mongo b/srv/exo/bin/_sudoers/exo-mongo index 8095eba..2b9b711 100644 --- a/srv/exo/bin/_sudoers/exo-mongo +++ b/srv/exo/bin/_sudoers/exo-mongo @@ -1,2 +1,2 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start mongod,/bin/systemctl stop mongod,/bin/systemctl status mongod +Cmnd_Alias EXO_CMD = /bin/systemctl start mongod,/bin/systemctl stop mongod,/bin/systemctl status mongod, /bin/systemctl -q is-active mongod exo ALL=(ALL) NOPASSWD: EXO_CMD diff --git a/srv/exo/bin/_sudoers/exo-mysql b/srv/exo/bin/_sudoers/exo-mysql index 66b6b05..87cbd9e 100644 --- a/srv/exo/bin/_sudoers/exo-mysql +++ b/srv/exo/bin/_sudoers/exo-mysql @@ -1,2 +1,2 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start mysql, /bin/systemctl stop mysql, /bin/systemctl status mysql +Cmnd_Alias EXO_CMD = /bin/systemctl start mysql, /bin/systemctl stop mysql, /bin/systemctl status mysql, /bin/systemctl -q is-active mysql exo ALL=(ALL) NOPASSWD: EXO_CMD From 1402d67a0f3c58abab5166252bf9eaaeb02dd50a Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sun, 14 Apr 2019 23:11:37 +0200 Subject: [PATCH 43/53] Add a backup retention delay --- srv/exo/bin/_cleanBackups.sh | 27 +++++++++++++++++++++++++++ srv/exo/bin/_restoreElasticsearch.sh | 1 - srv/exo/bin/backup_plateform.sh | 2 ++ srv/exo/bin/setenv-template.sh | 2 ++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100755 srv/exo/bin/_cleanBackups.sh diff --git a/srv/exo/bin/_cleanBackups.sh b/srv/exo/bin/_cleanBackups.sh new file mode 100755 index 0000000..b436ba0 --- /dev/null +++ b/srv/exo/bin/_cleanBackups.sh @@ -0,0 +1,27 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + + +echo "[INFO] =======================================" +echo "[INFO] = Remove old backups and keep only the ${BACKUP_RETENTION} newest ones ..." +echo "[INFO] =======================================" + +pushd ${BACKUP_DIR} &>/dev/null + +NB_FILES_PER_BACKUP=4 + +LINES=$((BACKUP_RETENTION * NB_FILES_PER_BACKUP + 1 )) +rm -rvf $(find . -maxdepth 1 -type f | xargs ls -t | tail -n +${LINES}) + +echo "[INFO] Done" +popd &>/dev/null diff --git a/srv/exo/bin/_restoreElasticsearch.sh b/srv/exo/bin/_restoreElasticsearch.sh index ac1f05b..4798bc6 100755 --- a/srv/exo/bin/_restoreElasticsearch.sh +++ b/srv/exo/bin/_restoreElasticsearch.sh @@ -32,7 +32,6 @@ else sudo -u elasticsearch rm -rf ${ELASTICSEARCH_DATA_DIR}/nodes ${ELASTICSEARCH_DATA_DIR}/nodes fi - echo "[INFO] = Uncompressing ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 into ${ELASTICSEARCH_DATA_DIR} ..." echo "[INFO] $(display_date)" display_time sudo -u elasticsearch tar xf ${BACKUP_WORKING_DIR}/tmp_elasticsearch/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 -C ${ELASTICSEARCH_DATA_DIR}/.. diff --git a/srv/exo/bin/backup_plateform.sh b/srv/exo/bin/backup_plateform.sh index 806f775..f1de6a0 100755 --- a/srv/exo/bin/backup_plateform.sh +++ b/srv/exo/bin/backup_plateform.sh @@ -50,6 +50,8 @@ else rsync -av ${BACKUP_WORKING_DIR}/tmp_elasticsearch/* ${BACKUP_DIR} fi +${SCRIPT_DIR}/_cleanBackups.sh + SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" diff --git a/srv/exo/bin/setenv-template.sh b/srv/exo/bin/setenv-template.sh index 534bf66..7934ceb 100755 --- a/srv/exo/bin/setenv-template.sh +++ b/srv/exo/bin/setenv-template.sh @@ -41,3 +41,5 @@ ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch REMOTE_BACKUP=true # Backup the current data before restoring BACKUP_ON_RESTORE=true +# Number of backups to keep +BACKUP_RETENTION=7 From 3c07762ccfc76ba5edd9ce546ee9081c196478eb Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sun, 14 Apr 2019 23:12:11 +0200 Subject: [PATCH 44/53] Automatically retrieve ssh server fingerprint --- srv/exo/bin/sync_scripts.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/srv/exo/bin/sync_scripts.sh b/srv/exo/bin/sync_scripts.sh index 8caa217..b1e608c 100755 --- a/srv/exo/bin/sync_scripts.sh +++ b/srv/exo/bin/sync_scripts.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -eu #### # Copy the management scripts on all the servers @@ -17,23 +17,36 @@ source ${SCRIPT_DIR}/setenv.sh source ${SCRIPT_DIR}/_functions.sh echo "" +add_server_fingerprint() { + local SERVER=$1 + + if ! $(grep -q ${SERVER} ~/.ssh/known_hosts); then + echo "[INFO] Add ${SERVER} server fingerprint on known_hosts file ..." + ssh-keyscan -H ${SERVER} &>> ~/.ssh/known_hosts + fi +} + sync_files() { local CONNECT_STRING=$1 - rsync -avP --delete --backup ${SCRIPT_DIR}/backups ${SCRIPT_DIR}/ ${CONNECT_STRING}:${SCRIPT_DIR} + rsync -avP --delete --backup ${SCRIPT_DIR}/backup --exclude backup ${SCRIPT_DIR} ${CONNECT_STRING}:$(dirname ${SCRIPT_DIR}) } mkdir -p backup echo "[INFO] Copying script to eXo server..." +add_server_fingerprint ${EXO_PLF_SERVER} sync_files ${EXO_USER}@${EXO_PLF_SERVER} echo "[INFO] Copying script to database server..." +add_server_fingerprint ${EXO_DB_SERVER} sync_files ${EXO_USER}@${EXO_DB_SERVER} echo "[INFO] Copying script to mongo server..." +add_server_fingerprint ${EXO_MONGO_SERVER} sync_files ${EXO_USER}@${EXO_MONGO_SERVER} echo "[INFO] Copying script to elasticsearch server..." +add_server_fingerprint ${EXO_ES_SERVER} sync_files ${EXO_USER}@${EXO_ES_SERVER} echo "[INFO] $(display_date) Done" From 4c1c6bb192f2ffa1130621859bd9ac562a74f778 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sun, 14 Apr 2019 23:12:58 +0200 Subject: [PATCH 45/53] Fix eXo startup when it's the first start of a day --- srv/exo/bin/_starteXo.sh | 3 +++ srv/exo/bin/start_plateform.sh | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/srv/exo/bin/_starteXo.sh b/srv/exo/bin/_starteXo.sh index 2d4d8d4..107528b 100755 --- a/srv/exo/bin/_starteXo.sh +++ b/srv/exo/bin/_starteXo.sh @@ -16,7 +16,10 @@ echo "[INFO] = $(display_date) Start PLF server on ${HOSTNAME} ..." echo "[INFO] =======================================" if [ -e ${PLF_SRV_DIR}/current/bin/catalina.sh -a -e /etc/systemd/system/${PLF_NAME}.service ]; then + # if no previous startup was found grep return 1, so set -e is needed + set +e PREVIOUS_START_COUNT=$(grep -c "Server startup in" ${PLF_LOG_DIR}/platform.log) + set -e systemd_action start ${PLF_NAME} diff --git a/srv/exo/bin/start_plateform.sh b/srv/exo/bin/start_plateform.sh index 920653a..80a183a 100755 --- a/srv/exo/bin/start_plateform.sh +++ b/srv/exo/bin/start_plateform.sh @@ -19,4 +19,5 @@ ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDatabase.sh ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh -echo "[INFO] $(display_date) Done" +echo "[INFO] $(display_date)" +echo "[INFO] Plateform started" From f9074ba6d331fed6e74aca90cf49e3d65ed9195f Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Sun, 14 Apr 2019 23:43:52 +0200 Subject: [PATCH 46/53] fix frenglish typo --- srv/exo/bin/{backup_plateform.sh => backup_platform.sh} | 0 srv/exo/bin/{restore_plateform.sh => restore_platform.sh} | 0 srv/exo/bin/{start_plateform.sh => start_platform.sh} | 0 srv/exo/bin/{stop_plateform.sh => stop_platform.sh} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename srv/exo/bin/{backup_plateform.sh => backup_platform.sh} (100%) rename srv/exo/bin/{restore_plateform.sh => restore_platform.sh} (100%) rename srv/exo/bin/{start_plateform.sh => start_platform.sh} (100%) rename srv/exo/bin/{stop_plateform.sh => stop_platform.sh} (100%) diff --git a/srv/exo/bin/backup_plateform.sh b/srv/exo/bin/backup_platform.sh similarity index 100% rename from srv/exo/bin/backup_plateform.sh rename to srv/exo/bin/backup_platform.sh diff --git a/srv/exo/bin/restore_plateform.sh b/srv/exo/bin/restore_platform.sh similarity index 100% rename from srv/exo/bin/restore_plateform.sh rename to srv/exo/bin/restore_platform.sh diff --git a/srv/exo/bin/start_plateform.sh b/srv/exo/bin/start_platform.sh similarity index 100% rename from srv/exo/bin/start_plateform.sh rename to srv/exo/bin/start_platform.sh diff --git a/srv/exo/bin/stop_plateform.sh b/srv/exo/bin/stop_platform.sh similarity index 100% rename from srv/exo/bin/stop_plateform.sh rename to srv/exo/bin/stop_platform.sh From 64ed00f8c2332c5309eb8bbe83891b237dbdd569 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Mon, 15 Apr 2019 00:18:35 +0200 Subject: [PATCH 47/53] fix archive transfer during the restore --- srv/exo/bin/_restoreMysqlDatabase.sh | 4 +--- srv/exo/bin/restore_platform.sh | 14 +++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/srv/exo/bin/_restoreMysqlDatabase.sh b/srv/exo/bin/_restoreMysqlDatabase.sh index 4b406ae..debc2aa 100755 --- a/srv/exo/bin/_restoreMysqlDatabase.sh +++ b/srv/exo/bin/_restoreMysqlDatabase.sh @@ -18,7 +18,7 @@ BACKUP_DATE=${1:-$(date "+%Y-%m-%d-%H%M%S")} TARGET_NAME="${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2" echo "[INFO] =======================================" -echo "[INFO] = restoring database ${EXO_DATABASE} into ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." +echo "[INFO] = restoring database ${EXO_DATABASE} from ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} ..." echo "[INFO] =======================================" echo "[INFO] $(display_date)" @@ -40,5 +40,3 @@ display_time rm -rf ${BACKUP_WORKING_DIR}/tmp_db/${TARGET_NAME} echo "[INFO] $(display_date)" echo "[INFO] Done" - -popd >/dev/null 2>&1 diff --git a/srv/exo/bin/restore_platform.sh b/srv/exo/bin/restore_platform.sh index d3cad18..81932b6 100755 --- a/srv/exo/bin/restore_platform.sh +++ b/srv/exo/bin/restore_platform.sh @@ -22,15 +22,15 @@ fi BACKUP_DATE=$1 if ${REMOTE_BACKUP}; then - rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ - rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ - rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ - rsync -av ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ -else - rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ - rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_ES_SERVER}:${BACKUP_WORKING_DIR}/tmp_elasticsearch/ +else + rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${BACKUP_WORKING_DIR}/tmp_data/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${BACKUP_WORKING_DIR}/tmp_db/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${BACKUP_WORKING_DIR}/tmp_mongo/ + rsync -av ${BACKUP_DIR}/${PLF_NAME}-es-${BACKUP_DATE}.tar.bz2 ${BACKUP_WORKING_DIR}/tmp_elasticsearch/ fi DOWNTIME_START_TIME=$(date +%s) From b32116a2df93bfcca82775eba7999db4b6074d6d Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Mon, 15 Apr 2019 11:17:56 +0200 Subject: [PATCH 48/53] use more convenient directory --- srv/exo/bin/setenv-template.sh | 4 ++-- srv/exo/bin/sync_scripts.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/srv/exo/bin/setenv-template.sh b/srv/exo/bin/setenv-template.sh index 7934ceb..4f358fe 100755 --- a/srv/exo/bin/setenv-template.sh +++ b/srv/exo/bin/setenv-template.sh @@ -27,8 +27,8 @@ EXO_ES_SERVER=${ES_SERVER} EXO_DB_SERVER=${DB_SERVER} EXO_MONGO_SERVER=${MONGO_SERVER} EXO_USER=exo -BACKUP_DIR=/srv/backup -BACKUP_WORKING_DIR=/var/backup +BACKUP_DIR=/srv/backups +BACKUP_WORKING_DIR=/srv/tmp #Database Backup EXO_DATABASE=exo # The directory where the eXo "data" directory is present diff --git a/srv/exo/bin/sync_scripts.sh b/srv/exo/bin/sync_scripts.sh index b1e608c..01dd477 100755 --- a/srv/exo/bin/sync_scripts.sh +++ b/srv/exo/bin/sync_scripts.sh @@ -28,10 +28,10 @@ add_server_fingerprint() { sync_files() { local CONNECT_STRING=$1 - rsync -avP --delete --backup ${SCRIPT_DIR}/backup --exclude backup ${SCRIPT_DIR} ${CONNECT_STRING}:$(dirname ${SCRIPT_DIR}) + rsync -avP --delete --backup ${SCRIPT_DIR}/backups --exclude backups ${SCRIPT_DIR} ${CONNECT_STRING}:$(dirname ${SCRIPT_DIR}) } -mkdir -p backup +mkdir -p backups echo "[INFO] Copying script to eXo server..." add_server_fingerprint ${EXO_PLF_SERVER} From d59a964b9d272b329156760c5000bfa9f8791ef7 Mon Sep 17 00:00:00 2001 From: bourasom Date: Tue, 14 Jan 2020 19:22:19 +0100 Subject: [PATCH 49/53] ITOP-4405: change cmnd_alias for sudoers in case of same server --- srv/exo/bin/_sudoers/exo-elasticsearch | 4 ++-- srv/exo/bin/_sudoers/exo-mongo | 4 ++-- srv/exo/bin/_sudoers/exo-mysql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/srv/exo/bin/_sudoers/exo-elasticsearch b/srv/exo/bin/_sudoers/exo-elasticsearch index 1ddcfa9..6aa8b72 100644 --- a/srv/exo/bin/_sudoers/exo-elasticsearch +++ b/srv/exo/bin/_sudoers/exo-elasticsearch @@ -1,3 +1,3 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start elasticsearch,/bin/systemctl stop elasticsearch,/bin/systemctl status elasticsearch, /bin/systemctl -q is-active elasticsearch -exo ALL=(ALL) NOPASSWD: EXO_CMD +Cmnd_Alias EXO_CMD_ES = /bin/systemctl start elasticsearch,/bin/systemctl stop elasticsearch,/bin/systemctl status elasticsearch, /bin/systemctl -q is-active elasticsearch +exo ALL=(ALL) NOPASSWD: EXO_CMD_ES exo ALL=(elasticsearch) NOPASSWD: ALL diff --git a/srv/exo/bin/_sudoers/exo-mongo b/srv/exo/bin/_sudoers/exo-mongo index 2b9b711..ff6dbdd 100644 --- a/srv/exo/bin/_sudoers/exo-mongo +++ b/srv/exo/bin/_sudoers/exo-mongo @@ -1,2 +1,2 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start mongod,/bin/systemctl stop mongod,/bin/systemctl status mongod, /bin/systemctl -q is-active mongod -exo ALL=(ALL) NOPASSWD: EXO_CMD +Cmnd_Alias EXO_CMD_MONGO = /bin/systemctl start mongod,/bin/systemctl stop mongod,/bin/systemctl status mongod, /bin/systemctl -q is-active mongod +exo ALL=(ALL) NOPASSWD: EXO_CMD_MONGO diff --git a/srv/exo/bin/_sudoers/exo-mysql b/srv/exo/bin/_sudoers/exo-mysql index 87cbd9e..292e8d3 100644 --- a/srv/exo/bin/_sudoers/exo-mysql +++ b/srv/exo/bin/_sudoers/exo-mysql @@ -1,2 +1,2 @@ -Cmnd_Alias EXO_CMD = /bin/systemctl start mysql, /bin/systemctl stop mysql, /bin/systemctl status mysql, /bin/systemctl -q is-active mysql -exo ALL=(ALL) NOPASSWD: EXO_CMD +Cmnd_Alias EXO_CMD_MYSQL = /bin/systemctl start mysql, /bin/systemctl stop mysql, /bin/systemctl status mysql, /bin/systemctl -q is-active mysql +exo ALL=(ALL) NOPASSWD: EXO_CMD_MYSQL From 09823766197cfd51baa4c049b9286a44f9b9f6c6 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Tue, 14 Apr 2020 19:14:52 +0200 Subject: [PATCH 50/53] don't expect the exo data to be in a directory named data --- srv/exo/bin/_dumpData.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/exo/bin/_dumpData.sh b/srv/exo/bin/_dumpData.sh index 5e600e7..dc25b77 100755 --- a/srv/exo/bin/_dumpData.sh +++ b/srv/exo/bin/_dumpData.sh @@ -25,7 +25,7 @@ echo "[INFO] $(display_date)" pushd ${BACKUP_WORKING_DIR}/tmp_data >/dev/null 2>&1 -display_time tar --directory ${EXO_DATA_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 data +display_time tar --directory ${EXO_DATA_DIR} --use-compress-prog=pbzip2 -cpf ${BACKUP_WORKING_DIR}/tmp_data/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 . popd >/dev/null 2>&1 echo "[INFO] Done" From 5ad95d3296be99b9e61b691c07982e399521ac17 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Tue, 14 Apr 2020 19:16:35 +0200 Subject: [PATCH 51/53] allow to backup locally without ssh usage --- srv/exo/bin/_functions.sh | 17 +++++++++++++++++ srv/exo/bin/backup_platform.sh | 22 ++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/srv/exo/bin/_functions.sh b/srv/exo/bin/_functions.sh index 8288c64..eac0d7b 100755 --- a/srv/exo/bin/_functions.sh +++ b/srv/exo/bin/_functions.sh @@ -7,6 +7,23 @@ shopt -s expand_aliases alias display_time='/usr/bin/time -f "[INFO] Return code : %x\n[INFO] Time report (sec) : \t%e real,\t%U user,\t%S system"' alias display_date='/bin/date +"%Y-%m-%d %H:%M:%S"' +getSSHCommand() { + if [ $# -ne 2 ]; then + echo "" + echo "[ERROR] No enough parameters for function getSSHCommand" + echo "[ERROR] The target host and the user must be specified" + exit 1 + fi + TARGET=$1 + USER=$2 + + if [ "${TARGET}" == "localhost" ] || [ "${TARGET}" == "127.0.0.1" ]; then + echo "" + else + echo "ssh ${USER}@${TARGET}" # space is important here + fi +} + # $1 : Startup time # $2 : End time delay() { diff --git a/srv/exo/bin/backup_platform.sh b/srv/exo/bin/backup_platform.sh index f1de6a0..a6c53bf 100755 --- a/srv/exo/bin/backup_platform.sh +++ b/srv/exo/bin/backup_platform.sh @@ -17,28 +17,30 @@ DOWNTIME_START_TIME=$(date +%s) BACKUP_DATE=$(date "+%Y-%m-%d-%H%M%S") +SSH_COMMAND="$(getSSHCommand ${EXO_PLF_SERVER} ${EXO_USER})" + # Stop it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopeXo.sh # Dump data -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_dumpData.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_dumpData.sh ${BACKUP_DATE} # Dump database -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_dumpMysqlDatabase.sh ${BACKUP_DATE} # Dump MongoDB -ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_dumpMongoDb.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_dumpMongoDb.sh ${BACKUP_DATE} # Dump Elastic -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_dumpElasticsearch.sh ${BACKUP_DATE} -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_dumpElasticsearch.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_starteXo.sh DOWNTIME_END_TIME=$(date +%s) -if [ ${REMOTE_BACKUP} ]; then +if [ "${REMOTE_BACKUP}" == true ]; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/* ${BACKUP_DIR} rsync -av ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/* ${BACKUP_DIR} @@ -55,7 +57,7 @@ ${SCRIPT_DIR}/_cleanBackups.sh SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" -echo "[INFO] = Backup ended -" $(date) +echo "[INFO] = Backup ended - $(date)" echo "[INFO] =--------------------------------------" display_delay "= -> Process duration" $SCRIPT_START_TIME $SCRIPT_END_TIME echo "[INFO] =--------------------------------------" From a6693b45c40c9a026b4d8a1809011d373705ad57 Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Tue, 14 Apr 2020 19:21:18 +0200 Subject: [PATCH 52/53] allow to restore locally without using ssh --- srv/exo/bin/restore_platform.sh | 22 ++++++++++++---------- srv/exo/bin/setenv-template.sh | 14 +++++++------- srv/exo/bin/start_platform.sh | 13 +++++++++---- srv/exo/bin/stop_platform.sh | 10 ++++++---- 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/srv/exo/bin/restore_platform.sh b/srv/exo/bin/restore_platform.sh index 81932b6..add603e 100755 --- a/srv/exo/bin/restore_platform.sh +++ b/srv/exo/bin/restore_platform.sh @@ -19,9 +19,11 @@ if [ $# -lt 1 ]; then exit 1 fi +SSH_COMMAND="$(getSSHCommand ${EXO_PLF_SERVER} ${EXO_USER})" + BACKUP_DATE=$1 -if ${REMOTE_BACKUP}; then +if [ "${REMOTE_BACKUP}" == "true" ] ; then rsync -av ${BACKUP_DIR}/${PLF_NAME}-data-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/ rsync -av ${BACKUP_DIR}/${PLF_NAME}-db-${BACKUP_DATE}.sql.bz2 ${EXO_USER}@${EXO_DB_SERVER}:${BACKUP_WORKING_DIR}/tmp_db/ rsync -av ${BACKUP_DIR}/${PLF_NAME}-${CHAT_DATABASE}-${BACKUP_DATE}.tar.bz2 ${EXO_USER}@${EXO_MONGO_SERVER}:${BACKUP_WORKING_DIR}/tmp_mongo/ @@ -36,30 +38,30 @@ fi DOWNTIME_START_TIME=$(date +%s) # Stop it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopeXo.sh # restore data -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_restoreData.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_restoreData.sh ${BACKUP_DATE} # Dump database -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_restoreMysqlDatabase.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_restoreMysqlDatabase.sh ${BACKUP_DATE} # Dump MongoDB -ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_restoreMongoDb.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_restoreMongoDb.sh ${BACKUP_DATE} # Dump Elastic -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_restoreElasticsearch.sh ${BACKUP_DATE} -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_restoreElasticsearch.sh ${BACKUP_DATE} +${SSH_COMMAND} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_starteXo.sh DOWNTIME_END_TIME=$(date +%s) SCRIPT_END_TIME=$(date +%s) echo "[INFO] =======================================" -echo "[INFO] = Backup ended -" $(date) +echo "[INFO] = Backup ended - $(date)" echo "[INFO] =--------------------------------------" display_delay "= -> Process duration" $SCRIPT_START_TIME $SCRIPT_END_TIME echo "[INFO] =--------------------------------------" diff --git a/srv/exo/bin/setenv-template.sh b/srv/exo/bin/setenv-template.sh index 4f358fe..a248c24 100755 --- a/srv/exo/bin/setenv-template.sh +++ b/srv/exo/bin/setenv-template.sh @@ -22,13 +22,13 @@ PLF_SRV_DIR=/srv/exo PLF_LOG_DIR=/srv/exo/current/logs PLF_NAME=exo -EXO_PLF_SERVER=${PLF_SERVER} -EXO_ES_SERVER=${ES_SERVER} -EXO_DB_SERVER=${DB_SERVER} -EXO_MONGO_SERVER=${MONGO_SERVER} +EXO_PLF_SERVER=localhost +EXO_ES_SERVER=localhost +EXO_DB_SERVER=localhost +EXO_MONGO_SERVER=localhost EXO_USER=exo -BACKUP_DIR=/srv/backups -BACKUP_WORKING_DIR=/srv/tmp +BACKUP_DIR=/var/backups/exo +BACKUP_WORKING_DIR=/var/backups/tmp #Database Backup EXO_DATABASE=exo # The directory where the eXo "data" directory is present @@ -38,7 +38,7 @@ CHAT_DATABASE=chat #Elastic Backup ELASTICSEARCH_DATA_DIR=/srv/data/elasticsearch # Retrieve the backup on the server launching the restore -REMOTE_BACKUP=true +REMOTE_BACKUP=false # Backup the current data before restoring BACKUP_ON_RESTORE=true # Number of backups to keep diff --git a/srv/exo/bin/start_platform.sh b/srv/exo/bin/start_platform.sh index 80a183a..9775670 100755 --- a/srv/exo/bin/start_platform.sh +++ b/srv/exo/bin/start_platform.sh @@ -11,13 +11,18 @@ SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh + +SSH_COMMAND="$(getSSHCommand ${EXO_PLF_SERVER} ${EXO_USER})" + echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Start ${PLF_NAME} server on ${HOSTNAME} ..." echo "[INFO] =======================================" -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_startDatabase.sh -ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_startMongo.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_startElasticsearch.sh -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_starteXo.sh + +${SSH_COMMAND} ${SCRIPT_DIR}/_startDatabase.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_startMongo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_startElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_starteXo.sh + echo "[INFO] $(display_date)" echo "[INFO] Plateform started" diff --git a/srv/exo/bin/stop_platform.sh b/srv/exo/bin/stop_platform.sh index ea5c668..2da75f3 100755 --- a/srv/exo/bin/stop_platform.sh +++ b/srv/exo/bin/stop_platform.sh @@ -11,14 +11,16 @@ source ${SCRIPT_DIR}/setenv.sh # Load common functions source ${SCRIPT_DIR}/_functions.sh +SSH_COMMAND="$(getSSHCommand ${EXO_PLF_SERVER} ${EXO_USER})" + echo "" echo "[INFO] =======================================" echo "[INFO] = $(display_date) Stop ${PLF_NAME} (leader:${HOSTNAME})..." echo "[INFO] =======================================" -ssh ${EXO_USER}@${EXO_PLF_SERVER} ${SCRIPT_DIR}/_stopeXo.sh -ssh ${EXO_USER}@${EXO_ES_SERVER} ${SCRIPT_DIR}/_stopElasticsearch.sh -ssh ${EXO_USER}@${EXO_DB_SERVER} ${SCRIPT_DIR}/_stopDatabase.sh -ssh ${EXO_USER}@${EXO_MONGO_SERVER} ${SCRIPT_DIR}/_stopMongo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopeXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopElasticsearch.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopDatabase.sh +${SSH_COMMAND} ${SCRIPT_DIR}/_stopMongo.sh echo "[INFO] $(display_date) Done" From d33348315485b0e4538641ec9a55c247334b32ce Mon Sep 17 00:00:00 2001 From: Vincent Sellier Date: Mon, 4 May 2020 12:22:30 +0200 Subject: [PATCH 53/53] TASK-23980 #6 Warmup the server after a restart (#7) --- srv/exo/bin/backup_platform.sh | 3 ++ srv/exo/bin/setenv-template.sh | 9 +++++ srv/exo/bin/start_platform.sh | 2 + srv/exo/bin/warmup.sh | 72 ++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100755 srv/exo/bin/warmup.sh diff --git a/srv/exo/bin/backup_platform.sh b/srv/exo/bin/backup_platform.sh index a6c53bf..8b58b9e 100755 --- a/srv/exo/bin/backup_platform.sh +++ b/srv/exo/bin/backup_platform.sh @@ -39,6 +39,9 @@ ${SSH_COMMAND} ${SCRIPT_DIR}/_startElasticsearch.sh # Start it ${SSH_COMMAND} ${SCRIPT_DIR}/_starteXo.sh +# Warmup the server +${SSH_COMMAND} ${SCRIPT_DIR}/warmup.sh + DOWNTIME_END_TIME=$(date +%s) if [ "${REMOTE_BACKUP}" == true ]; then rsync -av ${EXO_USER}@${EXO_PLF_SERVER}:${BACKUP_WORKING_DIR}/tmp_data/* ${BACKUP_DIR} diff --git a/srv/exo/bin/setenv-template.sh b/srv/exo/bin/setenv-template.sh index a248c24..c944083 100755 --- a/srv/exo/bin/setenv-template.sh +++ b/srv/exo/bin/setenv-template.sh @@ -43,3 +43,12 @@ REMOTE_BACKUP=false BACKUP_ON_RESTORE=true # Number of backups to keep BACKUP_RETENTION=7 + +## Server Warmup +# This configuration allow to perform +# several requests on the server to initiate +# the js compilation and initial cache loading +WARMUP_ACTIVATED=false +WARMUP_URL=http://localhost:8080 +WARMUP_USER=root +WARMUP_PASSWORD=gtn diff --git a/srv/exo/bin/start_platform.sh b/srv/exo/bin/start_platform.sh index 9775670..29a349b 100755 --- a/srv/exo/bin/start_platform.sh +++ b/srv/exo/bin/start_platform.sh @@ -24,5 +24,7 @@ ${SSH_COMMAND} ${SCRIPT_DIR}/_startMongo.sh ${SSH_COMMAND} ${SCRIPT_DIR}/_startElasticsearch.sh ${SSH_COMMAND} ${SCRIPT_DIR}/_starteXo.sh +${SSH_COMMAND} ${SCRIPT_DIR}/warmup.sh + echo "[INFO] $(display_date)" echo "[INFO] Plateform started" diff --git a/srv/exo/bin/warmup.sh b/srv/exo/bin/warmup.sh new file mode 100755 index 0000000..91649f4 --- /dev/null +++ b/srv/exo/bin/warmup.sh @@ -0,0 +1,72 @@ +#!/bin/bash -eu + +# ############################################################################# +# Initialize +# ############################################################################# +SCRIPT_NAME="${0##*/}" +SCRIPT_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +set -o pipefail + +# Load env settings +source ${SCRIPT_DIR}/setenv.sh +# Load common functions +source ${SCRIPT_DIR}/_functions.sh + +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Starting server warmup ..." +echo "[INFO] =======================================" + +set +ue +if [ "${WARMUP_ACTIVATED}" != "true" ]; then + echo "[INFO] Warmup script is disabled" + exit 0 +fi +set -ue + +## Test if curl is installed +set +e +CURL_CMD=$(which curl) +RET=$? +set -e + +if [ $RET -ne 0 ]; then + echo "[ERROR] curl command is not installed on the system" + exit 1 +fi + +COOKIE_TEMP=$(tempfile -m 600 -d /tmp -p warmup) +ASSET_LIST=$(tempfile -m 600 -d /tmp -p warmupassets) + +trap "rm -fv ${COOKIE_TEMP} ${ASSET_LIST}" EXIT + +echo "[INFO] = $(display_date) Login into ${WARMUP_URL} with user ${WARMUP_USER} ..." + +set +e +curl -s -L -c ${COOKIE_TEMP} -b ${COOKIE_TEMP} -XPOST -d "username=${WARMUP_USER}&password=${WARMUP_PASSWORD}" --post302 ${WARMUP_URL} | grep -E -o -e "=[ \"']+/[.a-zA-Z0-9\/-]+\.css[\"']{1}" -e "=[ \"']+/[.a-zA-Z0-9\/-]+\.js[\"']{1}" | tr -d " " | tr -d "\"" | tr -d "=" > ${ASSET_LIST} +RET=$? +set -e + +if [ $RET -ne 0 ]; then + echo "[ERROR] Login failed" + exit 1 +fi + +echo "[INFO] = $(display_date) Login done ..." +echo "[INFO] = $(display_date) $(cat ${ASSET_LIST} | wc -l) assets found ..." +cat ${ASSET_LIST} +echo "[INFO] = $(display_date) Loading them ..." + +set +e +for i in $(cat ${ASSET_LIST}); do + ${CURL_CMD} -s -L -c /tmp/cookies -b /tmp/cookies ${WARMUP_URL}$i > /dev/null +done +set -e + +echo "[INFO] = $(display_date) All assets called ..." + +echo "" +echo "[INFO] =======================================" +echo "[INFO] = $(display_date) Warmup done ..." +echo "[INFO] ======================================="