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