pg_probackup тест производительности

Инструмент g_proabckup - это инструмент управления резервным копированием и восстановлением базы данных postgresql.

вводная статья о pg_probackup

Цели тестирования:

Разница в производительности резервного копирования между дельта-режимом и страничным режимом инструмента pg_probackup в этом тесте

Подготовка к экзамену:

Подготовьте 1 миллиард фрагментов данных (размер данных 146 ГБ):

pgbench -i -s 10000 -U backup -h 127.0.0.1 pgbenchpgbench=# \dt             List of relations Schema |       Name       | Type  | Owner  --------+------------------+-------+-------- public | pgbench_accounts | table | backup public | pgbench_branches | table | backup public | pgbench_history  | table | backup public | pgbench_tellers  | table | backup(4 rows)
pgbench=# select count(*) from pgbench_accounts;   count    ------------ 1000000000(1 row)

Использование диска:

[postgres @ ecos75r018-meijia-31-150 ~] $ df -h Размер используемой файловой системы Доступность Использование% Подключено ondevtmpfs 7,5 ГБ 0 7,5 ГБ 0% / devtmpfs 7,5 ГБ 12K 7,5 ГБ 1% / dev / shmtmpfs 7,5 ГБ 9,2 МБ 7,5 ГБ 1 % / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1% / boot / efi / dev / sdb1 296G 147G 134G 53% / postgresql / data / dev / sdc1 296G 65M 281G 1% / postgresql / backuptmpfs 1,5G 0 1,5G 0% / run / user / 0 / dev / sdd1 296G 122G 160G 44% / postgresql / архив


Полная резервная копия (ДЕЛЬТА)

pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full

