mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-27 15:46:24 +00:00
Improved db assembler, now can create DBs
This commit is contained in:
1
bin/db_assembler/.gitignore
vendored
1
bin/db_assembler/.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
/output/
|
/output/
|
||||||
|
/backup/
|
||||||
config.sh
|
config.sh
|
||||||
|
|||||||
16
bin/db_assembler/README.md
Normal file
16
bin/db_assembler/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
## How to use:
|
||||||
|
|
||||||
|
First of all, if you need some custom configuration you have to copy and rename
|
||||||
|
/conf/config.sh.dist in /conf/config.sh and configure it
|
||||||
|
|
||||||
|
db_assembler.sh script contains an interactive menu to assemble and import sql files.
|
||||||
|
Just run it to display the options.
|
||||||
|
|
||||||
|
|
||||||
|
Note: You can even use actions directly by command lines specifying the option.
|
||||||
|
Ex:
|
||||||
|
./db_assembler.sh 1
|
||||||
|
|
||||||
|
It will start the assemble process of all sql files.
|
||||||
|
|
||||||
|
|
||||||
@@ -19,28 +19,28 @@ options=(
|
|||||||
function _switch() {
|
function _switch() {
|
||||||
case $1 in
|
case $1 in
|
||||||
"Assemble ALL")
|
"Assemble ALL")
|
||||||
run true true true
|
dbasm_run true true true
|
||||||
;;
|
;;
|
||||||
"Assemble only bases")
|
"Assemble only bases")
|
||||||
run true false false
|
dbasm_run true false false
|
||||||
;;
|
;;
|
||||||
"Assemble only updates")
|
"Assemble only updates")
|
||||||
run false true false
|
dbasm_run false true false
|
||||||
;;
|
;;
|
||||||
"Assemble only customs")
|
"Assemble only customs")
|
||||||
run false false true
|
dbasm_run false false true
|
||||||
;;
|
;;
|
||||||
"Assemble & import ALL")
|
"Assemble & import ALL")
|
||||||
import true true true
|
dbasm_import true true true
|
||||||
;;
|
;;
|
||||||
"Assemble & import only bases")
|
"Assemble & import only bases")
|
||||||
import true false false
|
dbasm_import true false false
|
||||||
;;
|
;;
|
||||||
"Assemble & import only updates")
|
"Assemble & import only updates")
|
||||||
import false true false
|
dbasm_import false true false
|
||||||
;;
|
;;
|
||||||
"Assemble & import only customs")
|
"Assemble & import only customs")
|
||||||
import false false true
|
dbasm_import false false true
|
||||||
;;
|
;;
|
||||||
"Quit")
|
"Quit")
|
||||||
echo "Goodbye!"
|
echo "Goodbye!"
|
||||||
|
|||||||
@@ -1,4 +1,58 @@
|
|||||||
function assemble() {
|
function dbasm_isNotEmpty() {
|
||||||
|
dbname=$1
|
||||||
|
conf=$2
|
||||||
|
|
||||||
|
eval $confs;
|
||||||
|
export MYSQL_PWD=$MYSQL_PASS
|
||||||
|
|
||||||
|
RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '${dbname}'"`
|
||||||
|
if (( $RESULT > 0 )); then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function dbasm_dbExists() {
|
||||||
|
dbname=$1
|
||||||
|
conf=$2
|
||||||
|
|
||||||
|
eval $confs;
|
||||||
|
export MYSQL_PWD=$MYSQL_PASS
|
||||||
|
|
||||||
|
RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SHOW DATABASES LIKE '${dbname}'"`
|
||||||
|
if [ "$RESULT" == "${dbname}" ]; then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function dbasm_createDB() {
|
||||||
|
database=${1,,}
|
||||||
|
|
||||||
|
uc=${database^^}
|
||||||
|
|
||||||
|
name="DB_"$uc"_CONF"
|
||||||
|
confs=${!name}
|
||||||
|
|
||||||
|
name="DB_"$uc"_NAME"
|
||||||
|
dbname=${!name}
|
||||||
|
|
||||||
|
eval $confs;
|
||||||
|
|
||||||
|
export MYSQL_PWD=$MYSQL_PASS
|
||||||
|
|
||||||
|
if dbasm_dbExists $dbname "$confs"; then
|
||||||
|
echo "$dbname database exists"
|
||||||
|
else
|
||||||
|
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT USAGE ON * . * TO 'acore'@'${MYSQL_HOST}' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;"
|
||||||
|
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "CREATE DATABASE \`${dbname}\`"
|
||||||
|
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT ALL PRIVILEGES ON \`${dbname}\` . * TO 'acore'@'${MYSQL_HOST}' WITH GRANT OPTION;"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function dbasm_assemble() {
|
||||||
# to lowercase
|
# to lowercase
|
||||||
database=${1,,}
|
database=${1,,}
|
||||||
start_sql=$2
|
start_sql=$2
|
||||||
@@ -102,20 +156,20 @@ function assemble() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function run() {
|
function dbasm_run() {
|
||||||
echo "===== STARTING ASSEMBLY PROCESS ====="
|
echo "===== STARTING ASSEMBLY PROCESS ====="
|
||||||
|
|
||||||
mkdir -p "$OUTPUT_FOLDER"
|
mkdir -p "$OUTPUT_FOLDER"
|
||||||
|
|
||||||
for db in ${DATABASES[@]}
|
for db in ${DATABASES[@]}
|
||||||
do
|
do
|
||||||
assemble "$db" $version".sql" $1 $2 $3
|
dbasm_assemble "$db" $version".sql" $1 $2 $3
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "===== DONE ====="
|
echo "===== DONE ====="
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_backup() {
|
function dbasm_db_backup() {
|
||||||
echo "backing up $1"
|
echo "backing up $1"
|
||||||
|
|
||||||
database=${1,,}
|
database=${1,,}
|
||||||
@@ -137,9 +191,7 @@ function db_backup() {
|
|||||||
"$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done"
|
"$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done"
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_import() {
|
function dbasm_db_import() {
|
||||||
echo "importing $1 - $2"
|
|
||||||
|
|
||||||
database=${1,,}
|
database=${1,,}
|
||||||
type=$2
|
type=$2
|
||||||
|
|
||||||
@@ -151,6 +203,15 @@ function db_import() {
|
|||||||
name="DB_"$uc"_NAME"
|
name="DB_"$uc"_NAME"
|
||||||
dbname=${!name}
|
dbname=${!name}
|
||||||
|
|
||||||
|
if [[ $type = "base" && $DB_SKIP_BASE_IMPORT_IF_EXISTS = true ]]; then
|
||||||
|
if dbasm_isNotEmpty $dbname "$confs"; then
|
||||||
|
echo "$dbname is not empty, base importing skipped"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "importing $1 - $2 ..."
|
||||||
|
|
||||||
eval $confs;
|
eval $confs;
|
||||||
|
|
||||||
export MYSQL_PWD=$MYSQL_PASS
|
export MYSQL_PWD=$MYSQL_PASS
|
||||||
@@ -158,25 +219,31 @@ function db_import() {
|
|||||||
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql"
|
"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql"
|
||||||
}
|
}
|
||||||
|
|
||||||
function import () {
|
function dbasm_import() {
|
||||||
run $1 $2 $2
|
dbasm_run $1 $2 $2
|
||||||
|
|
||||||
|
|
||||||
with_base=$1
|
with_base=$1
|
||||||
with_updates=$2
|
with_updates=$2
|
||||||
with_custom=$3
|
with_custom=$3
|
||||||
|
|
||||||
|
echo "===== CHECKING DBs ====="
|
||||||
|
for db in ${DATABASES[@]}
|
||||||
|
do
|
||||||
|
dbasm_createDB "$db"
|
||||||
|
done
|
||||||
|
echo "===== DONE ====="
|
||||||
|
|
||||||
#
|
#
|
||||||
# BACKUP
|
# BACKUP
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ $BACKUP_ENABLE = true ]; then
|
if [ $BACKUP_ENABLE = true ]; then
|
||||||
echo "===== STARTING BACKUP PROCESS ====="
|
echo "===== STARTING BACKUP PROCESS ====="
|
||||||
mkdir -p "$BACKUP_FOLDER"
|
mkdir -p "$BACKUP_FOLDER"
|
||||||
|
|
||||||
for db in ${DATABASES[@]}
|
for db in ${DATABASES[@]}
|
||||||
do
|
do
|
||||||
db_backup "$db"
|
dbasm_db_backup "$db"
|
||||||
done
|
done
|
||||||
echo "===== DONE ====="
|
echo "===== DONE ====="
|
||||||
fi
|
fi
|
||||||
@@ -188,21 +255,21 @@ function import () {
|
|||||||
if [ $with_base = true ]; then
|
if [ $with_base = true ]; then
|
||||||
for db in ${DATABASES[@]}
|
for db in ${DATABASES[@]}
|
||||||
do
|
do
|
||||||
db_import "$db" "base"
|
dbasm_db_import "$db" "base"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $with_updates = true ]; then
|
if [ $with_updates = true ]; then
|
||||||
for db in ${DATABASES[@]}
|
for db in ${DATABASES[@]}
|
||||||
do
|
do
|
||||||
db_import "$db" "update"
|
dbasm_db_import "$db" "update"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $with_custom = true ]; then
|
if [ $with_custom = true ]; then
|
||||||
for db in ${DATABASES[@]}
|
for db in ${DATABASES[@]}
|
||||||
do
|
do
|
||||||
db_import "$db" "custom"
|
dbasm_db_import "$db" "custom"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,12 @@ DB_WORLD_CUSTOM_PATHS=(
|
|||||||
#
|
#
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
|
#
|
||||||
|
# Skip import of base sql files to avoid
|
||||||
|
# table dropping
|
||||||
|
#
|
||||||
|
DB_SKIP_BASE_IMPORT_IF_EXISTS=true
|
||||||
|
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
# "C:/Program Files/MySQL/MySQL Server 5.6/bin/mysql.exe"
|
||||||
@@ -139,8 +145,8 @@ DB_WORLD_CONF="MYSQL_USER='root'; \
|
|||||||
"
|
"
|
||||||
|
|
||||||
|
|
||||||
DB_CHARACTERS_NAME="characters"
|
DB_CHARACTERS_NAME="acore_characters"
|
||||||
|
|
||||||
DB_AUTH_NAME="auth"
|
DB_AUTH_NAME="acore_auth"
|
||||||
|
|
||||||
DB_WORLD_NAME="world"
|
DB_WORLD_NAME="acore_world"
|
||||||
|
|||||||
Reference in New Issue
Block a user