Как отследить ошибки соединения с БД

«Как отследить ошибки соединения с БД» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для отсрочки ошибок соединения с БД в Go можно использовать:

  1. Проверку ошибки при создании соединения:
db, err := sql.Open("driver", "dsn")
if err != nil {
    log.Fatal("Connection error:", err)
}
  1. Ping для проверки работоспособности:
err = db.Ping()
if err != nil {
    log.Fatal("Ping failed:", err)
}
  1. Контекст с таймаутом:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

err = db.PingContext(ctx)
if err != nil {
    log.Fatal("Connection timeout:", err)
}
  1. Retry-логику для временных сбоев:
maxRetries := 3
for i := 0; i < maxRetries; i++ {
    err = db.Ping()
    if err == nil {
        break
    }
    time.Sleep(time.Second * 2)
}
  1. Метрики и мониторинг (Prometheus, OpenTelemetry) для долгосрочного анализа проблем.