- Guesto notes
- Задача
- Решение
- Создание табличного пространства
- Перенос БД в другое табличное пространтсво
- Похожие записи
- Как установить будильник на компьютере с Windows 10?
- Обновить bash на Windows 10
- Как правильно обновить Ubuntu через терминал?
- Open with Code
- Как посмотреть свободное место из терминала Ubuntu?
- На курсах backend по C++
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
Допустим надо указать папку D:databasesPostgreSQL9.6. Тогда, вместо
прописываем:
- Копируем/перемещаем базы из старого места в новое
- Запускаем службу
Для linux системы:
- Отключаем службу, относяющуюся к СУБД
- В конфигурационном файле /etc/init.d/postgresql меняем содержимое переменной $PGDATA
- Копируем/перемещаем базы из старого места в новое
- Запускаем службу, относяющуюся к СУБД
Похожие записи
Как установить будильник на компьютере с 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, кликаем правой кнопкой мыши, и нажимаем Запустить.
Если все сделали правильно, то на этом все.
Затвитить пост!