Ответ
Для отсрочки ошибок соединения с БД в Go можно использовать:
- Проверку ошибки при создании соединения:
db, err := sql.Open("driver", "dsn")
if err != nil {
log.Fatal("Connection error:", err)
}
- Ping для проверки работоспособности:
err = db.Ping()
if err != nil {
log.Fatal("Ping failed:", err)
}
- Контекст с таймаутом:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err = db.PingContext(ctx)
if err != nil {
log.Fatal("Connection timeout:", err)
}
- Retry-логику для временных сбоев:
maxRetries := 3
for i := 0; i < maxRetries; i++ {
err = db.Ping()
if err == nil {
break
}
time.Sleep(time.Second * 2)
}
- Метрики и мониторинг (Prometheus, OpenTelemetry) для долгосрочного анализа проблем.