mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2025-12-01 21:13:04 +08: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/
|
||||
/backup/
|
||||
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() {
|
||||
case $1 in
|
||||
"Assemble ALL")
|
||||
run true true true
|
||||
dbasm_run true true true
|
||||
;;
|
||||
"Assemble only bases")
|
||||
run true false false
|
||||
dbasm_run true false false
|
||||
;;
|
||||
"Assemble only updates")
|
||||
run false true false
|
||||
dbasm_run false true false
|
||||
;;
|
||||
"Assemble only customs")
|
||||
run false false true
|
||||
dbasm_run false false true
|
||||
;;
|
||||
"Assemble & import ALL")
|
||||
import true true true
|
||||
dbasm_import true true true
|
||||
;;
|
||||
"Assemble & import only bases")
|
||||
import true false false
|
||||
dbasm_import true false false
|
||||
;;
|
||||
"Assemble & import only updates")
|
||||
import false true false
|
||||
dbasm_import false true false
|
||||
;;
|
||||
"Assemble & import only customs")
|
||||
import false false true
|
||||
dbasm_import false false true
|
||||
;;
|
||||
"Quit")
|
||||
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
|
||||
database=${1,,}
|
||||
start_sql=$2
|
||||
@@ -102,20 +156,20 @@ function assemble() {
|
||||
fi
|
||||
}
|
||||
|
||||
function run() {
|
||||
function dbasm_run() {
|
||||
echo "===== STARTING ASSEMBLY PROCESS ====="
|
||||
|
||||
mkdir -p "$OUTPUT_FOLDER"
|
||||
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
assemble "$db" $version".sql" $1 $2 $3
|
||||
dbasm_assemble "$db" $version".sql" $1 $2 $3
|
||||
done
|
||||
|
||||
echo "===== DONE ====="
|
||||
}
|
||||
|
||||
function db_backup() {
|
||||
function dbasm_db_backup() {
|
||||
echo "backing up $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"
|
||||
}
|
||||
|
||||
function db_import() {
|
||||
echo "importing $1 - $2"
|
||||
|
||||
function dbasm_db_import() {
|
||||
database=${1,,}
|
||||
type=$2
|
||||
|
||||
@@ -151,6 +203,15 @@ function db_import() {
|
||||
name="DB_"$uc"_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;
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
function import () {
|
||||
run $1 $2 $2
|
||||
|
||||
function dbasm_import() {
|
||||
dbasm_run $1 $2 $2
|
||||
|
||||
with_base=$1
|
||||
with_updates=$2
|
||||
with_custom=$3
|
||||
|
||||
echo "===== CHECKING DBs ====="
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
dbasm_createDB "$db"
|
||||
done
|
||||
echo "===== DONE ====="
|
||||
|
||||
#
|
||||
# BACKUP
|
||||
#
|
||||
|
||||
if [ $BACKUP_ENABLE = true ]; then
|
||||
echo "===== STARTING BACKUP PROCESS ====="
|
||||
echo "===== STARTING BACKUP PROCESS ====="
|
||||
mkdir -p "$BACKUP_FOLDER"
|
||||
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
db_backup "$db"
|
||||
dbasm_db_backup "$db"
|
||||
done
|
||||
echo "===== DONE ====="
|
||||
fi
|
||||
@@ -188,23 +255,23 @@ function import () {
|
||||
if [ $with_base = true ]; then
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
db_import "$db" "base"
|
||||
dbasm_db_import "$db" "base"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ $with_updates = true ]; then
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
db_import "$db" "update"
|
||||
dbasm_db_import "$db" "update"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ $with_custom = true ]; then
|
||||
for db in ${DATABASES[@]}
|
||||
do
|
||||
db_import "$db" "custom"
|
||||
dbasm_db_import "$db" "custom"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "===== DONE ====="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,4 @@ if [ -f "$AC_PATH_DBASSEMBLER/config.sh" ]; then
|
||||
source "$AC_PATH_DBASSEMBLER/config.sh" # should overwrite previous
|
||||
fi
|
||||
|
||||
source "$AC_PATH_DBASSEMBLER/includes/functions.sh"
|
||||
source "$AC_PATH_DBASSEMBLER/includes/functions.sh"
|
||||
|
||||
@@ -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:
|
||||
# "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