Перенос баз postgresql на другой диск windows

Перенести базы PostgreSQL на другой диск Windows Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск.

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

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

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

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

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

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

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

    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services
  3. Меняем ключ реестра ImagePath. Реестр Windows, служба postgres

Допустим надо указать папку D:databasesPostgreSQL9.6. Тогда, вместо

"C:Program FilesPostgreSQL9.6binpg_ctl.exe" runservice -N "postgresql-x64-9.6" -D "C:Program FilesPostgreSQL9.6data" -w

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

"C:Program FilesPostgreSQL9.6binpg_ctl.exe" runservice -N "postgresql-x64-9.6" -D "D:databasesPostgreSQL9.6" -w
  1. Копируем/перемещаем базы из старого места в новое
  2. Запускаем службу

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

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

Ссылка по теме:

  • How To Move a PostgreSQL Data Directory to a New Location on Ubuntu 16.04

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

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

Добавить в PATH (окружение)

Добавить папку в переменную среды PATH для текущей сессии

Python to exe

Про конвертер .py в .exe с использованием простого графического интерфейса, созданного с использованием Eel и PyInstaller в Python

Linux. Создание файла определённого размера

создание файла без реальной записи данных

fallocate -l 2G filename.ext

или (медленный вариант)

user@ubuntu:~$ dd if=/dev/zero of=filname.ext bs=100M count=5
5+0 записей считано
5+0 записей написано
скопировано 524288000 байт (524 MB), 3,09439 c, 169 MB/c

  • https://tyapk.ru/blog/post/tretya-laba-os

Linux. Команда sed

Команда sed — это потоковый редактор текста. Вставляет/изменяет/добавляет текст не открывая файл визуально. Обычно используется в скриптах.

Open Windows Terminal in current folder

Add setting "startingDirectory": "." in terminal profile CTRL + ,

Как мне перенести базу данных PostgreSQL на новый жесткий диск?


Если у Вас PostgreSQL установлен на системном диске C, но вы хотите переместить базы данных на другой раздел или внешний жесткий диск, т.к на диске C мало места, это может быть сделано без переустановки PostgreSQL.

Первым делом, остановите службу PostgreSQL на время переноса.

Windows XP
Пуск > Панель Управления> Администрирование > Службы

Windows Vista/W7
Пуск > Поиск > Службы

Вам нужно, чтобы открылось такое окно:

postgres-001.jpg

Щелкните правой кнопкой мыши по службе PostgreSQL и выберите в меню «Стоп» для остановки службы.

Затем создайте на том диске куда вы хотите перенести базу папку Program Files в ней PostgreSQL и в ней data. Должен получиться путь I:/Program Files/PostgreSQL/data

Далее скопируйте или переместите все данные из первоначальной папки c:/program files/PostgreSQL/8.3/data в новую созданную Вами I:/Program Files/PostgreSQL/data. Это может занять много времени.


Редактирование реестра:
Теперь мы должны указать PostgreSQL новую папку расположения данных, а для этого нам нужно внести изменения в реестр

Windows XP
Перейдите Пуск > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:

Windows Vista/W7
Перейдите Пуск> Все программы>Стандартные > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:

postgres-002.jpg

В левой панели откройте папку : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/pgsql-8.3, см. картинку ниже:

postgres-003.jpg

На картинке красной линией обведен ключ, который нужно изменить. Щелкните правой кнопкой мыши по имени ключа и выберите «Изменить», откроется окно со значением ключа:

«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»

Теперь Вам нужно изменить только часть, выделенную жирным шрифтом. Вы переместили базу и должны указать PostgreSQL новый путь, именно он и выделен. Нельзя допустить ошибку в пути, поэтому можно сделать так: открыть в проводнике нашу папку /data и кликнуть правой кнопкой мыши по любому файлу и выбрать Свойства, откроется такое окно:

postgres-004.jpg

В строке «Размещение» будет написан полный путь к папке, который нужно выделить и скопировать. И после этого вставить его вместо выделенной части ключа в реестре. Старый ключ выглядел так:

«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»

Должно получиться так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «I:/Program Files/PostgreSQL/8.3/data/»

Это все. Закройте все окна и перезагрузите компьютер.