[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b full --temp-slotINFO: начало резервного копирования, pg_probackup версия: 2.4.8, экземпляр: pgbak, идентификатор резервной копии: QLOIL1, режим резервного копирования: FULL, режим wal: STREAM, удаленный: false, алгоритм сжатия: нет, уровень сжатия: 1 ПРЕДУПРЕЖДЕНИЕ: этот экземпляр PostgreSQL был инициализирован без контрольных сумм блока данных . Без них pg_probackup не имеет возможности обнаружить повреждение блока данных. Повторно инициализируйте PGDATA с опцией '--data-checkums'. INFO: Размер PGDATA: 146GBINFO: Начать передачу файлов данныхINFO: Файлы данных переданы, время истекло: 33 мин: 19 с 2020-12-21 16: 12: 20.388 CST [24069] ЖУРНАЛ: точка восстановления «pg_probackup, backup_id QLOIL1» создана в 23 / C00001782020-12-21 16: 12: 20.388 CST [24069] ЗАЯВЛЕНИЕ: ВЫБЕРИТЕ pg_catalog.

Время: 21.12.2020 15:39 ~ 18.12.2020 16:31


ps: возникают следующие ошибки, и необходимо настроить переменные среды библиотеки pg lib:

экспорт LD_LIBRARY_PATH = / usr / local / postgresql-12.4 / lib

ОШИБКА: не удалось подключиться к базе данных postgres: не удалось подключиться к серверу: нет такого файла или каталога. Сервер работает локально и принимает соединения на сокете домена Unix "/var/run/postgresql/.s.PGSQL.5432"?


Дополнительная подготовка данных:

Вставьте 100 миллионов инкрементальных данных (около 15 ГБ данных)

pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc

Использование диска:

[postgres @ ecos75r018-meijia-31-150 postgresql] $ df -h Размер используемой файловой системы Доступность Использование% Установлено ondevtmpfs 7,5 ГБ 0 7,5 ГБ 0% / devtmpfs 7,5 ГБ 12 КБ 7,5 ГБ 1% / dev / shmtmpfs 7,5 ГБ 9,1 МБ 7,5 ГБ 1 % / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1% / boot / efitmpfs 1,5 ГБ 0 1,5 ГБ 0% / run / user / 0 / dev / sdb1 296 ГБ 162 ГБ 119 ГБ 58% / postgresql / data / dev / sdc1 296 ГБ 147 ГБ 134 ГБ 53% / postgresql / backup / dev / sdd1 296 ГБ 13G 268G 5% / postgresql / архив


Инкрементное резервное копирование (ДЕЛЬТА)

pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b delta --temp-slot

[postgres @ ecos75r018-meijia-31-150 postgresql] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup --stream -b delta --temp-slotINFO: начало резервного копирования, pg_probackup версия: 2.4.8, экземпляр: pgbak, идентификатор резервной копии: QLOMCV, режим резервного копирования: DELTA, режим wal: STREAM, удаленный: false, алгоритм сжатия: нет, уровень сжатия: 1 ПРЕДУПРЕЖДЕНИЕ: этот экземпляр PostgreSQL был инициализирован без контрольных сумм блока данных . Без них pg_probackup не имеет возможности обнаружить повреждение блока данных. Повторно инициализируйте PGDATA с опцией --data-checkums. INFO: Родительская резервная копия: QLOIL1INFO: Размер PGDATA: 161GBINFO: Начать передачу файлов данныхINFO: Файлы данных переданы, истекшее время: 31 мин: 29 с 2020-12-21 17: 32: 00,310 CST [30184] ЖУРНАЛ: точка восстановления «pg_probackup, backup_id QLOMCV» создана по адресу 26 / C10001782020-12-21 17: 32: 00.310 CST [30184] ЗАЯВЛЕНИЕ:

Время: 21.12.2020 17:00 ~ 21.12.2020 17:35


Полная резервная копия (СТРАНИЦА)

Измените postgresql.conf

vi postgresql.confarchive_command = 'pg_probackup-12 archive-push -B / postgresql / backup --instance pgbak --wal-file-name =% f'

Удалите инкрементную библиотеку pgbench_inc

postgres = # удалить базу данных pgbench_inc;

pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b full

[postgres @ ecos75r018-meijia-31-150 ~] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -j 4 -U probackup -b fullINFO: Запуск резервного копирования, версия pg_probackup: 2.4.8, экземпляр: pgbak, идентификатор резервной копии: QLILZE, режим резервного копирования: FULL, режим wal: ARCHIVE, удаленный: false, алгоритм сжатия: нет, уровень сжатия: 1 ПРЕДУПРЕЖДЕНИЕ: этот экземпляр PostgreSQL был инициализирован без контрольных сумм блока данных. Без них pg_probackup не имеет возможности обнаружить повреждение блока данных. Повторно инициализируйте PGDATA с опцией --data-checkums. INFO: дождитесь архивирования сегмента WAL / postgresql / backup / wal / pgbak / 0000000100000020000000AEINFO: размер PGDATA: 146GBINFO: начать передачу файлов данныхINFO: файлы данных переданы, истекшее время: 38 мин: 52 сINFO: дождитесь pg_stop_backup () INFO: pg_stop backup () успешно выполнен vINFO: синхронизация файлов резервных копий на diskINFO:

Время: 22.12.2020 08:57 ~ 22.12.2020 09:54


Дополнительная подготовка данных:

Вставьте 100 миллионов инкрементальных данных (около 15 ГБ данных)

pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc

Использование диска:

[postgres @ ecos75r018-meijia-31-150 ~] $ df -h Размер используемой файловой системы Доступность Использование% Установлено ondevtmpfs 7,5 ГБ 0 7,5 ГБ 0% / devtmpfs 7,5 ГБ 12K 7,5 ГБ 1% / dev / shmtmpfs 7,5 ГБ 18 МБ 7,5 ГБ 1% / runtmpfs 7.5G 0 7.5G 0% / sys / fs / cgroup / dev / mapper / vg00-lv_root 20G 9.9G 8.8G 53% // dev / sda1 501M 335M 130M 73% / boot / dev / sda2 524M 12K 524M 1 % / boot / efi / dev / sdb1 296G 162G 119G 58% / postgresql / data / dev / sdc1 296G 159G 122G 57% / postgresql / backuptmpfs 1,5G 0 1,5G 0% / run / user / 0 / dev / sdd1 296G 122G 159G 44% / postgresql / архив


Инкрементное резервное копирование (СТРАНИЦА)

pg_probackup-12 резервное копирование -B / postgresql / backup / --instance pgbak -b PAGE -U probackup

[postgres @ ecos75r018-meijia-31-150 ~] $ pg_probackup-12 backup -B / postgresql / backup / --instance pgbak -b page -j 4 -U probackupINFO: Запуск резервного копирования, версия pg_probackup: 2.4.8, экземпляр: pgbak, идентификатор резервной копии: QLPZ42, режим резервного копирования: PAGE, режим wal: ARCHIVE, удаленный: false, алгоритм сжатия: нет, уровень сжатия: 1 ПРЕДУПРЕЖДЕНИЕ: этот экземпляр PostgreSQL был инициализирован без контрольных сумм блока данных. Без них pg_probackup не может обнаружить повреждение блока данных. Повторно инициализируйте PGDATA с параметром --data-checkums. INFO: дождитесь, пока сегмент WAL / postgresql / backup / wal / pgbak / 0000000100000029000000C8 будет заархивирован извлечено, истекшее время: 142 секундыINFO: Начать передачу файлов данныхINFO: Файлы данных переданы, истекшее время: 5 мин: 16 сINFO:

Время: 22.12.2020 10:33 ~ 22.12.2020 10:44


Результаты теста:

На этот раз предоставляется только процесс тестирования и один из результатов тестирования:

Режим
ДЕЛЬТА
СТРАНИЦА
Полная резервная копия

Объем данных: 146 г / 10 миллиардов

Общее время: 52 мин.

Передача данных: 34 мин.

Проверка данных: 18 мин.

Объем данных: 146 г / 10 миллиардов

Общее время: 57мин.

Передача данных: 39мин.

Проверка данных: 18 мин.

Инкрементное резервное копирование

Объем данных: 15 г / 100 миллионов

Общее время: 35 мин.

Передача данных: 31мин.

Проверка данных: 4 мин.

Объем данных: 15 г / 100 миллионов

Общее время: 11мин.

карта + передача данных: 8мин.

Проверка данных: 3 мин.

В ходе этого теста было обнаружено, что дельта-режим и полное резервное копирование в страничном режиме существенно отличаются. С точки зрения инкрементного резервного копирования, страничный режим в три раза эффективнее, чем резервное копирование в дельта-режиме (при этом уровне данных, чем больше объем данных, тем больше может быть разница)


рекомендация

отblog.51cto.com/15080020/2654733