доработка db-export
This commit is contained in:
+18
-5
@@ -43,6 +43,15 @@ require_running_db() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Returns space-separated list of user databases (excludes MySQL system schemas)
|
||||
get_user_databases() {
|
||||
docker compose exec -T ac-database bash -lc \
|
||||
"mysql -h 127.0.0.1 -uroot -p\"\$MYSQL_ROOT_PASSWORD\" -N -s information_schema" \
|
||||
<<<"SELECT schema_name FROM schemata
|
||||
WHERE schema_name NOT IN ('mysql','information_schema','performance_schema','sys')
|
||||
ORDER BY schema_name;"
|
||||
}
|
||||
|
||||
# ── argument parsing ──────────────────────────────────────────────────────────
|
||||
|
||||
while (($#)); do
|
||||
@@ -73,13 +82,17 @@ fi
|
||||
|
||||
mkdir -p "$(dirname "$OUTPUT_FILE")"
|
||||
|
||||
log "exporting all databases → $OUTPUT_FILE"
|
||||
log "discovering user databases..."
|
||||
databases="$(get_user_databases | tr '\n' ' ' | xargs)"
|
||||
[[ -z "$databases" ]] && die "no user databases found"
|
||||
log "databases: $databases"
|
||||
log "exporting → $OUTPUT_FILE"
|
||||
log "this may take a few minutes for large worlds..."
|
||||
|
||||
if [[ "$COMPRESS" -eq 1 ]]; then
|
||||
docker compose exec -T ac-database bash -lc \
|
||||
"mysqldump -uroot -p\"\$MYSQL_ROOT_PASSWORD\" \
|
||||
--all-databases \
|
||||
"mysqldump -h 127.0.0.1 -uroot -p\"\$MYSQL_ROOT_PASSWORD\" \
|
||||
--databases $databases \
|
||||
--add-drop-database \
|
||||
--single-transaction \
|
||||
--quick \
|
||||
@@ -89,8 +102,8 @@ if [[ "$COMPRESS" -eq 1 ]]; then
|
||||
| gzip -6 > "$OUTPUT_FILE"
|
||||
else
|
||||
docker compose exec -T ac-database bash -lc \
|
||||
"mysqldump -uroot -p\"\$MYSQL_ROOT_PASSWORD\" \
|
||||
--all-databases \
|
||||
"mysqldump -h 127.0.0.1 -uroot -p\"\$MYSQL_ROOT_PASSWORD\" \
|
||||
--databases $databases \
|
||||
--add-drop-database \
|
||||
--single-transaction \
|
||||
--quick \
|
||||
|
||||
Reference in New Issue
Block a user