Если перенесенная база данных работает нормально можно удалить исходную папку /data на диске C, если Вы не сделали этого раньше.

Join @AdmNtsRu on Telegram

Смотрите также:

Содержание

  1. Андрей Янакаев
  2. Стремление к совершенству залог успеха
  3. Меняем каталог размещение базы Postgres
  4. Перемещение баз Postgresql + 1C
  5. Как переместить на другой диск базы Postgresql
  6. PostgreSQL. Размещение БД на другом диске
  7. Задача
  8. Решение
  9. Создание табличного пространства
  10. Перенос БД в другое табличное пространтсво
  11. Перенос базы данных PostgreSQL на новый жесткий диск
  12. Change the default PGDATA directory on Windows
  13. Contents
  14. Step 1: Stop The PostgreSQL Service
  15. Step 2: Change Registry Values
  16. Step 3: Move the data folder to a new the location
  17. Step 4: Restart The PostgreSQL Service

Андрей Янакаев

Стремление к совершенству залог успеха

Меняем каталог размещение базы Postgres

Если Вы столкнулись с задачей создания новой базы PostgreSQL в нужном каталоге или перемещением используемой базы в другую папку на диске, то делается это так:

Запускаем pgAdmin любым доступным способом и подключаетесь к серверу.

Создаем новое tablespace, указываем имя, размещение (указанный путь должен существовать иначе будет сообщено об ошибке) и владельца

Нажимаем «ОК» и добавленное размещение появилось в ветке «tablespace»

Создаем новую базу с таким же именем без префикса «ts_«, указываем такого же владельца, при необходимости выбираем нужную кодировку, заполняем поле шаблон и указываем ранее созданное размещение «ts_ut_test2» нажимаем OK и база данных создана в нужном каталоге.

Для переноса базы в новое пространство нужно отключить переносимую базу. Далее открываем системную базу postrges и в инструментах выбрать «Query tool» и выполнить следующий запрос:

ALTER DATABASE ИмяПеремещаемойБазыДанных SET TABLESPACE НаименованиеНовогоПространства

Источник

Перемещение баз Postgresql + 1C

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

1С в режиме клиент-сервер часто используют с postgresql, а иногда по умолчанию его устанавливают на диск C:, куда в дальнейшем и разворачивают базы. Однако место на диске может закончится и необходимо перенести базы на более широкий диск, а для этого необходимо было переконфигурировать postgresql и сменить директорию его баз.

Останавливаем сервер 1С
Останавливаем Postgresql

Копируем папку C:Program FilesPostgreSQL8.1.5-14.1C data в D:psqldatadata

После копирования необходимо настроить права к папке data. Права пользователя под которым работает postgres должны быть как на картинке:

Заходим в реестр и ищем путь

Где pgsql-8.1.5-14.1C — имя вашей версии postgresql
Находим ImagePath
Меняем
«C:Program FilesPostgreSQL8.1.5-14.1Cbinpg_ctl.exe» runservice -N «pgsql-8.1.5-14.1C» -D «C:Program FilesPostgreSQL8.1.5-14.1Cdata»
на
«C:Program FilesPostgreSQL8.1.5-14.1Cbinpg_ctl.exe» runservice -N «pgsql-8.1.5-14.1C» -D «D:psqldatadata»

О дополнительных способах работы с базами 1с и программированию можно узнать на форуме по 1С http://www.cyberforum.ru/1c/

2) Дальше может понадобиться файлик 1CV8Reg.lst отвечающий за подключение баз.

По пути C:Program Files1cv82srvinforeg_1541

можно его найти и заглянув в который Вы увидите подключенные информационные базы на сервере (через оснастку «администрирование серверов 1С»). Их можно удалить, изменить названия с описаниями

Запускаем postgresql
Запускаем сервер 1С

Источник

PostgreSQL. Размещение БД на другом диске

После установки 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 БД были установлены соединения, то выведется сообщение об шибке, например:

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

Источник

Перенос базы данных PostgreSQL на новый жесткий диск

Как мне перенести базу данных PostgreSQL на новый жесткий диск?

