Алгоритм проверки предусловий корректности запуска репликации в отказоустойчивом кластере PostgreSQL
https://doi.org/10.25205/1818-7900-2025-23-2-29-42
Аннотация
Традиционно отказоустойчивые кластеры СУБД на базе PostgreSQL строятся с использованием механизма потоковой репликации, передающего файлы журнала предзаписи между узлами. При запуске репликации выполняются проверки лишь на целостность файлов журнала. Поэтому при вводе в кластер узлов после отработки отказа и настройки репликации можно получить резервный узел с данными, отличными от основного, либо выходящий из строя при попытке запуска или перезапуска. Существующие системы высокой доступности вынуждены требовать длительного процесса пересоздания узла в данных сценариях. В работе предложен алгоритм, блокирующий запуск репликации в сценариях, когда это заведомо приведет к потере идентичности данных или сбоям при восстановлении узла. Для этого перед запуском выполняется проверка предусловия корректности, основанных на сборе и сравнении информации о состоянии журналов предзаписи узлов кластера. После блокировки возможна автоматическая синхронизация узлов для последующего корректного запуска репликации. Предложен способ встраивания алгоритма в СУБД, проведено тестирование на различных конфигурациях с эмуляцией сбоев. При минимальных накладных расходах алгоритм предотвращает последствия некорректного запуска репликации в большинстве случаев.
Ключевые слова
Об авторах
А. С. РудометовРоссия
Рудометов Андрей Сергеевич, студент магистратуры; ассистент
Новосибирск
М. В. Рутман
Россия
Рутман Михаил Валерьевич, доцент
Новосибирск
Список литературы
1. Thomas S. M. PG Phriday: Redefining Postgres High Availability // BonesMoses.org: сайт. 2024. URL: https://bonesmoses.org/2024/pg-phriday-redefining-postgres-high-availability/
2. Kassema J. J. Disaster Recovery Plan for Business Continuity: Case Study in a Business Sector. In: SSRN. 2016. DOI: 10.2139/ssrn.2796601
3. Stonebraker M., Rowe L. A. The design of POSTGRES. In: Proceedings of the 1986 ACM SIGMOD international conference on Management of data (SIGMOD‘86) (June 1986). Association for Computing Machinery, New York, NY, USA, 1986. P. 340–355. DOI 10.1145/16856.16888
4. Cecchet E., Candea G., Ailamaki A. Middleware-based database replication: the gaps between theory and practice // Proceedings of the 2008 ACM SIGMOD international conference on Management of data (SIGMOD ‘08). Association for Computing Machinery, New York, NY, USA, 2008. P. 739–752. DOI 10.1145/1376616.1376691
5. Stonebraker M., Rowe L., Hirohama M. The Implementation Of Postgres // Knowledge and Data Engineering, IEEE Transactions on. 2. 1990. P. 125–142. DOI 10.1109/69.50912
6. Wieck J. Slony-I. A replication system for PostgreSQL // Slony-I. URL: https://slony.info/images/Slony-I-concept.pdf
7. PostgreSQL: Documentation 9.0: Release 9.0 // PostgreSQL: Documentation. URL: https://www.postgresql.org/docs/9.0/release-9-0.html
8. Linnakangas H. Understanding PostgreSQL timelines // FOSDEM 2013. URL: https://wiki.postgresql.org/images/e/e5/FOSDEM2013-Timelines.pdf
9. Davidson S. B., Garcia-Molina H.; Skeen D. Consistency In A Partitioned Network: A Survey // ACM Computing Surveys. 1985. Vol. 17, iss. 3. P. 341–370. DOI 10.1145/5505.5508
10. Панченко И. PostgreSQL: вчера, сегодня, завтра // Открытые системы. СУБД. 2015. № 3. С. 34–37. URL: https://www.osp.ru/os/2015/03/13046900
11. PostgreSQL: Documentation 17.0: pg_rewind // PostgreSQL: Documentation. URL: https://www.postgresql.org/docs/17/app-pgrewind.html
12. Härder T., Sauer C., Graefe G. et al. Instant recovery with write-ahead logging // Datenbank Spektrum. 2015. Vol. 15. P. 235–239. DOI 10.1007/s13222-015-0204-3.
13. Bárbaro P., Pedroso M. High Availability and Load Balancing for Postgresql Databases: Designing and Implementing. In: International Journal of Database Management Systems. 2016, vol. 8, рp. 27–34. DOI 10.5121/ijdms.2016.8603
14. Md. Anower H., Md. Imrul H., Dr. MD Rashedul I., Nadeem A. A Novel Recovery Process in Timelagged Server using Point in Time Recovery (PITR). In: 24th International Conference on Computer and Information Technology (ICCIT). 2021. DOI: 10.1109/ICCIT54785.2021.9689808.
15. Kim H., Yeom H. Y, Son Y. An Efficient Database Backup and Recovery Scheme using Write-Ahead Logging // 2020 IEEE 13th International Conference on Cloud Computing (CLOUD). 2020. P. 405–413. DOI 10.1109/CLOUD49709.2020.00062
16. Introduction – patroni 3.3 documentation // Patroni documentation. https://patroni.readthedocs.io/en/rel_3_3/
17. Postgres Pro Enterprise: Документация: 16: F.8: biha – встроенный отказоустойчивый кластер // Документация PostgreSQL и Postgres Pro: компания Postgres Professional. URL: https://postgrespro.ru/docs/enterprise/16/biha
18. Meng-Lai Y. Assessing availability impact caused by switchover in database failover // 2009 Annual Reliability and Maintainability Symposium. Fort Worth, TX, USA. 2009. P. 401–406. DOI 10.1109/RAMS.2009.4914710.
19. Coan B. A., & Oki B. M., Kolodner E. K. Limitations on Database Availability when Networks Partition // PODC ‘86: Proceedings of the fifth annual ACM symposium on Principles of distributed computing. 1986. P. 187–194. DOI: 10.1145/10590.10606.
Рецензия
Для цитирования:
Рудометов А.С., Рутман М.В. Алгоритм проверки предусловий корректности запуска репликации в отказоустойчивом кластере PostgreSQL. Вестник НГУ. Серия: Информационные технологии. 2025;23(2):29-42. https://doi.org/10.25205/1818-7900-2025-23-2-29-42
For citation:
Rudometov A.S., Rutman M.V. Preconditions-Based Algorithm for Safe Start of Replication in Fault-Tolerant PostgreSQL Cluster. Vestnik NSU. Series: Information Technologies. 2025;23(2):29-42. (In Russ.) https://doi.org/10.25205/1818-7900-2025-23-2-29-42