Разверните OpenClaw в облаке в один клик
Вход/ Регистрация

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

15413
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:

    
sudo -u postgres psql

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

    
SHOW data_directory;

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

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

    
sudo systemctl stop postgresql

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

    
sudo systemctl status postgresql

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

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

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

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

    
sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

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

    
sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

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

DBaaS

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

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

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

    
sudo nano /etc/postgresql/10/main/postgresql.conf

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

    
/etc/postgresql/10/main/postgresql.conf . . . data_directory = '/mnt/volume_nyc1_01/postgresql/10/main' . . .

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

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

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

    
sudo systemctl start postgresql

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

    
sudo systemctl status postgresql

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

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

    
sudo -u postgres psql

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

    
SHOW data_directory;

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

    
sudo rm -Rf /var/lib/postgresql/10/main.bak

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

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

Таблица тарифов
Сравнение тарифов
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 ГГц2 x 3.3 ГГц2 x 3.3 ГГц4 x 3.3 ГГц4 x 3.3 ГГц6 x 3.3 ГГц8 x 3.3 ГГц
Память2 ГБ2 ГБ4 ГБ8 ГБ12 ГБ12 ГБ16 ГБ
Диск NVMe20 ГБ30 ГБ40 ГБ80 ГБ120 ГБ180 ГБ220 ГБ
Резервные копииЕстьЕстьЕстьЕстьЕстьЕстьЕсть
Приватный IPЕстьЕстьЕстьЕстьЕстьЕстьЕсть
PostgreSQL 18
Выбрать
Фиксированный
Произвольный
CPU
RAM
Диск
Стоимость
1 x 3.3 ГГц
2 ГБ
20 ГБ
790 ₽/мес
2 x 3.3 ГГц
2 ГБ
30 ГБ
1 160 ₽/мес
2 x 3.3 ГГц
4 ГБ
40 ГБ
1 580 ₽/мес
Раз в день
0 ₽/месяц
Отключить
Не рекомендуется

Заключение

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

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

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

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