Если у Вас PostgreSQL установлен на системном диске C, но вы хотите переместить базы данных на другой раздел или внешний жесткий диск, т.к на диске C мало места, это может быть сделано без переустановки PostgreSQL.

Первым делом, остановите службу PostgreSQL на время переноса.

Windows XP
Пуск > Панель Управления> Администрирование > Службы

Windows Vista/W7
Пуск > Поиск > Службы

Вам нужно, чтобы открылось такое окно:

Щелкните правой кнопкой мыши по службе PostgreSQL и выберите в меню «Стоп» для остановки службы.

Затем создайте на том диске куда вы хотите перенести базу папку Program Files в ней PostgreSQL и в ней data. Должен получиться путь I:/Program Files/PostgreSQL/data

Далее скопируйте или переместите все данные из первоначальной папки c:/program files/PostgreSQL/8.3/data в новую созданную Вами I:/Program Files/PostgreSQL/data. Это может занять много времени.

Редактирование реестра:
Теперь мы должны указать PostgreSQL новую папку расположения данных, а для этого нам нужно внести изменения в реестр

Windows XP
Перейдите Пуск > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:

Windows Vista/W7
Перейдите Пуск> Все программы>Стандартные > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:

В левой панели откройте папку : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/pgsql-8.3, см. картинку ниже:

На картинке красной линией обведен ключ, который нужно изменить. Щелкните правой кнопкой мыши по имени ключа и выберите «Изменить», откроется окно со значением ключа:

«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»

Теперь Вам нужно изменить только часть, выделенную жирным шрифтом. Вы переместили базу и должны указать PostgreSQL новый путь, именно он и выделен. Нельзя допустить ошибку в пути, поэтому можно сделать так: открыть в проводнике нашу папку /data и кликнуть правой кнопкой мыши по любому файлу и выбрать Свойства, откроется такое окно:

В строке «Размещение» будет написан полный путь к папке, который нужно выделить и скопировать. И после этого вставить его вместо выделенной части ключа в реестре. Старый ключ выглядел так:

«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»

Должно получиться так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «I:/Program Files/PostgreSQL/8.3/data/»

Это все. Закройте все окна и перезагрузите компьютер.

Если перенесенная база данных работает нормально можно удалить исходную папку /data на диске C, если Вы не сделали этого раньше.

Источник

Change the default PGDATA directory on Windows

PostgreSQL for Windows installs the PGDATA directory by default into «C:Program FilesPostgreSQLsome versiondata». This mini-HOWTO explains how to change the default PGDATA directory to another location.

Contents

Step 1: Stop The PostgreSQL Service

Close all application that are currently connected to your database, then go to Windows Services Management and stop the PostgreSQL service:

Start->Settings->Control Panel->Administrative Tools->Services

You should check the task manager to see if any postgresql.exe instances are still running. If so, DO NOT TERMINATE them, instead close all applications that are still connected to the database. Sometimes services like webservers keep persistent connections. In this case you also should stop these services.

Step 2: Change Registry Values

Start the Windows Registry Editor (regedit.exe) and navigate to: «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicespgsql-some version».

Double click on «ImagePath» and change the directory after the «–D» option to your new location. If the path to your new location contains spaces, you should then enclose it with quotes.

Step 3: Move the data folder to a new the location

Move your current PGDATA directory to the directory you just specified in Step 2. Please note that you should do this as Administrator on server machines. You should also check user permissions in the new directory to ensure the username under which your PostgreSQL instance runs has permissions to do so in the new directory, otherwise PostgreSQL will not start.

Step 4: Restart The PostgreSQL Service

Before you can start your database you must close and re-open the Windows Services Management window. This refreshes the path you just changed in the registry without the need to restart your system.

After closing and re-opening the Services Management window, you should check the «path to executable» information of the PostgreSQL Database service. The path after «–D» option should be pointing to your new directory now.

Now that the PGDATA directory has been re-located and the service startup parameter in the registry has been modified, you can go ahead and start the service. [[Category::Administration]]

Источник

Migrating the data cluster from C: to E:

I’m new to working with large data in Windows, and ran into some unexpected difficulty when the PostgreSQL database ran out of space on my server’s C drive. It might also be a good idea to isolate your postgres database from a location other than the C:Program Files folder for permissions/security/data integrity reasons (I had a reference for this but I lost it). Here’s how to move your PostgreSQL data directory

