получение списка табличных пространств резервной копии
Добрый день, Появилась необходимость использования табличных пространств в кластере. Утилита поддерживает архивацию и восстановление табличных пространств. Однако, их нужно знать в лицо :) На сейчас нет возможности, используя ключи утилиты, выяснить какие табличные пространства используются в кластере. Максимально подробный режим информации о бэкапной копии
pg_probackup-13 show --format=json --instance=13 -i QZF6NW
ничего об этом не выводит. Вижу, что список табличных пространств утилита хранит в файле QZF6NW/database/tablespace_map, но анализировать его вручную считаю неверным подходом.
Прошу добавить в выводе указанной команды, или неким другим способом, отобразить список необходимых табличных пространств.
Зачем мне это? Есть несколько продуктовых серверов, на некоторых есть отдельные табличные пространства. Есть сервер тестирования бэкапов, на котором в в автоматическом режиме тестируются все бэкапы. Мне нужно знать какие табличные пространства есть в бэкапе, чтобы сформировать динамически внутри скрипта команды:
-T каталог_табл_пространства1=новый_каталог_табл_пространства1 -T каталог_табл_пространства2=новый_каталог_табл_пространства2
Так как на сервере для тестирования бэкапов нет возможности иметь самые разные каталоги под все случаи жизни, мы хотим использовать некоторое количество фиксированных каталогов создаваемых динамически чтобы восстановление прошло успешно. Нам нужно уметь получать список необходимых пространств и выполнять их переназначение в другие точки диска.
Добрый день! Звучит логично, надо сделать.
Спасибо, будем ждать
Звучит как что-то полезное (:
Пока получилась такая поделка (см. коммит выше). Пример выхлопа команды:
mk@mk-pc:~/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/backup/backups$ /home/mk/pg/REL_13_STABLE/bin/pg_probackup show -B /home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/backup --instance=node --format=json -i R0ZS4C
[
{
"instance": "node",
"backups": [
{
"id": "R0ZS4C",
"backup-mode": "FULL",
"wal": "ARCHIVE",
"compress-alg": "none",
"compress-level": 1,
"from-replica": "false",
"block-size": 8192,
"xlog-block-size": 8192,
"checksum-version": 1,
"program-version": "2.4.17",
"server-version": "13",
"current-tli": 1,
"parent-tli": 0,
"start-lsn": "0/5000028",
"stop-lsn": "0/60000B8",
"start-time": "2021-10-15 03:02:36+03",
"end-time": "2021-10-15 03:02:38+03",
"recovery-xid": 487,
"recovery-time": "2021-10-15 03:02:37+03",
"data-bytes": 24527729,
"wal-bytes": 16777216,
"uncompressed-bytes": 24507377,
"pgdata-bytes": 24507138,
"primary_conninfo": "user=mk channel_binding=prefer port=11854 sslmode=prefer sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any",
"status": "OK",
"content-crc": 3445419410,
"tablespaces": [
{
"link-name": "16385",
"link-path": "/home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/node/tbs2"
}
{
"link-name": "16384",
"link-path": "/home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/node/tbs1"
}
]
}
}
]
}
]
Названия обсуждаемы. Хотел бы понять как форматировать вывод в plain формате. И от @gsmol хотел бы услышать идеи по тестам этого добра, потому что у меня с идеями что-то негусто.
Названия обсуждаемы. Я бы сделал так:
"tablespace_map": [
{
"oid": "16385",
"path": "/home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/node/tbs2"
}
И от @gsmol хотел бы услышать идеи по тестам этого добра, потому что у меня с идеями что-то негусто.
А в чем проблема с тестами? Накатать пару тестов, проверить, что возвращаем не бред. Для plain формата как-то так:
tablespace_map = '16385 /home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/node/tbs2; 16384 /home/mk/git/pg_probackup-issue_431/tests/tmp_dirs/show/run_issue_431/node/tbs1'
Выглядит хорошо. Ждём.