Postgres: pg_checksum v kontejneru

Postgres: pg_checksum v kontejneru
« kdy: 16. 02. 2023, 10:34:27 »
Ahoj!

Rad bych poprosil zkusenejsi kolegy o radu. Potreboval bych aktivovat pg_checksum na instancich, ktere bezi v dockeru a ktere maji datovy fs pripojeny zvenku.
Narazim na problem, ze binarka, ktera toto aktivuje, musi bezet (celkem pochopitelne) nad zastavenou instanci.
Jenze kdyz nebezi instance, nebezi kontejner.
Jako reseni me napada nainstalovat binarky primo na server a aktivovat to primo nad fs pro jednotlive instance.
Nejsem si ale jisty, zda ta aktivace neni nejak spojena primo s binarkami, ze kterych se to spousti a zda pak po spusteni kontejneru nemuzu narazit na nejake neplechy?
Podle dokumentace by se neco melo propisovat jen do pg_control, ktery je soucasti daneho fs, takze fungovat by to snad mohlo. Ale prece jen bych se rad zeptal, zda jste nekdo uz neco podobneho neresil?
Diky moc za pripadne zkusenosti!


Re:Postgres: pg_checksum v kontejneru
« Odpověď #1 kdy: 16. 02. 2023, 12:06:11 »
zastav docker, spušť si nový s přetíženým entrypoint, tam buď přímo nebo v shellu spušť ten pg_checksum, bude to trvat nějakou dobu v závislosti na velikosti databáze. Je nutné mít shodné prostředí (uživatel, data dir, konfigurace) jako má běžně spuštění. Vypočítá se checksum pro všechny soubory a nastaví se příznak, že se má checksum počítat. Pak můžeš zase spustit běžný docker s pg.


Re:Postgres: pg_checksum v kontejneru
« Odpověď #2 kdy: 16. 02. 2023, 13:42:36 »
Řešíte to na čistém Dockeru nebo a něčem lepším? Třeba Podman převzal z Kubernetes koncept podů, ve kterých může běžet víc kontejnerů. Podman tam pak vkládá svůj vlastní proces, který drží pod při životě, a v rámci podu pak můžete spouštět a zastavovat různé kontejnery. Tj. můžete zastavit databázový kontejner, spustit kontejner s pg_checksum a pak zase spustit databázový kontejner.

Případně se to samozřejmě dá udělat i ručně, jenom si pak musíte dát pozor na to, abyste správně namapoval volume do příslušného kontejneru a spouštěl to se správnou konfigurací uživatelů.