Основы репликации БД. Как Go-приложение подключается к репликам?

Ответ

Репликация - копирование данных с primary на replicas. Цели: отказоустойчивость, масштабирование чтения. Запись - на primary; чтение можно распределять по репликам. В Go настраивают два DSN (или пулы): один для записи (primary), один или несколько для чтения. Роутинг запросов: только чтение - на реплику, запись и чтение в транзакции - на primary. Библиотеки: manual два *sql.DB или middleware с выбором по контексту.

func (db *DB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) {
    if readOnly(ctx) { return db.replica.QueryContext(ctx, query, args...) }
    return db.primary.QueryContext(ctx, query, args...)
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.