Postgres 9.2 табличное пространство pg_largeobject

В настоящее время я перемещаю некоторые данные и столкнулся с интересной проблемой.

У меня есть сервер CentOS (6.3), работающий с Postgres 9.2 на сервере с ограниченным встроенным дисковым пространством; тем не менее, у меня есть большое количество чрезвычайно надежного внешнего сетевого дискового пространства.

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

Я понял, что у меня есть большой объем данных BLOB, которые нужно хранить в pg_largeobject.

Я искал, как установить табличное пространство pg_largeobject, и нашел некоторые результаты, но они ужасно устарели.

Я нашел одну статью это выглядит многообещающе, но я сомневаюсь, потому что в треде также упоминается, что все будет/должно измениться.

У меня два вопроса...

  1. В идеальном мире я хотел бы переместить все postgres (включая pg_largeobject) на это внешнее хранилище для простоты обслуживания. Это возможно?
  2. Если нет, как я могу заставить pg_largeobject использовать мое сетевое хранилище?

person losthorse    schedule 19.03.2013    source источник


Ответы (1)


Как вы упомянули, лучше всего переместить весь PostgreSQL в удаленное хранилище, предполагая, что хранилище использует надежное блочное устройство файловой сети, такое как iSCSI, ATAoE или NBD. Я бы не рекомендовал запускать Pg на NFS, а запускать его на CIFS/SMBFS просто не получится.

Просто:

  • Сделать резервную копию
  • Обратите внимание на вывод SHOW data_directory; в psql
  • Выключите PostgreSQL
  • Переместите каталог данных (папку, содержащую pg_xlog, pg_clog и т. д.) в удаленное хранилище.
  • Настройте разрешения для родительских каталогов для нового местоположения каталога данных, чтобы убедиться, что блок разрешений postgres для пользователя, postgres, группы или others имеет не менее execute для каждого родительского каталога, чтобы он мог перемещаться по дереву.
  • Настройте сценарии запуска вашей системы, чтобы установить новое местоположение в качестве каталога данных PostgreSQL или символической ссылки на старое расположение каталога данных (вывод SHOW data_directory) на новое местоположение.
  • Запустить PostgreSQL

К сожалению, разные системы и пакеты находят каталог данных по-разному. Например, Debian/Ubuntu используют pg_wrapper.

person Craig Ringer    schedule 19.03.2013
comment
спасибо за быстрый ответ... я ничего не вижу в каталоге /etc/sysconfig/pgsql/... где еще я могу это найти? Кроме того, можно ли выполнить новую установку postgres непосредственно в удаленном месте? - person losthorse; 19.03.2013
comment
@losthorse Как вы установили PostgreSQL? Какие пакеты вы используете? - person Craig Ringer; 19.03.2013
comment
Я следовал руководству, найденному здесь people.planetpostgresql.org/devrim/index.php?/archives/ и установил пакет напрямую. - person losthorse; 19.03.2013
comment
@losthorse Итак, вы используете RPM PGDG. Похоже, что datadir в них не настраивается, поэтому смотрите обновленный ответ. - person Craig Ringer; 19.03.2013
comment
Хорошо, я нашел каталог, в котором хранятся файлы, которые вы упомянули... Я не возражаю следовать инструкциям, которые вы предоставили, но, если возможно, я бы предпочел новую установку. Я не возражаю против добавления репо и использования yum, если это даст мне возможность установить каталог назначения... часть того, чего я пытаюсь избежать, - это синхронизация файлов журнала на сервере с записями на внешнее хранилище при выполнении резервного копирования. - person losthorse; 19.03.2013
comment
@losthorse RPM PGDG не позволяют вам устанавливать каталог данных, поэтому переустановка ничего не изменит. Просто создайте символическую ссылку на весь каталог данных, включая pg_xlog, pg_clog и т. д. Вы можете создать символическую ссылку на файлы журнала PostgreSQL на то же хранилище, если хотите, или установить параметры ведения журнала в postgresql.conf, чтобы он записывал файлы журнала в то место, где вы хочу этого. - person Craig Ringer; 19.03.2013
comment
@losthorse Просто для ясности, сделайте символическую ссылку на каталог, содержащий pg_xlog, pg_clog, base и т. д., не добавляйте отдельные символические ссылки для каждого. Помните, что весь каталог данных должен быть синхронизирован; если вы потеряете, скажем, pg_clog, вы потеряете всю базу данных. - person Craig Ringer; 19.03.2013