Жесткий диск Postgres DB нуждается в расширении

У меня есть виртуальная машина Azure, на которой работает Postgres в Unix, предоставленная Bitnami: PostgreSQL 9.6.2- 0 (Ubuntu 14.04)

БД работает нормально, и я заполняю ее, но через некоторое время размер БД достигает примерно 25 ГБ, а затем мой код (заполняющий БД) вылетает ...

psycopg2.OperationalError: could not extend file "base/16450/79079": No space left on device
HINT:  Check free disk space.

Я думал, что это произойдет. быть простым изменением размера моей виртуальной машины. Нет. Теперь виртуальная машина имеет размер жесткого диска 400 ГБ. Много места.

Затем я попробовал свой код и снова, на 25 ГБ, бум. Нет места.

Следующее, что я сделал, это вошел в виртуальную машину через SSH и проверил диски с помощью df -h :

enter image description here

Как видно выше, / dev / sda1 - это Размером 30 ГБ, из которых используется 29 ГБ. Я подозреваю, что мой Postgres использует этот жесткий диск ... установлен автоматически, когда я использовал шаблон Bitnami Azure.

Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1 .

Что я могу сделать? Мне нужно гораздо больше данных, чтобы войти в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1 через портал.

Обновление

По запросу, вот содержимое fstab до модификации (по умолчанию): устанавливается автоматически при использовании шаблона Bitnami Azure.

Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1 .

Что я могу сделать? Мне нужно гораздо больше данных, чтобы войти в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1 через портал.

Обновление

По запросу, вот содержимое fstab до модификации (по умолчанию): устанавливается автоматически при использовании шаблона Bitnami Azure.

Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1 .

Что я могу сделать? Мне нужно намного больше данных для входа в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1 через портал.

Обновление

По запросу, вот содержимое fstab до модификации (по умолчанию): enter image description here

Я изменил / mnt на / opt / bitnami / postgresql / data (согласно пути: https://stackoverflow.com/a/8237512/596841 ). Когда я обновил, сохранил, вышел и перезагрузил сервер, он вернулся к значениям по умолчанию (как показано выше).

-1
задан 23 May 2017 в 15:41
2 ответа

Проще всего смонтировать / dev / sdb1 туда, где находятся ваши данные. Как узнать, где находятся данные: ( https://stackoverflow.com/questions/1137060/where-does-postgresql-store-the-database )

Итак, как только вы узнаете, что остановите свою базу данных и переместите данные в ваш каталог / mnt.

Затем вы поместите больший диск туда, где он должен быть, чтобы postgres его увидел.

umount /dev/sdb1
mount /dev/sdb1 /original/path/to/data

Теперь вам, вероятно, потребуется обновить / etc / fstab с / mnt до / original / path / to / data, чтобы он будет сохраняться после перезагрузки.

Вы также можете использовать LVM и сделать это: https://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1006371

I лично считаю, что метод крепления самый простой.

0
ответ дан 5 December 2019 в 20:24

Теперь виртуальная машина имеет размер жесткого диска 400 ГБ

/ dev / sdb1 - это временное хранилище , это временное хранилище должно не ] использоваться для хранения данных, которые вы не хотите терять. (при перезагрузке временные данные будут утеряны)

Мне нужно гораздо больше данных для входа в мою базу данных Postgres

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

Добавьте новый диск через портал Azure: enter image description here enter image description here

Подключите / dev / sdc к виртуальной машине Azure:

root@jasonvm:/home/jason# fdisk -l  #list all disks

Disk /dev/sdc: 429.5 GB, 429496729600 bytes   #we can find this new disk
255 heads, 63 sectors/track, 52216 cylinders, total 838860800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Затем используйте эту команду для подключения этого диска к виртуальной машине Azure:

root@jasonvm:/home/jason# mkfs.ext4 /dev/sdc
root@jasonvm:/home/jason# mkdir -p /mnt/point1
root@jasonvm:/home/jason# mount /dev/sdc /mnt/point1
root@jasonvm:/home/jason# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  1.7G   12K  1.7G   1% /dev
tmpfs          tmpfs     344M  348K  344M   1% /run
/dev/sda1      ext4       30G  873M   28G   4% /
none           tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
none           tmpfs     5.0M     0  5.0M   0% /run/lock
none           tmpfs     1.7G     0  1.7G   0% /run/shm
none           tmpfs     100M     0  100M   0% /run/user
/dev/sdb1      ext4       50G   52M   47G   1% /mnt
/dev/sdc       ext4      394G   71M  374G   1% /mnt/point1
root@jasonvm:/home/jason# blkid    # list UUID
/dev/sr0: LABEL="rd_rdfe_stable.161107-1031" TYPE="udf" 
/dev/sda1: LABEL="cloudimg-rootfs" UUID="ce8fdc9c-fa56-49db-b69d-8c11634cbb7a" TYPE="ext4" 
/dev/sdb1: UUID="b0531bb0-dadf-4e20-a968-bd177989f7b8" TYPE="ext4" 
/dev/sdc: UUID="46c75dcc-51c8-4d53-8535-d4fc7bf3a5cb" TYPE="ext4" 
root@jasonvm:/home/jason# vi /etc/fstab   # add UUID to fstab, 
# CLOUD_IMG: This file was created/modified by the Cloud Image build process
UUID=ce8fdc9c-fa56-49db-b69d-8c11634cbb7a       /        ext4   defaults,discard        0 0
/dev/disk/cloud/azure_resource-part1    /mnt    auto    defaults,nobootwait,comment=cloudconfig 0       2
UUID=46c75dcc-51c8-4d53-8535-d4fc7bf3a5cb       /mnt/point1     ext4    defaults,nofail 0 0

Примечание :
мы должны добавить этот диск в / etc / fstab , таким образом, после перезагрузки этой виртуальной машины мы не потеряем соединение с этим диском.

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

Отредактировать data_directory в postgresql.conf , чтобы он указывал на новое местоположение (например, /mnt/point1/postgresql/9.3/main ])

Перенос содержимого каталога данных PG в / mnt / point1 через sudo rsync -av / opt / bitnami / postgresql / data / mnt / point1

Перезапуск posgtesql.

0
ответ дан 5 December 2019 в 20:24

Теги

Похожие вопросы