Postgresql перенести базы на другой диск

Guesto notes

После установки PostgreSQL создаваемые ИБ будут размещаться в каталоге по умолчанию. Как правило необходимо предусмотреть размещение БД на другом диске.

Например целесообразно разместить рабочие ИБ, индексы или отдельные таблицы на более быстром SSD, а тестовые ИБ или редко используемые таблицы на менее быстрых дисках.

Задача

Имеется сервер с ОС Debian 9, на сервере установлен PostgreSQL 9.6. К серверу есть доступ через SSH и pgAdmin.

Организовать возможность расположения БД на другом диске, в каталоге /mnt/POINT_01/pg_base/, и перенести ИБ alt_production в этот каталог.

Решение

Для определения расположения файлов на дисках в PostgreSQL есть понятие Табличное пространство(TABLSEPACE). Разные табличные пространства можно размещать как на разных, так и на одном диске, хотя в последнем смысла не так много.

По умолчанию создается табличное пространство pg_default, у меня для версии 9.6 размещен в каталоге /var/lib/postgresql/9.6/main/base/.

Создание табличного пространства

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

По условию задачи табличное пространство необходимо разместить в каталоге /mnt/POINT_01/pg_base/, создаем его и пользователя postgres сделаем владельцем

Для дальнейших действий необходимо подключиться к сервру через pgAdmin или воспользоаться оболочкой psql. В pgAdmin можно выполнять команды графически так и запросами, в psql только запросами. Буду описывать графический вариант, а затем запрос, кторая выполнит теже действия.

Теперь создадим новое табличное пространство, назовем его point_01, в pgAdmin разворачиваем ветку Табличные пространства.

В ветке по нажатию ПКМ откроется меню, выбираем пункт Новый tablespace, в появившейся форме указываем название и местонахождение, и нажимаем кнопку OK. В ветке появится созданное тобличное пространство.

Перенос БД в другое табличное пространтсво

В ветке БД кликаем ПКМ по нужной ИБ, переходим в свойства на закладу Определение и выбираем необходимое табличное простарнство, и нажимаем кнопку OK.

После некоторого ожидания диалог закроется, база перенесена в другое табличное пространство.

Если c БД были установлены соединения, то выведется сообщение об шибке, например:

Для завершения всех соединений с БД необходимо выполнить запрос описанный ниже и повторить перенос:

Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск. Общий алгоритм такой (включая linux системы):

  • Останавливаем сервис СУБД
  • Перемещаем базы
  • Меняем конфиг postgres
  • Запускаем сервис СУБД

Для Windows системы:

    Заходим в сервисы
    Нажимаем WIN+R, и вводим команду

Отключаем службу, относяющуюся к СУБД, например postgresql-x64-9.6 — PostgreSQL Server 9.6. В свойствах службы можно посмотреть команду запуска. В сущности необходимо будет поменять параметр после ключа -D
Заходим в реестр
Нажимаем WIN+R, и вводим команду

Ищем ветку служб Windows и наш сервис СУБД, например postgresql-x64-9.6 — PostgreSQL Server 9.6

  • Меняем ключ реестра ImagePath.
  • Допустим надо указать папку D:databasesPostgreSQL9.6. Тогда, вместо

    прописываем:

    1. Копируем/перемещаем базы из старого места в новое
    2. Запускаем службу

    Для linux системы:

    1. Отключаем службу, относяющуюся к СУБД
    2. В конфигурационном файле /etc/init.d/postgresql меняем содержимое переменной $PGDATA
    3. Копируем/перемещаем базы из старого места в новое
    4. Запускаем службу, относяющуюся к СУБД

    Похожие записи

    Как установить будильник на компьютере с Windows 10?

    В операционной системе windows 10 есть встроенный будильник. Он так и назыается "Будильник и часы". Cочетает такие функции, как будильник, мировое время, таймер и секундомер.

    Обновить bash на Windows 10

    Если, запуская подсистему Linux мы получаем сообщение о необходимости обновить пакеты, то можно решить проблему удалив подсистему и поставив заново. Но тогда удалятся и данные, а можно данные сохранить, проведя процедуру upgrade подсистемы linux.

    Как правильно обновить Ubuntu через терминал?

    Команды обновления убунту через командную строку: apt-get update и apt-get dist-upgrade

    Open with Code

    Добавление пункта Open with Code после установки VS Code

    Как посмотреть свободное место из терминала Ubuntu?

    На курсах backend по C++

    Настройка после установки Ubuntu 18.04 для курса по C++

    1. Останавливаем сервис postgresql.

    Пуск — Выполнить, вводим services.msc и жмём Enter. Находим PostgreSQL Database Server, кликаем правой кнопкой мыши, и нажимаем Остановить.

    2. Переносим базы.

    Выбираем диск, на который необходимо перенести базы. Например диск E. На этом диске создаём папку PostgreSQLdata. В эту папку копируем содержимое папки, которая создалась по умолчанию при установке PostgreSQL — C:Program Files (x86)PostgreSQL9.1.2-1.1Cdata.

    3. Меняем путь к базам в реестре Windows.

    Пуск — Выполнить, вводим regedit и жмём Enter.
    В редакторе реестра переходим к ключу HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicespgsql-9.1.2-1.1C и открываем для изменения строковой параметр ImagePath. В нем меняем путь к базам.
    Старый путь обычно выглядит так — «C:Program Files (x86)PostgreSQL9.1.2-1.1Cinpg_ctl.exe» runservice -w -N «pgsql-9.1.2-1.1C» -D «C:Program Files (x86)PostgreSQL9.1.2-1.1Cdata»
    Параметр -D указывает на директорию где хранятся наши базы, поэтому меняем ее на — «E:PostgreSQLdata»
    То есть полная строка будет выглядеть примерно так — «C:Program Files (x86)PostgreSQL9.1.2-1.1Cinpg_ctl.exe» runservice -w -N «pgsql-9.1.2-1.1C» -D «E:PostgreSQLdata»

    4. Запускаем сервис postgresql.

    Перед тем как запустить службу postgresql необходимо убедиться, что пользователь от имени которого стартует служба, должен иметь полные права на папку E:PostgreSQL, иначе служба просто не запустится.
    Пуск — Выполнить, вводим services.msc и жмём Enter. Находим PostgreSQL Database Server, кликаем правой кнопкой мыши, и нажимаем Запустить.

    Если все сделали правильно, то на этом все.

    Затвитить пост!

    Оцените статью
    Ремонт оргтехники
    Добавить комментарий