Implemented sql importing for db_assembler script

It includes a backup system that saves your day if you
push the "red button" (importing bases on a production db)
This commit is contained in:
Yehonal 2017-09-19 23:56:41 +02:00
parent 944cfd077e
commit c592aca103
2 changed files with 150 additions and 12 deletions

View File

@ -118,38 +118,155 @@ function assemble() {
}
function run() {
echo "===== STARTING PROCESS ====="
echo "===== STARTING ASSEMBLY PROCESS ====="
mkdir -p $OUTPUT_FOLDER
mkdir -p "$OUTPUT_FOLDER"
for db in ${DATABASES[@]}
do
assemble "$db" $version".sql" $1 $2 $3
done
echo "===== DONE ====="
echo "===== DONE ====="
}
function db_backup() {
echo "backing up $1"
database=${1,,}
uc=${database^^}
name="DB_"$uc"_CONF"
confs=${!name}
name="DB_"$uc"_NAME"
dbname=${!name}
eval $confs;
export MYSQL_PWD=$MYSQL_PASS
now=`date +%s`
"$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done"
}
function db_import() {
echo "importing $1 - $2"
database=${1,,}
type=$2
uc=${database^^}
name="DB_"$uc"_CONF"
confs=${!name}
name="DB_"$uc"_NAME"
dbname=${!name}
eval $confs;
export MYSQL_PWD=$MYSQL_PASS
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql"
}
function import () {
run $1 $2 $2
with_base=$1
with_updates=$2
with_custom=$3
#
# BACKUP
#
if [ $BACKUP_ENABLE = true ]; then
echo "===== STARTING BACKUP PROCESS ====="
mkdir -p "$BACKUP_FOLDER"
for db in ${DATABASES[@]}
do
db_backup "$db"
done
echo "===== DONE ====="
fi
echo "===== STARTING IMPORTING PROCESS ====="
#
# IMPORT
#
if [ $with_base = true ]; then
for db in ${DATABASES[@]}
do
db_import "$db" "base"
done
fi
if [ $with_updates = true ]; then
for db in ${DATABASES[@]}
do
db_import "$db" "update"
done
fi
if [ $with_custom = true ]; then
for db in ${DATABASES[@]}
do
db_import "$db" "custom"
done
fi
echo "===== DONE ====="
}
while true
do
echo "===== DB ASSEMBLER MENU ====="
PS3='Please enter your choice: '
options=("Create ALL" "Create only bases" "Create only updates" "Create only customs" "Quit")
options=(
"Assemble ALL" "Assemble only bases" "Assemble only updates" "Assemble only customs"
"Quit"
"Assemble & import ALL" "Assemble & import only bases" "Assemble & import only updates" "Assemble & import only customs"
)
select opt in "${options[@]}"
do
case $opt in
"Create ALL")
"Assemble ALL")
run true true true
break #avoid loop
break
;;
"Create only bases")
"Assemble only bases")
run true false false
break #avoid loop
break
;;
"Create only updates")
"Assemble only updates")
run false true false
break #avoid loop
break
;;
"Create only customs")
"Assemble only customs")
run false false true
break #avoid loop
break
;;
"Assemble & import ALL")
import true true true
break
;;
"Assemble & import only bases")
import true false false
break
;;
"Assemble & import only updates")
import false true false
break
;;
"Assemble & import only customs")
import false false true
break
;;
"Quit")
break
@ -157,3 +274,4 @@ do
*) echo invalid option;;
esac
done
done

View File

@ -55,6 +55,15 @@ DATABASES=(
OUTPUT_FOLDER="output/"
#
# Enable following flag
# if you want backup your db
# before import sql with db_assembler
#
BACKUP_ENABLE=true
BACKUP_FOLDER="backup/"
# FULL DB
DB_CHARACTERS_PATHS=(
$SRCPATH"/data/sql/base/db_characters"
@ -71,14 +80,17 @@ DB_WORLD_PATHS=(
# UPDATES
DB_CHARACTERS_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/db_characters/"
$SRCPATH"/data/sql/updates/pending_db_characters/"
)
DB_AUTH_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/db_auth/"
$SRCPATH"/data/sql/updates/pending_db_auth/"
)
DB_WORLD_UPDATE_PATHS=(
$SRCPATH"/data/sql/updates/db_world/"
$SRCPATH"/data/sql/updates/pending_db_world/"
)
# CUSTOM
@ -100,7 +112,15 @@ DB_WORLD_CUSTOM_PATHS=(
#
##############################################
#
# Example:
# "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
# "/usr/bin/mysql"
# "mysql"
#
DB_MYSQL_EXEC="mysql"
DB_MYSQL_DUMP_EXEC="mysqldump"
DB_CHARACTERS_CONF="MYSQL_USER='root'; \
MYSQL_PASS='root'; \