Basing myself on this dba.stackex answer and this wiki post

1. Stop the PostgreSQL service

Go to Start > Services. Scroll down to postgresql-x64-9.5 and right-click Stop

2. Copy data

I copied the data with File Explorer from C:Program FilesPostgreSQL9.5data to E:pg_dbdata

3. Modify postgresql.conf (probably not necessary if you move everything to the new location)

I edited the following lines

#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------

# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.

data_directory = 'E:pg_dbdata'		# use data in another directory
					# (change requires restart)
hba_file = 'C:Program FilesPostgreSQL9.5datapg_hba.conf'	# host-based authentication file
					# (change requires restart)
ident_file = 'C:Program FilesPostgreSQL9.5datapg_ident.conf'	# ident configuration file
					# (change requires restart)

4. Modify the command that starts PostgreSQL

If you Right Click to Properties on the PostgreSQL services in Services, you’ll notice that the startup command is

"C:Program FilesPostgreSQL9.5binpg_ctl.exe" runservice -N "postgresql-x64-9.5" -D "C:Program FilesPostgreSQL9.5data" -w

The -D "C:Program FilesPostgreSQL9.5data" flag is indicating that the data directory is C:Program FilesPostgreSQL9.5data

DO NOT EDIT THE REGISTRY

In any case, I didn’t have permission on the server I was using and it seems to be a Bad Idea(tm) see here

Direct registry modification should be avoided (because you can’t be sure what else Windows is changing when it modifies the path to exe, f.e.) unless you are absolutely sure what you do

Start the cmd prompt as an administrator by hitting the Windows button and typing cmd then right-clicking “Run as Administrator”

You can see the current configuration for PostgreSQL by typing sc qc postgresql-x64-9.5 1000 and hitting Enter.

Modify the configuration to the following with the sc command

sc config postgresql-x64-9.5 binPath= ""C:Program FilesPostgreSQL9.5binpg_ctl.exe" runservice -N "postgresql-x64-9.5" -D "E:pg_dbdata" -w"

5. Change permissions for the new data directory

For the new data-dictionary folder: Right-click on it and click Properties. Under the Security Tab click “Edit...” and then “Add...”. Type “Network Service” and then click “Check Names”, make sure it has Modify and Full Control permissions and then click OK.
Equally important PostgreSQL needs to be able to “see” the data-directory (see my ServerFault.StackEx question), i.e. it needs to have read access to the parent directories above it. So Right-click on the pg_db folder and under the Security Permissions add Network Services again, but this time it only needs Read & Execute as well as List folder contents permissions.

6. Restart the Service

Go back to the Services window (if it was still open, refresh it) and Start the PostgreSQL service. You should be able to connect to it again in PGAdmin



postgresql

Перейти к содержимому

Настройка 1С

Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.

Разберем сценарий переноса баз 1С PostgreSQL на другой диск или папку. Для этого требуется перенастроить запуск службы СУБД с новым параметрами. А точнее — изменить ключ «-D», за которым следует указание каталога данных.

Итак, ищем ветку в системном реестре (пример — в вашем случае название службы может отличаться, в зависимости от версии PostgreSQL):

HKLMSYSTEMCurrentControlSetServicespostgresql-1c-13

Содержимое параметра ImagePath для службы «postgresql-1c-13 — PostgreSQL Server 13»:

«C:Program FilesPostgreSQLbinpg_ctl.exe» runservice -N «postgresql-1c-13» -D «C:PostgreSQLdata» -w

  1. Выполните резервное копирование ИБ (через Конфигуратор, средствами СУБД).
  2. Временно остановите службу Агента сервера 1С.
  3. Остановите службу PostgreSQL. Сделайте бэкап ветки реестра с параметрами службы. Для подстраховки, чтобы можно было вернуться к прежним настройкам, если при новых появятся ошибки.
  4. Скопируйте каталог с базами на другой диск.

    Пример команды с копированием папок и прав безопасности ниже (выполняйте от имени администратора).

    Таким образом, каталог PostgreSQL с базами (вложенная папка data) скопируется с диска C: на D:.

