Объём базы данных постоянно увеличивается и со временем дисковое пространство заканчивается. Возникает вопрос, что делать? Путей решения несколько, например расширить текущий раздел или перенести базу на более емкий и быстрый диск. При планировании новой инсталляции PostgreSQL так же желательно размещать каталог данных кластера на отдельном томе для повышения производительности.
Исходные данные: ОС Ubuntu 18.04 с PostgreSQL 12
Задача: Перенести каталог данных кластера на новый диск.
Для начала проверим где сейчас находится каталог данных кластера:
su - postgres -c 'psql -c "SHOW data_directory;"'
Для переноса останавливаем кластер:
pg_ctlcluster 12 main stop
Переносим данные с помощью rsync и устанавливаем владельца:
Важное примечание: Убедитесь, что в названии каталога нет конечного слеша (система может добавить его, если вы используете автодополнение). Если такой слеш есть, то уберите его.
rsync -av /var/lib/postgresql /pgdata
chown -R postgres:postgres /pgdata
Переименовываем текущий каталог данных
mv /var/lib/postgresql/12/main /var/lib/postgresql/12/main.backup
Отредактируем файл конфигурации кластера /etc/postgresql/12/main/postgresql.conf
В нем нам нужно заменить настройку
data_directory = '/var/lib/postgresql/12/main'
на
data_directory = '/pgdata/postgresql/12/main'
Теперь можно запустить кластер:
pg_ctlcluster 12 main start
Проверим лог-файл:
tail -f /var/log/postgresql/postgresql-12-main.log
Отлично. Теперь можно запустить наше приложение работающее с PostgreSQL, проверить корректность его работы. После этого можно удалить старый каталог.
Удаляем старый каталог:
rm -rf /var/lib/postgresql/12/main.backup |