PostgreSQL
September 10, 2022

Восстановим из бекапа тестовый кластер, который был удалён. Увеличим сразу ему пресет и размер диска.

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

Восстановим наш кластер, который был до этого удалён.

Поехали!

Посмотрим какие бекапы у нас есть:

export FOLDER_ID=$(yc config get folder-id)
yc postgres backup list \
  --folder-id $FOLDER_ID

Обратим внимание на поле SOURCE CLUSTER ID. Там отображаются идентификаторы кластеров, бекапы для которых были созданы. Сверимся с теми кластерами, которые есть сейчас и найдём тот идентификатор кластера, который сейчас отсутствует.

Восстановим последнюю версию:

export ZONE=ru-central1-a
export SG=$(yc vpc sg get cam-db --format json | jq -r '.id')
export NETWORK_ID=$(yc vpc network get cameda-test --format json | jq -r '.id')
export SUBNET_ID=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc postgresql cluster restore \
  --backup-id c9qju518t3legaoe0pql:c9q3fh4n1drclq0liqer \
  --time '2022-09-10T10:15:05Z' \
  --name cam-postgres2 \
  --description 'PostgreSQL recovery' \
  --postgresql-version 14 \
  --environment production \
  --labels prod=postgres \
  --network-name cameda-test \
  --resource-preset s2.large \
  --host zone-id=$ZONE,subnet-id=$SUBNET_ID,assign-public-ip \
  --disk-type network-ssd \
  --disk-size 140 \
  --security-group-ids $SG \
  --backup-window-start 01:00:00 \
  --backup-retain-period-days 7 \
  --websql-access \
  --serverless-access \
  --datalens-access \
  --datatransfer-access=false \
  --deletion-protection=false \
  --async

Уменьшить размер хранилища, выставив значение меньше, чем было ранее, таким способом не получится.
Здесь при раскатке кластера из бекапа я заодно увеличиваю флейвор до s2.large и размер хранилища для БД до 140Гб.

Создаваться может долго. 30 минут и более.

Поменяем на всякий случай пароль пользователя:

yc postgresql user update --cluster-id c9qcekmja80bhm72rlc4 --login cameda --password passw0rd --async

Где c9qcekmja80bhm72rlc4 - идентификатор тестового кластера. И подключимся к нему.

Подключение прошло успешно. Кластер удаляем.