Почему в архитектуре с репликацией (master-replica) запись, как правило, идёт только в master-узел?

Ответ

Это фундаментальный принцип классической master-slave (или primary-replica) архитектуры, используемой в PostgreSQL, MySQL и других СУБД. Он обеспечивает несколько ключевых преимуществ:


  1. Гарантия консистентности данных (Data Consistency)

    Это главная причина. Наличие единственного узла для записи (single source of truth) исключает конфликты и рассогласованность данных, которые могли бы возникнуть при одновременной записи в несколько узлов.



  2. Упрощение механизма репликации

    Механизм прост и надёжен: master-узел записывает все изменения в свой лог транзакций (в PostgreSQL это WAL — Write-Ahead Log). Реплики последовательно читают этот лог и применяют изменения к своим данным. Это гораздо проще, чем координировать двунаправленную или многонаправленную синхронизацию.



  3. Оптимизация производительности

    Нагрузка разделяется: master-узел эффективно обрабатывает операции записи, в то время как многочисленные read-only реплики могут обслуживать ресурсоемкие запросы на чтение (например, аналитические отчеты), не замедляя основной узел.



  4. Надежность и простота восстановления

    При сбое реплики система продолжает работать. При сбое master-узла одна из реплик может быть «повышена» до нового master, и процесс восстановления понятен и предсказуем.


-- Попытка записи на реплике предсказуемо вернёт ошибку
ERROR:  cannot execute INSERT in a read-only transaction

Альтернатива: Для задач, где необходима распределённая запись, существуют multi-master решения (например, PostgreSQL BDR), но они значительно сложнее в настройке, администрировании и разрешении конфликтов.