Перемещение каталога данных PostgreSQL 12 в Ubuntu 18.04

Объём базы данных постоянно увеличивается и со временем дисковое пространство заканчивается. Возникает вопрос, что делать? Путей решения несколько, например расширить текущий раздел или перенести базу на более емкий и быстрый диск. При планировании новой инсталляции PostgreSQL так же желательно размещать каталог данных кластера на отдельном томе для повышения производительности.

Исходные данные: ОС Ubuntu 18.04 с PostgreSQL 12
Задача: Перенести каталог данных кластера на новый диск.

Для начала проверим где сейчас находится каталог данных кластера:

su - postgres -c 'psql -c "SHOW data_directory;"'

Вывод:

       data_directory
----------------------------
 /var/lib/postgresql/12/main
(1 row)

Это стандартный путь размещения каталога, в котором хранятся данные.

На сервер подключили новый дисковый массив и смонтировали его в /pgdata, именно туда нам и нужно перенести данные.

Для переноса останавливаем кластер:

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

Часть вывода:

2019-11-08 07:17:01.252 UTC [4684] LOG:  starting PostgreSQL 12.0 (Ubuntu 12.0-2.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
2019-11-08 07:17:01.252 UTC [4684] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2019-11-08 07:17:01.253 UTC [4684] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2019-11-08 07:17:01.306 UTC [4685] LOG:  database system was shut down at 2019-11-08 07:10:11 UTC
2019-11-08 07:17:01.310 UTC [4684] LOG:  database system is ready to accept connections

PostgreSQL успешно запустился и готов принимать соединения.

Проверим где сейчас находится каталог данных кластера:

su - postgres -c 'psql -c "SHOW data_directory;"'

Вывод:

       data_directory
----------------------------
 /pgdata/postgresql/12/main
(1 row)

Отлично. Теперь можно запустить наше приложение работающее с PostgreSQL, проверить корректность его работы. После этого можно удалить старый каталог.

Удаляем старый каталог:

rm -rf /var/lib/postgresql/12/main.backup

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


Оставить комментарий

avatar
1000

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Подписаться  
Уведомление о