Комментарии 9
Спасибо за пост. Посмотрите https://github.com/postgres-ai/database-lab-engine - Thin PostgreSQL clones. DLE provides blazing-fast database cloning to build powerful development, test, QA, staging environments. Follow to stay updated.
Верно понимаю идею, что делается снепшот лишь одного tablespace одной БД чтобы развернуть в соседней БД в другом tablespace? Так нельзя делать, снепшот должен включать все tablespace, xact и wal. В противном случае данные превратятся в мусор при первой возможности.
Хорошее замечание. БД и снепшоты использовались в относительно несложном приложении. Т.е. только работа с таблицами внутри одной базы.
Ещё нужно заметить, что раздел с системными сущностями postgres остался нетронутым, он даже может не располагаться в btrfs. Поэтому кажется, что все снепшоты с базами и tablespace остаются независимыми.
Можете привести пример, какие действия могут привести к превращению данных в мусор?
Инструкция linux only, про поддержку CoW файловых систем на Windows не в курсе.
Немного весьма сырых сведений про Windows и мгновенные копии томов: на всякий случай, вдруг кому пригодится.
В Windows снимки томов (в том числе и путем копирования при записи AKA CoW) поддерживаются Volume Shadow Copy Service (VSS) на уровне дискового тома, т.е. — ниже уровня файловой системы. Фактическая поддержка осуществляется компонентом под названием VSS Provider. Этот компонент может быть как аппаратным (использющим возможности хранилища SAN, на котором размещен том; как именно реализована поддержка — зависит от хранилища), так и программным, реализованным внутри Windows. Программный — «Microsoft Software Shadow Copy provider» — реализует именно копирование при записи и взаимодействует с файловой системой (на том же или другом томе) для хранения в ней старых копий перезаписываемых блоков.
Созданный снимок может быть смонтирован в системе как обычный дисковый том, с которым можно работать обычными средсвами ОС.
Для взаимодействия с VSS используются, естественно, другие команды, нежели с файловыми системами Unix — vssadmin и diskshadow.
Написать скрипты для использования этих команд для целей, указанных в этой статье, наверное, можно, но лично я этим не занимался и не планирую. Может, кто-нибудь ещё?
PS А ещё для взаимодействия приложений с VSS в Windows есть концепция VSS Writer: зарегистрированных в системе модулей, к которым VSS обращается в момент создания снимка и которые приводят файлы данных «своего» приложения в состояние, в котором они записываются на ленту при резервном копировании средствами приложения — то есть, для полученных таким образом снимков файлов можно использовать опции инкрементного и разностного копирования. При этом Writer сообщает VSS список файлов относящихся к данным приложения — чтобы при создании резервной копии можно было копировать только их. Но AFAIK, для Postgres Writer никто так и не написал, так что для получения копий его файлов данных в Windows остается только брать файлы с теневой копии на момент создания снимка (crash-consistent), как и в этой статье
А кто глубоко разбирался в вопросе? Как минимум, раньше рекомендовано было отключать CoW для СУБД, потому что они сами заботятся о том как хранить данные и включенный CoW просто приводит к большой фрагментации файла с данными. Фактически, использование CoW на разделе с данными снижает производительность СУБД. Если сейчас что-то изменилось, расскажите.
а в ZFS это выглядит как
zfs snapshot <файловая-система>@<snapshot-id>
и откат или параллельное существование
zfs rollback ...
zfs clone ...
и всё.
а btrfs - это не для продов, поиграться можно, в прод не надо. И commit выставлять секунд 5
btrfs изначально была гиблая ветка у оракеля. Пока ZfsOnLinux была 0.8.х, то btrfs еще туда-сюда как-то могла существовать. Как только zfs-ники учли все гадости и подлости линуха, то наконец вышла zfs 2 (сейчас 2.1.4). И тут btrfs настал полный конец. А ничего ж в ней (btrfs) нет инновационного по сравнению с zfs, так... оракель перед покупкой SUNа хотел свою CoW замутить, а потом просто SUN купил. "Ничего личного, только бизнес" (с) Дон Корлеоне )))
они (оракель) ее (btrfs) похоже тихо совсем забросили. Мало того, что RedHat ее (btrfs) послал к чертовой матери, так и Oracle Enterprise Linux (OEL) в установщике ее не представляет ))) сам оракель свое "изделие №2". Только можно ее зацепить при установке с UEK.
кароч. как уже говорил - поиграться - дазарадибога, в прод - нет !
Мгновенные снепшоты postgres на tablespace и btrfs