Оптимизация резервного копирования PostgreSQL
Аннотация
PostgreSQL является одной из самых распространённых баз данных в мире.
Для достижения наибольшей сохранности данных, а также для возможности быстрого горизонтального масштабирования кластера используется технология резервного копирования данных.
На сегодняшний день существует несколько распространённых инструментов резервного копирования PostgreSQL: pg\_basebackup, pg\_probackup, pgbarman, pgBackRest, WAL-E и WAL-G.
Размеры современных баз данных PostgreSQL достигают 10 Tb, поэтому многие из представленных выше инструментов вынуждены решать задачи оптимизации создания резервных копий и восстановления из них.
В процессе создания резервных копий участвует четыре ресурса, которые можно оптимизировать: процессорное время, объём потребляемой ОЗУ, объём чтения данных с диска и объём данных, пересылаемых по сети.
Для оптимизации объёма пересылаемых по сети данных многие инструменты используют технологию создания инкрементальных резервных копий.
В данной работе рассматривается способ оптимизации объёма чтения с диска посредством создания карт изменений базы на основе WAL.
Также, будет описана реализация предложенного способа в WAL-G.
По результатам работы проведены измерения, демонстрирующие эффективность описанного метода.
Описанный метод в настоящее время не только используется в WAL-G, но и предложен к реализации в основном исходном коде PostgreSQL.
Для достижения наибольшей сохранности данных, а также для возможности быстрого горизонтального масштабирования кластера используется технология резервного копирования данных.
На сегодняшний день существует несколько распространённых инструментов резервного копирования PostgreSQL: pg\_basebackup, pg\_probackup, pgbarman, pgBackRest, WAL-E и WAL-G.
Размеры современных баз данных PostgreSQL достигают 10 Tb, поэтому многие из представленных выше инструментов вынуждены решать задачи оптимизации создания резервных копий и восстановления из них.
В процессе создания резервных копий участвует четыре ресурса, которые можно оптимизировать: процессорное время, объём потребляемой ОЗУ, объём чтения данных с диска и объём данных, пересылаемых по сети.
Для оптимизации объёма пересылаемых по сети данных многие инструменты используют технологию создания инкрементальных резервных копий.
В данной работе рассматривается способ оптимизации объёма чтения с диска посредством создания карт изменений базы на основе WAL.
Также, будет описана реализация предложенного способа в WAL-G.
По результатам работы проведены измерения, демонстрирующие эффективность описанного метода.
Описанный метод в настоящее время не только используется в WAL-G, но и предложен к реализации в основном исходном коде PostgreSQL.