메뉴
HN
Hacker News 34일 전

PostgreSQL 백업 도구 pgBackRest 유지보수 종료

IMP
8/10
핵심 요약

13년간 사랑받아온 PostgreSQL의 핵심 오픈소스 백업 및 복구 솔루션인 pgBackRest의 메인테이너가 프로젝트 유지보수를 공식적으로 중단한다고 발표했습니다. 후원사인 Crunchy Data의 인수 이후 재정적 후원과 지속 가능한 일자리를 확보하지 못해 내린 어쩔 수 없는 결정입니다. 이에 따라 글로벌 PostgreSQL 커뮤니티와 실무자들은 향후 파생(Fork) 프로젝트의 등장이나 대체 솔루션 마련을 고려해야 하는 중요한 변화를 맞이하게 되었습니다.

번역된 본문

pgBackRest: 신뢰할 수 있는 PostgreSQL 백업 및 복구

[지원 중단 공지]

TL;DR: pgBackRest는 더 이상 유지보수되지 않습니다. pgBackRest를 포크(분기)한다면 프로젝트에 새로운 이름을 사용해 주시기 바랍니다.

오랜 고민 끝에, 저는 pgBackRest에 대한 작업을 중단하기로 결정했습니다. 이 결정을 가볍게 내린 것은 아닙니다. pgBackRest는 지난 13년간 저의 열정이 담긴 프로젝트였고, 그 기간 중 상당 부분 기업의 후원을 받을 수 있어 운이 좋았습니다. 또한 수많은 기여자들의 도움과 함께, 밤낮없이 주말을 반납하며 오늘날의 pgBackRest를 만들어 왔습니다. 모든 오픈소스 개발자는 제가 무슨 말을 하는지, 특별한 프로젝트에 인생의 얼마나 많은 시간을 바쳐야 하는지 잘 알 것입니다.

Crunchy Data가 매각된 이후, 저는 pgBackRest를 계속 유지보수하면서 이 작업을 이어갈 수 있는 직장을 찾았지만 지금까지 성공하지 못했습니다. 마찬가지로 프로젝트를 지속 가능하게 만들기 위한 후원금 확보 노력도 필요한 수준에 한참 미치지 못했습니다. 다른 모든 사람들과 마찬가지로 저 역시 생계를 유지해야 하며, pgBackRest와 관련된 직무는 매우 제한적입니다. 이제 저는 더 다양한 기회를 고려할 수 있지만, 그러한 일들은 저에게 pgBackRest 작업에 할애할 시간을 주지 않을 것입니다. 이 프로젝트는 유지보수, 버그 수정, PR(Pull Request) 리뷰, 이슈 답변 등을 위해 꽤 많은 시간을 요구합니다. 그것은 제가 정말 좋아하는 새로운 기능을 작성할 시간은 고사하고 말입니다.

어설프게 또는 간헐적으로 작업하는 것보다는, 확실하게 중단하는 것이 더 합리적이라고 생각합니다. 아마도 언젠가 pgBackRest는 포크될 것이지만, 그것은 새로운 메인테이너들에 의한 새로운 프로젝트가 될 것이며, 그들 역시 우리가 그랬던 것처럼 커뮤니티의 신뢰를 쌓아야 할 것입니다.

다시 한번 지난 세월 동안 pgBackRest에 기여해 주신 모든 분들께 깊이 감사드립니다. 여러분과 함께 일할 수 있어 정말 즐거웠습니다!

[소개]

pgBackRest는 가장 큰 규모의 데이터베이스와 워크로드까지 원활하게 확장되는 신뢰할 수 있는 PostgreSQL 백업 및 복구 솔루션입니다. 현재 안정 버전은 pgBackRest v2.58.0입니다. 릴리스 노트는 Releases 페이지에서 확인할 수 있습니다.

[주요 기능]

병렬 백업 및 복원 압축은 일반적으로 백업 작업 중 병목 현상을 일으키므로, pgBackRest는 병렬 처리와 lz4, zstd와 같은 보다 효율적인 압축 알고리즘을 통해 이 문제를 해결합니다.

