Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

получение списка табличных пространств резервной копии #431

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
sgrinko opened this issue Sep 14, 2021 · 5 comments
Assignees

Comments

@sgrinko
Copy link

sgrinko commented Sep 14, 2021

Добрый день,
Появилась необходимость использования табличных пространств в кластере.
Утилита поддерживает архивацию и восстановление табличных пространств.
Однако, их нужно знать в лицо :)
На сейчас нет возможности, используя ключи утилиты, выяснить какие табличные пространства используются в кластере.
Максимально подробный режим информации о бэкапной копии

pg_probackup-13 show --format=json --instance=13 -i QZF6NW

ничего об этом не выводит. Вижу, что список табличных пространств утилита хранит в файле QZF6NW/database/tablespace_map, но анализировать его вручную считаю неверным подходом.
Прошу добавить в выводе указанной команды, или неким другим способом, отобразить список необходимых табличных пространств.

Зачем мне это?
Есть несколько продуктовых серверов, на некоторых есть отдельные табличные пространства.
Есть сервер тестирования бэкапов, на котором в в автоматическом режиме тестируются все бэкапы.
Мне нужно знать какие табличные пространства есть в бэкапе, чтобы сформировать динамически внутри скрипта команды:

-T каталог_табл_пространства1=новый_каталог_табл_пространства1 -T каталог_табл_пространства2=новый_каталог_табл_пространства2

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

@gsmolk
Copy link
Contributor

gsmolk commented Sep 14, 2021

Добрый день!
Звучит логично, надо сделать.

@gsmolk gsmolk self-assigned this Sep 14, 2021
@sgrinko
Copy link
Author

sgrinko commented Sep 15, 2021

Спасибо, будем ждать

@kulaginm
Copy link
Member

Звучит как что-то полезное (:

Пока получилась такая поделка (см. коммит выше).
Пример выхлопа команды:

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 хотел бы услышать идеи по тестам этого добра, потому что у меня с идеями что-то негусто.

@gsmolk
Copy link
Contributor

gsmolk commented Oct 21, 2021

Названия обсуждаемы.
Я бы сделал так:

"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'

@sgrinko
Copy link
Author

sgrinko commented Apr 25, 2022

Выглядит хорошо. Ждём.

funny-falcon pushed a commit that referenced this issue Feb 26, 2024
- Solve Issue #431
- Output all tablespaces in backup in JSON output
- Output all tablespaces in backup in PLAIN output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants