Перемещение каталога данных PostgreSQL в Ubuntu 18.04
Объём базы данных увеличивается, и со временем она исчерпывает пространство файловой системы. Кроме того, если ввод и вывод находится на одном разделе с остальной частью операционной системы, возможные конфликты доступа к устройствам ввода/вывода. RAID, сетевые блочные хранилища и другие устройства предоставляют избыточность данных и другие полезные функции. Если вы хотите добавить больше места и оптимизировать производительность, а также воспользоваться другими функциями хранения, этот мануал поможет вам переместить каталог данных PostgreSQL.
Требования
- Сервер Ubuntu 18.04 и пользователь с доступом к sudo, настроенный по этому мануалу.
- Сервер PostgreSQL (чтобы установить PostgreSQL, следуйте этому руководству).
В данном мануале показано, как переместить данные в блочное хранилище, смонтированное в mnt/volume-nyc1-01. Это поможет вам переместить каталог данных в новое расположение независимо от того, какое хранилище вы используете.
1: Перемещение каталога данных PostgreSQL
Чтобы подготовиться к перемещению каталога данных PostgreSQL, нужно уточнить его текущее расположение. Для этого откройте интерактивную сессию PostgreSQL; флаг -u postgres откроет сессию пользователя postgres.
sudo -u postgres psql
Запросите каталог данных:
SHOW data_directory;
data_directory
------------------------------
/var/lib/postgresql/10/main
(1 row)
Данный вывод подтверждает, что PostgreSQL использует каталог данных по умолчанию, /var/lib/postgresql/10/main. Чтобы закрыть сессию, введите \q.
Чтобы обеспечить целостность данных, отключите PostgreSQL, прежде чем вносить изменения в каталог данных:
sudo systemctl stop postgresql
Утилита systemctl не отображает результаты некоторых команд управления сервисами. Чтобы убедиться в том, что сервер баз данных отключен, запросите его состояние:
sudo systemctl status postgresql
Последняя строка вывода должна выглядеть так:
. . .
Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.
Теперь, когда сервер остановлен, скопируйте текущий каталог данных в новое расположение с помощью rsync. Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v отображает подробный вывод.
Запустите rsync из каталога postgresql, чтобы имитировать первоначальную структуру каталогов в новом каталоге данных. Создавая такой каталог в точке монтирования и сохраняя все права на него за пользователем PostgreSQL, вы можете избежать конфликта привилегий в дальнейшей работе.
Примечание: Убедитесь, что в названии каталога нет конечного слеша (система может добавить его, если вы используете автодополнение). Если такой слеш есть, rsync будет сбрасывать содержимое каталога в точку монтирования, а не в каталог.
Каталог, указывающий версию (10), не является строго необходимым, но он не помешает, если вы хотите следовать соглашениям проекта и особенно если у вас есть необходимость в будущем использовать несколько версий PostgreSQL.
sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01
После выполнения rsync переименуйте текущую папку, добавив расширение .bak. Оставьте расширение до тех пор, пока не убедитесь, что данные перемещены успешно. Это поможет не спутать файлы.
sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak
2: Настройка нового каталога данных
По умолчанию data_directory находится в /var/lib/postgresql/10/main согласно файлу /etc/postgresql/10/main/postgresql.conf. Откройте этот файл:
sudo nano /etc/postgresql/10/main/postgresql.conf
Найдите строку data_directory и укажите путь к новому каталогу данных.
. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/10/main'
. . .
Сохраните и закройте файл (CTRL + X, Y, Enter). Это все, что нужно сделать, чтобы настроить PostgreSQL для поддержки нового каталога данных. Теперь нужно запустить сервис PostgreSQL и убедиться, что он использует новый каталог.
3: Перезапуск PostgreSQL
После изменения директивы data-directory в каталоге postgresql.conf нужно запустить сервер PostgreSQL.
sudo systemctl start postgresql
Чтобы убедиться в том, что теперь PostgreSQL использует новый каталог данных, запросите состояние сервиса:
sudo systemctl status postgresql
Если сервис работает правильно, в конце вывода будет такая строка:
. . .
Jul 12 15:45:01 ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS.
. . .
Чтобы убедиться, что PostgreSQL использует новый каталог данных, откройте командную строку PostgreSQL:
sudo -u postgres psql
Запросите каталог данных:
SHOW data_directory;
data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/10/main
(1 row)
Теперь нужно убедиться в том, что база данных полностью функциональна. После проверки целостности данных вы можете удалить резервную копию каталога данных:
sudo rm -Rf /var/lib/postgresql/10/main.bak
Заключение
Теперь вы знаете, как переместить каталог данных PostgreSQL. В данном руководстве использовалось блочное хранилище, однако эти инструкции подходят для настройки любого устройства независимо от технологии, на которой оно основано.
Читайте также: 5 вариантов настройки сервера для обслуживания веб-приложения
Tags: PostgreSQL, Ubuntu, Ubuntu 18.04
1 комментарий
psql: не удалось подключиться к серверу: No such file or directory
Он действительно работает локально и принимает
соединения через Unix-сокет “/var/run/postgresql/.s.PGSQL.5432”?
выдает после всех манипуляций это