로컬 및 원격 작업 사용자 정의 프로토콜을 통해 최소한의 설정으로 TLS/SSH를 통해 로컬 또는 원격으로 백업, 복원 및 아카이브를 수행할 수 있습니다. 또한 프로토콜 계층을 통해 PostgreSQL을 쿼리하는 인터페이스가 제공되므로 PostgreSQL에 대한 원격 액세스가 필요하지 않아 보안이 강화됩니다.

다중 저장소(Repository) 지원 여러 저장소를 지원하여, 예를 들어 빠른 복원을 위해 보존 기간이 짧은 로컬 저장소와 중복성 및 기업 전체의 액세스를 위해 보존 기간이 긴 원격 저장소를 함께 사용할 수 있습니다.

전체, 차등 및 증분 백업 (파일 또는 블록 수준) 전체(Full), 차등(Differential) 및 증분(Incremental) 백업을 지원합니다. pgBackRest는 rsync의 시간 해상도 문제에 영향을 받지 않으므로, 각 파일의 체크섬을 요구하지 않고도 차등 및 증분 백업을 안전하게 수행할 수 있습니다. 블록 수준의 백업은 변경된 파일의 일부만 복사하여 공간을 절약합니다.

백업 로테이션 및 아카이브 만료 전체 및 차등 백업에 대한 보존 정책을 설정하여 모든 기간을 아우르는 백업 커버리지를 만들 수 있습니다. WAL 아카이브는 모든 백업에 대해 유지 관리되거나 엄격하게 가장 최근 백업에만 유지 관리될 수 있습니다. 후자의 경우 이전 백업을 일관되게 만드는 데 필요한 WAL만 아카이브에 유지됩니다.

백업 무결성 백업 내의 모든 파일에 대해 체크섬이 계산되며, 복원 또는 검증(verify) 중에 다시 확인됩니다. 백업이 파일 복사를 마치면 백업의 일관성을 유지하는 데 필요한 모든 WAL 세그먼트가 저장소에 도달할 때까지 기다립니다. 저장소의 백업은 표준 PostgreSQL 클러스터(테이블스페이스 포함)와 동일한 형식으로 저장될 수 있습니다. 압축을 비활성화하고 하드 링크를 활성화하면 저장소에서 백업을 스냅샷으로 찍고 스냅샷에서 직접 PostgreSQL 클러스터를 띄울 수 있습니다. 이는 테라바이트급 데이터베이스에 매우 유리합니다.

