Создание версии моего приложения для Песочницы.Репликация БД?Или другой способ - PullRequest
0 голосов
/ 18 мая 2011

Я планирую создать систему «песочницы» приложения для рабочих рельсов, чтобы потенциальные клиенты могли возиться с ними.

Производственная система постоянно обновляется новым контентом, который я хотел бы донести допесочница, чтобы сделать ее максимально реальной.Однако я не хочу уничтожать песочницу, выполняя полный дамп / восстановление базы данных, так как я хотел бы сохранить учетные записи пользователей в этой системе (просто обновить с новым содержимым)

Я проверилпару вариантов, но я мог бы воспользоваться некоторыми советами ...

1- DB Dump / Restore

Хотя это просто с точки зрения того, как это работает, его немного сложно настроитьЗадания cron и перенос всей базы данных между серверами, хотя мне это может и не понадобиться.Я думаю, что я могу просто вывести некоторые таблицы, но это все равно, вероятно, будет передавать больше данных, чем требуется.

2- Репликация БД

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

3- Другой способ?

Я не уверен ... есть ли лучший способ сделать это?

Но подождите, есть еще!

ПесочницаСистема не всегда работает (она доступна только в определенные часы), поэтому мне нужно что-то, что не расстроится, если она не сможет подключиться.Просто потерпите неудачу и повторите попытку позже.

Я довольно новичок в репликации, так что у кого-нибудь есть рекомендации, с чего начать?Slony-I, Bucardo, rubyrep?

Подробнее

  • Приложение Rails 3
  • PostgreSQL DB
  • Ubuntu server

1 Ответ

1 голос
/ 18 мая 2011

Вы должны делать только дамп / восстановление. Настройка Master / Slave не будет работать, потому что Slave будет в состоянии только для чтения. Есть два способа сделать это:

1) Удалить базу данных с помощью флага -c , затем восстановить с помощью psql :

pg_dump -c ... | psql some_host dba_user staging_db

2) Загрузите во временную базу данных, затем выполните ALTER DATABASE ... RENAME TO .

pg_dump ... | psql -c some_host dba_user staging_db_tmp
# In psql while connected to template1 (and no one is connected to prod):
ALTER DATABASE staging_db RENAME TO staging_db_tmp;
ALTER DATABASE staging_db_tmp RENAME TO staging_db;

В любом случае, их довольно легко написать. Посмотрите на команду '-1' или '--single -action' для psql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...