robocopy C:PostgreSQL D:PostgreSQL /E /COPYALL /SECFIX
  1. Измените путь к базам в реестре — скорректируйте ImagePath для службы PostgreSQL (-D «D:PostgreSQLdata»).

    «C:Program FilesPostgreSQLbinpg_ctl.exe» runservice -N «postgresql-1c-13» -D «D:PostgreSQLdata» -w

  2. Последовательно запустите службу PostgreSQL, а далее Агент сервера 1С.
  3. Проверьте вход в ИБ.

Пусть все получится, и PostgreSQL вместе с сервером 1С корректно примут новое расположение файлов БД.

__________
Если что-то не получается и требуется поддержка — наши программисты готовы помочь → +7-911-500-10-11

PostgreSQL for Windows installs the PGDATA directory by default into «C:Program FilesPostgreSQLsome versiondata». This mini-HOWTO explains how to change the default PGDATA directory to another location.

Contents

  • 1 Step 1: Stop The PostgreSQL Service
  • 2 Step 2: Change Registry Values
  • 3 Step 3: Move the data folder to a new the location
  • 4 Step 4: Restart The PostgreSQL Service

Step 1: Stop The PostgreSQL Service

Close all application that are currently connected to your database, then go to Windows Services Management and stop the PostgreSQL service:

stop service

Start->Settings->Control Panel->Administrative Tools->Services

You should check the task manager to see if any postgresql.exe instances are still running. If so, DO NOT TERMINATE them, instead close all applications that are still connected to the database. Sometimes services like webservers keep persistent connections. In this case you also should stop these services.

Step 2: Change Registry Values

Start the Windows Registry Editor (regedit.exe) and navigate to: «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicespgsql-some version».

Double click on «ImagePath» and change the directory after the «–D» option to your new location. If the path to your new location contains spaces, you should then enclose it with quotes.

change the PGDATA path

Registry Editor

Step 3: Move the data folder to a new the location

Move your current PGDATA directory to the directory you just specified in Step 2. Please note that you should do this as Administrator on server machines.
You should also check user permissions in the new directory to ensure the username under which your PostgreSQL instance runs has permissions to do so in the new directory, otherwise PostgreSQL will not start.

Step 4: Restart The PostgreSQL Service

Before you can start your database you must close and re-open the Windows Services Management window. This refreshes the path you just changed in the registry without the need to restart your system.

After closing and re-opening the Services Management window, you should check the «path to executable» information of the PostgreSQL Database service. The path after «–D» option should be pointing to your new directory now.

check the new path

Service properties

Now that the PGDATA directory has been re-located and the service startup parameter in the registry has been modified, you can go ahead and start the service. [[Category::Administration]]

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

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

Содержание

  1. Задача
  2. Решение
  3. Создание табличного пространства
  4. Перенос БД в другое табличное пространтсво

Задача

Имеется сервер с ОС 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 сделаем владельцем

# mkdir /mnt/POINT_01/pg_base
# chown -R postgres:postgres /mnt/POINT_01/pg_base

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

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

PostgreSQL. Размещение БД на другом диске

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

PostgreSQL. Размещение БД на другом диске

Запрос:

CREATE TABLESPACE point_01 LOCATION '/mnt/DEPOT_01/pg_base'

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

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

PostgreSQL. Размещение БД на другом диске

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

Запрос:

ALTER DATABASE alt_production SET TABLESPACE point_01

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

ОШИБКА: база данных "alt_production " занята другими пользователями
DETAIL: Эта база данных используется ещё в 1 сеансе.
********** Ошибка **********

ОШИБКА: база данных "alt_production " занята другими пользователями
SQL-состояние: 55006
Подробности: Эта база данных используется ещё в 1 сеансе.

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

SELECT pg_terminate_backend (pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'alt_production ';

Источники: postgrespro.ru, unix.freegeek.ru

Понравилась статья? Поделить с друзьями:
  • Перенос профиля пользователя windows 10 transwiz
  • Перенос активации windows 10 на другой компьютер
  • Перенос профиля пользователя windows 10 profwiz
  • Перенос активации windows 10 на другой диск
  • Перенос профиля локального пользователя в домен windows 7