vmangos
This commit is contained in:
+20
-12
@@ -74,9 +74,17 @@ dump_remote_database() {
|
||||
local port="$4"
|
||||
local username="$5"
|
||||
local password="$6"
|
||||
local network=host
|
||||
|
||||
log "Создаю дамп AzerothCore ${database}"
|
||||
docker run --rm --network host \
|
||||
if [[ "$host" == host.docker.internal ]]; then
|
||||
host=127.0.0.1
|
||||
elif [[ "$host" == db ]]; then
|
||||
network="$(env_value VMANGOS_DOCKER_NETWORK)"
|
||||
network="${network:-vmangos_default}"
|
||||
fi
|
||||
|
||||
log "Создаю дамп vMaNGOS ${database}"
|
||||
docker run --rm --network "$network" \
|
||||
--env MYSQL_PWD="$password" \
|
||||
mysql:8.4 \
|
||||
mysqldump \
|
||||
@@ -125,7 +133,7 @@ main() {
|
||||
fi
|
||||
|
||||
local timestamp object_prefix web_database
|
||||
local acore_host acore_port acore_username acore_password acore_databases
|
||||
local vmangos_host vmangos_port vmangos_username vmangos_password vmangos_databases
|
||||
local database filename
|
||||
local -a databases=() files=()
|
||||
|
||||
@@ -134,15 +142,15 @@ main() {
|
||||
object_prefix="${object_prefix:-backups/databases}"
|
||||
object_prefix="${object_prefix%/}/$(date -u '+%Y/%m/%d')/${timestamp}"
|
||||
web_database="$(env_value DB_DATABASE)"
|
||||
acore_host="$(env_value AZEROTHCORE_AUTH_DB_HOST)"
|
||||
acore_port="$(env_value AZEROTHCORE_AUTH_DB_PORT)"
|
||||
acore_username="$(env_value AZEROTHCORE_AUTH_DB_USERNAME)"
|
||||
acore_password="$(env_value AZEROTHCORE_AUTH_DB_PASSWORD)"
|
||||
acore_databases="$(env_value DATABASE_BACKUP_ACORE_DATABASES)"
|
||||
acore_databases="${acore_databases:-acore_auth acore_characters acore_world acore_playerbots store}"
|
||||
vmangos_host="$(env_value VMANGOS_AUTH_DB_HOST)"
|
||||
vmangos_port="$(env_value VMANGOS_AUTH_DB_PORT)"
|
||||
vmangos_username="$(env_value VMANGOS_AUTH_DB_USERNAME)"
|
||||
vmangos_password="$(env_value VMANGOS_AUTH_DB_PASSWORD)"
|
||||
vmangos_databases="$(env_value DATABASE_BACKUP_VMANGOS_DATABASES)"
|
||||
vmangos_databases="${vmangos_databases:-realmd characters mangos logs}"
|
||||
|
||||
[[ -n "$web_database" ]] || fail 'DB_DATABASE не задан'
|
||||
[[ -n "$acore_host" && -n "$acore_port" && -n "$acore_username" ]] || fail 'Не настроено подключение к AzerothCore'
|
||||
[[ -n "$vmangos_host" && -n "$vmangos_port" && -n "$vmangos_username" ]] || fail 'Не настроено подключение к vMaNGOS'
|
||||
validate_database_name "$web_database"
|
||||
|
||||
RUN_DIR="${BACKUP_WORK_DIR}/${timestamp}"
|
||||
@@ -154,10 +162,10 @@ main() {
|
||||
databases+=("$web_database")
|
||||
files+=("$filename")
|
||||
|
||||
for database in $acore_databases; do
|
||||
for database in $vmangos_databases; do
|
||||
validate_database_name "$database"
|
||||
filename="${database}.sql.gz"
|
||||
dump_remote_database "$database" "${RUN_DIR}/${filename}" "$acore_host" "$acore_port" "$acore_username" "$acore_password"
|
||||
dump_remote_database "$database" "${RUN_DIR}/${filename}" "$vmangos_host" "$vmangos_port" "$vmangos_username" "$vmangos_password"
|
||||
databases+=("$database")
|
||||
files+=("$filename")
|
||||
done
|
||||
|
||||
+22
-15
@@ -17,8 +17,8 @@ usage() {
|
||||
|
||||
Опции:
|
||||
--env=PATH путь к .env (по умолчанию ./.env)
|
||||
--target=NAME какая БД: app (laravel), auth (acore_auth),
|
||||
characters (acore_characters), all (по умолчанию для export)
|
||||
--target=NAME какая БД: app (laravel), auth (realmd),
|
||||
characters (characters), all (по умолчанию для export)
|
||||
--out=DIR куда писать дампы (по умолчанию storage/backups)
|
||||
--gzip сжимать дамп gzip-ом (по умолчанию включено для export)
|
||||
--no-gzip не сжимать
|
||||
@@ -37,7 +37,7 @@ usage() {
|
||||
Примеры:
|
||||
./scripts/db-backup.sh export
|
||||
./scripts/db-backup.sh export --target=auth --out=/tmp
|
||||
./scripts/db-backup.sh import /tmp/acore_auth_2026-04-26.sql.gz --target=auth
|
||||
./scripts/db-backup.sh import /tmp/realmd_2026-04-26.sql.gz --target=auth
|
||||
./scripts/db-backup.sh import dump.sql.gz --target=app --create-db --force
|
||||
EOF
|
||||
}
|
||||
@@ -87,18 +87,18 @@ load_target() {
|
||||
fi
|
||||
;;
|
||||
auth)
|
||||
DB_HOST="$(env_get AZEROTHCORE_AUTH_DB_HOST "$ENV_FILE")"
|
||||
DB_PORT="$(env_get AZEROTHCORE_AUTH_DB_PORT "$ENV_FILE")"
|
||||
DB_NAME="$(env_get AZEROTHCORE_AUTH_DB_DATABASE "$ENV_FILE")"
|
||||
DB_USER="$(env_get AZEROTHCORE_AUTH_DB_USERNAME "$ENV_FILE")"
|
||||
DB_PASS="$(env_get AZEROTHCORE_AUTH_DB_PASSWORD "$ENV_FILE")"
|
||||
DB_HOST="$(env_get VMANGOS_AUTH_DB_HOST "$ENV_FILE")"
|
||||
DB_PORT="$(env_get VMANGOS_AUTH_DB_PORT "$ENV_FILE")"
|
||||
DB_NAME="$(env_get VMANGOS_AUTH_DB_DATABASE "$ENV_FILE")"
|
||||
DB_USER="$(env_get VMANGOS_AUTH_DB_USERNAME "$ENV_FILE")"
|
||||
DB_PASS="$(env_get VMANGOS_AUTH_DB_PASSWORD "$ENV_FILE")"
|
||||
;;
|
||||
characters)
|
||||
DB_HOST="$(env_get AZEROTHCORE_CHARACTERS_DB_HOST "$ENV_FILE")"
|
||||
DB_PORT="$(env_get AZEROTHCORE_CHARACTERS_DB_PORT "$ENV_FILE")"
|
||||
DB_NAME="$(env_get AZEROTHCORE_CHARACTERS_DB_DATABASE "$ENV_FILE")"
|
||||
DB_USER="$(env_get AZEROTHCORE_CHARACTERS_DB_USERNAME "$ENV_FILE")"
|
||||
DB_PASS="$(env_get AZEROTHCORE_CHARACTERS_DB_PASSWORD "$ENV_FILE")"
|
||||
DB_HOST="$(env_get VMANGOS_CHARACTERS_DB_HOST "$ENV_FILE")"
|
||||
DB_PORT="$(env_get VMANGOS_CHARACTERS_DB_PORT "$ENV_FILE")"
|
||||
DB_NAME="$(env_get VMANGOS_CHARACTERS_DB_DATABASE "$ENV_FILE")"
|
||||
DB_USER="$(env_get VMANGOS_CHARACTERS_DB_USERNAME "$ENV_FILE")"
|
||||
DB_PASS="$(env_get VMANGOS_CHARACTERS_DB_PASSWORD "$ENV_FILE")"
|
||||
;;
|
||||
*)
|
||||
err "Неизвестная цель: $target"; exit 2;;
|
||||
@@ -131,7 +131,7 @@ have_native_mysql() {
|
||||
run_mysql_tool() {
|
||||
local tool="$1"; shift
|
||||
|
||||
if have_native_mysql; then
|
||||
if have_native_mysql && [[ "$DB_HOST" != db ]]; then
|
||||
local defaults
|
||||
defaults="$(mktemp)"
|
||||
chmod 600 "$defaults"
|
||||
@@ -179,7 +179,14 @@ run_mysql_tool() {
|
||||
pwd_value="$DB_PASS"
|
||||
fi
|
||||
|
||||
docker run --rm -i \
|
||||
local -a network_args=()
|
||||
if [[ "$DB_HOST" == db ]]; then
|
||||
local vmangos_network
|
||||
vmangos_network="$(env_get VMANGOS_DOCKER_NETWORK "$ENV_FILE")"
|
||||
network_args=(--network "${vmangos_network:-vmangos-local_default}")
|
||||
fi
|
||||
|
||||
docker run --rm -i "${network_args[@]}" \
|
||||
--add-host=host.docker.internal:host-gateway \
|
||||
-e MYSQL_PWD="$pwd_value" \
|
||||
"$MYSQL_CLIENT_IMAGE" \
|
||||
|
||||
@@ -31,7 +31,7 @@ usage() {
|
||||
|
||||
Требования:
|
||||
- Ubuntu с установленными Docker Engine и Docker Compose Plugin
|
||||
- настроенный .env с корректными значениями APP_URL и AZEROTHCORE_AUTH_DB_*
|
||||
- настроенный .env с корректными значениями APP_URL и VMANGOS_AUTH_DB_*
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ prepare_env() {
|
||||
set_env_value "APP_DEBUG" "false"
|
||||
|
||||
log "Создан ${ENV_FILE} из .env.example"
|
||||
log "Проверь APP_URL и AZEROTHCORE_AUTH_DB_* перед публичным запуском"
|
||||
log "Проверь APP_URL и VMANGOS_AUTH_DB_* перед публичным запуском"
|
||||
}
|
||||
|
||||
prepare_directories() {
|
||||
|
||||
Reference in New Issue
Block a user