Как добавить основную и подчиненную базу данных PostgrSQL 9.1 в приложение Rails

Я работаю над приложением rails, используя postgresql 9.1 в качестве базы данных. В postgresql я настроил потоковую репликацию. Теперь, как добавить базу данных Master и Slave PostgreSQL в приложение rails (в файле database.yml).

разработка:

адаптер: кодировка postgresql: база данных единорога: пул app_development: 5 имя пользователя: имя пользователя пароль: пароль хост: главный IP-порт: номер порта

разработка:

адаптер: кодировка postgresql: база данных единорога: пул app_development: 5 имя пользователя: имя пользователя пароль: пароль хост: подчиненный IP-порт: номер порта

разработка:

адаптер: кодировка postgresql: база данных единорога: пул app_development: 5 имя пользователя: имя пользователя пароль: пароль хост: svale ip порт: номер порта

Но при выполнении этого возникает ошибка «ActiveRecord::StatementInvalid» «PG::ReadOnlySqlTransaction: ERROR: невозможно выполнить INSERT в транзакции только для чтения»

Как указать основную и подчиненную базу данных в файле database.yml

С уважением, Балу.


person user2813498    schedule 11.10.2013    source источник
comment
Кроме того, я думаю, что нет нативного способа достижения вашей цели. Возможно, вы захотите взглянуть на Makara, который позволяет вам для разделения операций чтения/записи для Active Record.   -  person Lukas    schedule 12.10.2013
comment
Это, вероятно, нуждается в теге Rails. Проголосовал за переход на SO.   -  person ypercubeᵀᴹ    schedule 12.10.2013


Ответы (1)


Не делайте этого в своей базе данных. Используйте внешнее решение для аварийного переключения либо с некэшированными DNS-записями, либо с виртуальными IP-адресами, и пусть ваше приложение сможет работать, не зная состояния отказа узлов.

Репликация и аварийное переключение — сложные вещи, и если вы не хотите потери данных, вам нужно убедиться, что вы все делаете правильно. Это означает признать, что это не проблема приложения, а проблема инфраструктуры, и встроить ее в нее.

person Chris Travers    schedule 26.11.2013