You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Иногда возникает необходимость в копировании всей БД одного сервера на другой (создание тестовой площадки, перенос настроек и т.п.).
Перенос осуществляется в два действия - создания копии базы и восстановление базы из копии на новом сервере.

Создание копии базы данных

Для создания копии базы необходимо:

  1. Остановить службы на веб-сервере
    sudo systemctl stop vitro-server vitro-workflow 

  2. Выполнить команду для создания файла копии базы данных
    pg_dump -h localhost -d vitrodb -U vitrodbuser -v -Fc -f bak/vitrodb.Fc.bak 
    В этой команде vitrodb это имя базы данных, vitrodbuser это имя пользователя-владельца базы данных, bak/vitrodb.Fc.bak путь до файла копии.
    Выполнять команду необходимо на сервере баз данных. После выполнения будет запрошен пароль указанного в -U пользователя.

  3. В результате будет получен файл копии базы данных. Его необходимо переместить на целевой сервер для восстановления базы из копии.
  4. После создания копии нужно включить службы на веб-сервере
    sudo systemctl start vitro-server vitro-workflow 

Восстановление базы данных из копии

Для восстановления базы данных из копии нужно сперва очистить уже имеющуюся базу (если есть):

  1. Остановить службы на веб-сервере
    sudo systemctl stop vitro-server vitro-workflow 

  2. Удалить базу данных
    dropdb -U vitrodbuser vitrodb 
    В этой команде vitrodb это имя базы данных, vitrodbuser это имя пользователя-владельца базы данных.
    Выполнять команду необходимо на сервере баз данных.

  3. Создать пустую базу данных. Для этого войти в psql и выполнить запрос на создание:
    sudo -u postgres psql 
    CREATE DATABASE vitrodb with owner = vitrodbuser encoding = 'UTF8' LOCALE_PROVIDER = icu ICU_LOCALE = 'ru' TEMPLATE = template0 connection limit = -1; 

После того, как создана пустая база можно приступить к восстановлению данных из файла копии:

  1. Выполнить команду восстановления
    pg_restore -h localhost -d vitrodb -U vitrodbuser -v -Fc bak/vitrodb.Fc.bak 
    В этой команде vitrodb это имя базы данных, vitrodbuser это имя пользователя-владельца базы данных, bak/vitrodb.Fc.bak путь до файла копии.

  2. Запустить службы на веб-сервере
    sudo systemctl start vitro-server vitro-workflow 
  • No labels