원문 보기
원문 보기 (영어)
pgBackRest Reliable PostgreSQL Backup & Restore NOTICE OF OBSOLESCENCE TL;DR: pgBackRest is no longer being maintained. If you fork pgBackRest, please select a new name for your project. After a lot of thought, I have decided to stop working on pgBackRest. I did not come to this decision lightly. pgBackRest has been my passion project for the last thirteen years, and I was fortunate to have corporate sponsorship for much of this time, but there were also many late nights and weekends as I worked to make pgBackRest the project it is today, aided by numerous contributors. Every open-source developer knows exactly what I mean and how much of your life gets devoted to a special project. Since Crunchy Data was sold, I have been maintaining pgBackRest and looking for a position that would allow me to continue the work, but so far I have not been successful. Likewise, my efforts to secure sponsorship have also fallen far short of what I need to make the project viable. Like everyone else, I need to make a living, and the range of pgBackRest-related roles is very limited. I can now consider a wider variety of opportunities, but those will not leave me time to work on pgBackRest, which requires a fair amount of time for maintenance, bug fixes, PR reviews, answering issues, etc. That does not even include time to write new features, which is what I really love to do. Rather than do the work poorly and/or sporadically, I think it makes more sense to have a hard stop. I imagine at some point pgBackRest will be forked, but that will be a new project with new maintainers, and they will need to build trust the same way we did. Again, many thanks to all the pgBackRest contributors over the years. It was a pleasure working with you! Introduction pgBackRest is a reliable backup and restore solution for PostgreSQL that seamlessly scales up to the largest databases and workloads. pgBackRest v2.58.0 is the current stable release. Release notes are on the Releases page. Features Parallel Backup & Restore Compression is usually the bottleneck during backup operations so pgBackRest solves this problem with parallel processing and more efficient compression algorithms such as lz4 and zstd. Local or Remote Operation A custom protocol allows pgBackRest to backup, restore, and archive locally or remotely via TLS/SSH with minimal configuration. An interface to query PostgreSQL is also provided via the protocol layer so that remote access to PostgreSQL is never required, which enhances security. Multiple Repositories Multiple repositories allow, for example, a local repository with minimal retention for fast restores and a remote repository with a longer retention for redundancy and access across the enterprise. Full, Differential, & Incremental Backups (at File or Block Level) Full, differential, and incremental backups are supported. pgBackRest is not susceptible to the time resolution issues of rsync, making differential and incremental backups safe without the requirement to checksum each file. Block-level backups save space by only copying the parts of files that have changed. Backup Rotation & Archive Expiration Retention polices can be set for full and differential backups to create coverage for any time frame. The WAL archive can be maintained for all backups or strictly for the most recent backups. In the latter case WAL required to make older backups consistent will be maintained in the archive. Backup Integrity Checksums are calculated for every file in the backup and rechecked during a restore or verify. After a backup finishes copying files, it waits until every WAL segment required to make the backup consistent reaches the repository. Backups in the repository may be stored in the same format as a standard PostgreSQL cluster (including tablespaces). If compression is disabled and hard links are enabled it is possible to snapshot a backup in the repository and bring up a PostgreSQL cluster directly on the snapshot. This is advantageous for terabyte-scale databases that are time consuming to restore in the traditional way. All operations utilize file and directory level fsync to ensure durability. Page Checksums If page checksums are enabled pgBackRest will validate the checksums for every file that is copied during a backup. All page checksums are validated during a full backup and checksums in files that have changed are validated during differential and incremental backups. Validation failures do not stop the backup process, but warnings with details of exactly which pages have failed validation are output to the console and file log. This feature allows page-level corruption to be detected early, before backups that contain valid copies of the data have expired. Backup Resume An interrupted backup can be resumed from the point where it was stopped. Files that were already copied are compared with the checksums in the manifest to ensure integrity. Since this operation can take place entirely on the repository host, it reduces load on the PostgreSQL host and saves time since checksum calculation is faster than compressing and retransmitting data. Streaming Compression & Checksums Compression and checksum calculations are performed in stream while files are being copied to the repository, whether the repository is located locally or remotely. If the repository is on a repository host, compression is performed on the PostgreSQL host and files are transmitted in a compressed format and simply stored on the repository host. When compression is disabled a lower level of compression is utilized to make efficient use of available bandwidth while keeping CPU cost to a minimum. Delta Restore The manifest contains checksums for every file in the backup so that during a restore it is possible to use these checksums to speed processing enormously. On a delta restore any files not present in the backup are first removed and then checksums are generated for the remaining files. Files that match the backup are left in place and the rest of the files are restored as usual. Parallel processing can lead to a dramatic reduction in restore times. Parallel, Asynchronous WAL Push & Get Dedicated commands are included for pushing WAL to the archive and getting WAL from the archive. Both commands support parallelism to accelerate processing and run asynchronously to provide the fastest possible response time to PostgreSQL. WAL push automatically detects WAL segments that are pushed multiple times and de-duplicates when the segment is identical, otherwise an error is raised. Asynchronous WAL push allows transfer to be offloaded to another process which compresses WAL segments in parallel for maximum throughput. This can be a critical feature for databases with extremely high write volume. Asynchronous WAL get maintains a local queue of WAL segments that are decompressed and ready for replay. This reduces the time needed to provide WAL to PostgreSQL which maximizes replay speed. Higher-latency connections and storage (such as S3) benefit the most. The push and get commands both ensure that the database and repository match by comparing PostgreSQL versions and system identifiers. This virtually eliminates the possibility of misconfiguring the WAL archive location. Tablespace & Link Support Tablespaces are fully supported and on restore tablespaces can be remapped to any location. It is also possible to remap all tablespaces to one location with a single command which is useful for development restores. File and directory links are supported for any file or directory in the PostgreSQL cluster. When restoring it is possible to restore all links to their original locations, remap some or all links, or restore some or all links as normal files or directories within the cluster directory. S3, Azure, and GCS Compatible Object Store Support pgBackRest repositories can be located in S3, Azure, and GCS compatible object stores to allow for virtually unlimited capacity and retention. Encryption pgBac