Sobes.tech
Senior

Meséljen az adatbázis-migrációkról: hogyan hajtották végre, hogyan kezelték a hibákat a migráció során?

sobes.tech MI

Válasz az MI-től

Általában adatbázis-migrációkat a Goose vagy Flyway eszközökkel végeztem, amelyek lehetővé teszik a séma verzióinak kezelését és a változtatások sorozatos alkalmazását.

Migrációs folyamat:

  1. Migrációs szkripteket készítettem a séma módosításaival (táblák létrehozása, oszlopok módosítása stb.).
  2. Teszteltem a migrációkat tesztkörnyezetben.
  3. A migrációkat staging környezetben alkalmaztam, ellenőrizve azok helyességét.
  4. A migrációt éles környezetben minimális leállási idővel hajtottam végre.

Hibakezelés:

  • Tranzakciókat használtam a migrációkban, hogy hiba esetén visszavonjam a változtatásokat.
  • Hibákat naplóztam és értesítettem a csapatot.
  • Kritikus hibák esetén visszavontam a migrációt és elemeztem a problémát.
  • Bonyolult esetekben szkripteket írtam az adatok manuális javítására.

Goose-ról Go-ra történő migráció példája:

package main

import (
    "database/sql"
    "github.com/pressly/goose/v3"
)

func Up(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users ADD COLUMN age INT;`)
    return err
}

func Down(tx *sql.Tx) error {
    _, err := tx.Exec(`ALTER TABLE users DROP COLUMN age;`)
    return err
}

Ez a megközelítés verziókezelést és a változtatások biztonságát biztosítja.