Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ea960259c | |||
| 4d84b8f718 | |||
| 419ad39ead | |||
| 1a85f0ae36 | |||
| 1451f45711 | |||
| 58a4aeb984 | |||
| c04935a117 | |||
| 4f1ebb8aa6 | |||
| 3fc5c9ff7a | |||
| 8bff795247 | |||
| 743bebca2d | |||
| 1291f0d027 | |||
| 07d2a13014 | |||
| 0e3c5ca835 | |||
| 30c734220a |
-103
@@ -1,103 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Erstellt einen neuen MySQL-Container "logbuch_mysql" und migriert
|
||||
# die 5 App-relevanten Tabellen aus dem bestehenden "db"-Container.
|
||||
|
||||
set -e
|
||||
|
||||
# ── Konfiguration ────────────────────────────────────────────────────────────
|
||||
SRC_CONTAINER="db"
|
||||
SRC_DB="sternwarte"
|
||||
SRC_ROOT_PASS="SFluorit"
|
||||
|
||||
NEW_CONTAINER="logbuch_mysql"
|
||||
NEW_DB="sternwarte"
|
||||
NEW_ROOT_PASS="SFluorit" # ggf. hier ändern
|
||||
NEW_PORT="3307" # Host-Port (3306 ist schon belegt)
|
||||
MYSQL_IMAGE="arm64v8/mysql:lts"
|
||||
NETWORK="sternwarte_default"
|
||||
|
||||
TABLES="beos objekte logbuch logbuch_beos logbuch_objekte"
|
||||
|
||||
# ── Hilfsfunktion ────────────────────────────────────────────────────────────
|
||||
wait_for_mysql() {
|
||||
local container="$1"
|
||||
local pass="$2"
|
||||
echo -n "Warte auf MySQL in '$container' "
|
||||
for i in $(seq 1 60); do
|
||||
if docker exec "$container" mysqladmin ping -u root -p"$pass" --silent 2>/dev/null; then
|
||||
echo " bereit."
|
||||
return 0
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 2
|
||||
done
|
||||
echo ""
|
||||
echo "FEHLER: MySQL in '$container' nicht erreichbar nach 120s." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# ── Prüfen ob Quell-Container läuft ─────────────────────────────────────────
|
||||
if ! docker inspect "$SRC_CONTAINER" &>/dev/null; then
|
||||
echo "FEHLER: Quell-Container '$SRC_CONTAINER' nicht gefunden." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Quell-Container '$SRC_CONTAINER' gefunden."
|
||||
|
||||
# ── Alten Ziel-Container entfernen falls vorhanden ──────────────────────────
|
||||
if docker inspect "$NEW_CONTAINER" &>/dev/null; then
|
||||
echo "Container '$NEW_CONTAINER' existiert bereits — wird gestoppt und entfernt..."
|
||||
docker rm -f "$NEW_CONTAINER"
|
||||
fi
|
||||
|
||||
# ── Neuen Container starten ──────────────────────────────────────────────────
|
||||
echo "Starte neuen Container '$NEW_CONTAINER'..."
|
||||
docker run -d \
|
||||
--name "$NEW_CONTAINER" \
|
||||
--network "$NETWORK" \
|
||||
-p "${NEW_PORT}:3306" \
|
||||
-e MYSQL_ROOT_PASSWORD="$NEW_ROOT_PASS" \
|
||||
-e MYSQL_DATABASE="$NEW_DB" \
|
||||
"$MYSQL_IMAGE"
|
||||
|
||||
wait_for_mysql "$NEW_CONTAINER" "$NEW_ROOT_PASS"
|
||||
|
||||
# ── Daten migrieren ──────────────────────────────────────────────────────────
|
||||
echo "Migriere Tabellen: $TABLES"
|
||||
echo "(Dump von '$SRC_CONTAINER' → Import in '$NEW_CONTAINER')"
|
||||
|
||||
docker exec "$SRC_CONTAINER" mysqldump \
|
||||
-u root -p"$SRC_ROOT_PASS" \
|
||||
--single-transaction \
|
||||
--no-tablespaces \
|
||||
"$SRC_DB" $TABLES \
|
||||
| docker exec -i "$NEW_CONTAINER" mysql \
|
||||
-u root -p"$NEW_ROOT_PASS" \
|
||||
"$NEW_DB"
|
||||
|
||||
echo "Migration abgeschlossen."
|
||||
|
||||
# ── Zeilenzähler zur Verifikation ────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "Zeilenzähler (Quelle → Ziel):"
|
||||
for TABLE in $TABLES; do
|
||||
SRC_COUNT=$(docker exec "$SRC_CONTAINER" mysql -u root -p"$SRC_ROOT_PASS" -sN \
|
||||
-e "SELECT COUNT(*) FROM $TABLE;" "$SRC_DB" 2>/dev/null)
|
||||
DST_COUNT=$(docker exec "$NEW_CONTAINER" mysql -u root -p"$NEW_ROOT_PASS" -sN \
|
||||
-e "SELECT COUNT(*) FROM $TABLE;" "$NEW_DB" 2>/dev/null)
|
||||
STATUS="✓"
|
||||
[ "$SRC_COUNT" != "$DST_COUNT" ] && STATUS="✗ ABWEICHUNG"
|
||||
printf " %-25s %5s → %5s %s\n" "$TABLE" "$SRC_COUNT" "$DST_COUNT" "$STATUS"
|
||||
done
|
||||
|
||||
# ── Abschluss ─────────────────────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "══════════════════════════════════════════════════════"
|
||||
echo "Neuer Container: $NEW_CONTAINER"
|
||||
echo " Netzwerk: $NETWORK"
|
||||
echo " Host-Port: $NEW_PORT"
|
||||
echo " Datenbank: $NEW_DB"
|
||||
echo ""
|
||||
echo "Nächster Schritt — .env anpassen:"
|
||||
echo " DB_HOST=$NEW_CONTAINER"
|
||||
echo " DB_PASS=$NEW_ROOT_PASS"
|
||||
echo "══════════════════════════════════════════════════════"
|
||||
Reference in New Issue
Block a user