Плавное обновление базы данных postgres - схемы, переименование, как? - PullRequest
0 голосов
/ 03 декабря 2010

На самом деле простой вопрос, но я не смог найти хорошего убедительного ответа.

Предполагается производственная база данных foo_prd и более новая версия того же foo_new (на том же сервере), которая должна заменить старую.Какой самый простой способ беспрепятственного перехода с _prd на _new?

ПЕРЕИМЕНОВАНИЕ баз данных потребует отключения текущих пользователей через их pid.Это приведет к удалению некоторых запросов, и новые пользователи могут подключиться во время процесса.Я думал о создании таблиц новой базы данных как другой SCHEMA, а затем изменить search_path, например, с "$user",prd на "$user",new,prd.

Что может пойти не так?У вас есть предложения получше?Я вообще ошибаюсь?

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

Сделайте так, как вы предлагаете: создайте таблицы новой базы данных в виде другой схемы, а затем измените путь поиска.

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

И, наконец, будьте осторожны, когда приходите отбрасывать старую схему - я предлагаю сначала переименовать ее, если что-либо ссылается на его объекты с использованием квалифицированной ссылки (например, prd.table или prd.function). Через несколько дней / недель его можно с уверенностью отбросить.

0 голосов
/ 06 декабря 2010

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

...