Sobes.tech
Back to questions
Middle+
2

Расскажи про master-slave репликацию — когда обращались к master, когда к slave?

Companies where asked
А7

Answer from AI

sobes.tech AI

В master-slave репликации основная база данных (master) отвечает за запись и обновление данных, а реплики (slave) — за чтение. Это позволяет распределить нагрузку и повысить производительность.

Обращения к master происходят, когда нужно выполнить операции записи (INSERT, UPDATE, DELETE), чтобы изменения были централизованно сохранены и затем реплицированы на слейвы.

Чтение данных обычно направляется на slave, чтобы разгрузить мастер и обеспечить масштабируемость. Однако при необходимости получить самые свежие данные иногда обращаются к master, так как репликация может иметь задержку.

Пример на Go с использованием базы данных и разделением чтения и записи:

type DB struct {
    master *sql.DB
    slaves []*sql.DB
}

func (db *DB) QueryRead(query string, args ...interface{}) (*sql.Rows, error) {
    // Выбираем один из slave для чтения
    slave := db.slaves[0] // упрощённо
    return slave.Query(query, args...)
}

func (db *DB) ExecWrite(query string, args ...interface{}) (sql.Result, error) {
    // Все записи идут на master
    return db.master.Exec(query, args...)
}

Такой подход помогает эффективно использовать ресурсы и поддерживать целостность данных.