Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Как переместить каталог данных PostgreSQL в новое место в Ubuntu

14949
5 минут чтения
Средний рейтинг статьи: 5

Базы данных имеют тенденцию перерастать свою исходную файловую систему, увеличиваясь со временем. Если вдобавок они занимают одинаковый с операционной системой раздел, это потенциально может привести к конфликту ввода-вывода.

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

Как Переместить Каталог Данных Postgre SQL В Новое Место В Ubuntu

Подготовка

Для прохождения этого руководства вам понадобятся:

  • сервер Ubuntu 18.04 с непривилегированным пользователем и с sudo-правами;
  • установленный на вашем сервере PostgreSQL.

В этом руководстве мы перемещаем данные на блочное устройство хранения, смонтированное в /mnt/volume_nyc1_01. Способ, описанный здесь, универсален и поможет в перемещении каталога в другое место на любом базовом хранилище.

Шаг 1 — Перемещаем каталог данных PostgreSQL

Сначала нужно проверить текущее местоположение каталога, запустив интерактивный сеанс PostgreSQL. Здесь psql — это команда для входа в интерактивный монитор, а -u postgres указывает sudo выполнить psql от имени системного пользователя postgres:

    

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

    

По умолчанию стоит каталог /var/lib/postgresql/10/main, поэтому нам нужно переместить именно его. Закройте командную строку, введя \q и нажав ENTER.

Прежде чем менять что-либо в каталоге, нужно остановить PostgreSQL; так вы не нарушите целостность данных:

    

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

    

Последняя строка вывода сообщит вам, что PostgreSQL действительно остановлен.

Для того чтобы скопировать каталог в новое местоположение, мы будем использовать команду rsync. К ним можно добавить флаги: -a сохраняет разрешения и другие свойства у каталога, а -v обеспечивает детальный вывод – так вы сможете следить за прогрессом. Чтобы сымитировать изначальную структуру каталогов в новом местоположении, мы запустим rsync из каталога postgresql. Если мы создадим этот каталог postgresql в каталоге точки монтирования и сохраним право собственности за пользователем PostgreSQL, то не столкнёмся с проблемами разрешений во время обновлений в будущем.

Примечание: если у вас включено автозавершение по табуляции, проверьте, чтобы в каталоге не было завершающей косой черты. В противном случае rsync будет просто сбрасывать содержимое каталога в точку монтирования, а не копировать сам каталог.

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

    

Как только завершится копирование, переименуйте настоящую папку с расширением .bak и не удаляйте её до конца перемещения. Так ничего не перепутается из-за наличия каталогов с одинаковыми именами:

    

Теперь мы можем настроить PostgreSQL для доступа к каталогу данных в новом месте.

DBaaS

Запустите свою базу данных в облаке и
оптимизируйте процессы DevOps и CI/CD.

Шаг 2 — Указываем на новое местоположение каталога

По умолчанию значение для data_directory выставлено на /var/lib/postgresql/10/main в файле /etc/postgresql/10/main/postgresql.conf. Его нужно отредактировать, чтобы указать новый каталог:

    

Теперь в строке, начинающейся с data_directory измените путь, чтобы указать новое местоположение. Обновлённая директива будет выглядеть примерно так:

    

Сохраните файл и закройте его, нажав CTRL+X, затем Y и ENTER. Для настройки PostgreSQL в новом каталоге делать делать ничего больше не надо. На этом этапе осталось только снова включить службу PostgreSQL и проверить, что она действительно указывает на правильный каталог данных.

Шаг 3 — Перезапускаем PostgreSQL

После изменения директивы data_directory в файле postgresql.conf запустите сервер PostgreSQL с помощью systemctl:

    

Проверьте статус сервера:

    

Если служба запустилась правильно, вы увидите вот такую строку в конце вывода этой команды.

Ну и наконец, чтобы убедиться, что используется именно новый каталог, откройте командную строку PostgreSQL.

    

Ещё раз проверьте значение каталога данных:

    

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

    

Таким образом, вы успешно переместили каталог данных PostgreSQL в новое местоположение.

Разверните PostgreSQL в облаке за минуту

Cloud DB 1/1/8

447 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
Диск NVMe
8 ГБ
Приватный IP
Есть
Резервные копии
Есть
Cloud DB 1/2/20

711 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
Диск NVMe
20 ГБ
Приватный IP
Есть
Резервные копии
Есть
Таблица тарифов
Сравнение тарифов
Cloud DB 1/1/8
496
Cloud DB 1/2/20
790
Cloud DB 2/2/30
1160
Cloud DB 2/4/40
1580
Cloud DB 4/8/80
3160
Cloud DB 4/12/120
4240
Cloud DB 6/12/180
5460
Cloud DB 8/16/220
7040
Процессор1 x 3.3 ГГц1 x 3.3 ГГц2 x 3.3 ГГц2 x 3.3 ГГц4 x 3.3 ГГц4 x 3.3 ГГц6 x 3.3 ГГц8 x 3.3 ГГц
Память1 ГБ2 ГБ2 ГБ4 ГБ8 ГБ12 ГБ12 ГБ16 ГБ
Диск NVMe8 ГБ20 ГБ30 ГБ40 ГБ80 ГБ120 ГБ180 ГБ220 ГБ
Приватный IPЕстьЕстьЕстьЕстьЕстьЕстьЕстьЕсть
Резервные копииЕстьЕстьЕстьЕстьЕстьЕстьЕстьЕсть

Заключение

Если вы верно следовали инструкциям, каталог вашей базы данных теперь в новом месте, а вы ещё ближе к возможности масштабирования хранилища. Поздравляем!

14949
5 минут чтения
Средний рейтинг статьи: 5

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server