{"id":3046,"date":"2022-01-03T07:00:00","date_gmt":"2022-01-03T06:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3046"},"modified":"2021-12-22T12:57:38","modified_gmt":"2021-12-22T11:57:38","slug":"migration-auf-ein-neueres-postgresql-image-im-containerland","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/migration-auf-ein-neueres-postgresql-image-im-containerland\/","title":{"rendered":"Migration auf ein neueres PostgreSQL-Image im Containerland"},"content":{"rendered":"\n<p>Als kleines Wochenendprojekt betreibe ich <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container<\/a>. Als ich den Pod initial deployt habe, verwendete ich f\u00fcr die Datenbank <a href=\"https:\/\/catalog.redhat.com\/software\/containers\/rhel8\/postgresql-96\/5ba0ad1f5a134643ef2eeb9d\">rhel8\/postgresql-96<\/a> in der Annahme, dass hierf\u00fcr der gleiche Support-Zeitraum wie f\u00fcr RHEL 8 gilt. Eher durch Zufall habe ich noch im letzten Jahr bemerkt, dass das von mir genutzte Image <em>deprecated<\/em> ist und somit keine Updates mehr erh\u00e4lt.<\/p>\n\n\n\n<p>An dieser Stelle dokumentiere ich kurz die Migration zu <a href=\"https:\/\/catalog.redhat.com\/software\/containers\/rhel8\/postgresql-13\/5ffdbdef73a65398111b8362\">rhel8\/postgresql-13<\/a>. Offen bleibt f\u00fcr mich die Frage, wie ich h\u00e4tte fr\u00fcher von der <em>Deprication<\/em> erfahren k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migration und Upgrade auf die neuere PostgreSQL-Version<\/h2>\n\n\n\n<p>Ich habe mich an den englischsprachigen Artikel &#8222;<a href=\"https:\/\/betterprogramming.pub\/how-to-upgrade-your-postgresql-version-using-docker-d1e81dbbbdf9?gi=4b353ef60957\">How to Upgrade Your PostgreSQL Version Using Docker&#8220;<\/a> von <a href=\"https:\/\/medium.com\/@josepostiga?source=user_profile----------------------------------------\">Jos\u00e9 Postiga<\/a> gehalten, welcher folgende Vorgehensweise vorsieht:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Aktuelle Datenbank sichern<\/li><li>Pod stoppen und entfernen<\/li><li>Verzeichnis und Dateien der alten PostgreSQL-Version aus dem Podman-Volume l\u00f6schen<\/li><li>SQL-Dump-Datei ins Podman-Volume verschieben<\/li><li>Pod mit rhel8\/postgresql-13-Container starten<\/li><li>Datenbank wiederherstellen<\/li><\/ol>\n\n\n\n<p>Dazu habe ich auf meinem System folgende Befehle ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Backup DB\npodman exec -t &lt;NAME des Containers&gt; \/usr\/bin\/pg_dump &lt;DB-NAME&gt; &gt;dump.sql\n\n# Podman-Volume der DB leeren\npodman volume inspect &lt;Volume-NAME&gt;\nsudo rm -rf \/home\/tronde\/.local\/share\/containers\/storage\/volumes\/&lt;Volume-NAME\/_data\/*\n\n# Dump ins Podman-Volume verschieben\nmv dump.sql \/home\/tronde\/.local\/share\/containers\/storage\/volumes\/&lt;Volume-Name&gt;\/_data\/\n\n# Datenbank im Container wiederherstellen\npodman exec -it &lt;Container-ID&gt; bash\nbash-4.4$ psql -U &lt;USER-Name&gt; -d &lt;DB-Name&gt; &lt; \/var\/lib\/pgsql\/data\/dump.sql<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Wenn man einmal wei\u00df, wie es geht, ist die Migration auf ein neues DB-Release nicht schwer. Die hier dokumentierte Vorgehensweise l\u00e4sst sich in meinen Augen auch auf andere DBMS \u00fcbertragen, die in Containern laufen.<\/p>\n\n\n\n<p>Mich st\u00f6rt nur, dass ich quasi nur zuf\u00e4llig davon erfahren habe, dass das von mir eingesetzte Container-Image im Status <em>deprecated<\/em> gelandet ist. Wie informiert ihr euch \u00fcber Status\u00e4nderungen bei den von euch verwendeten Container-Images?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als kleines Wochenendprojekt betreibe ich Kanboard im Container. Als ich den Pod initial deployt habe, verwendete ich f\u00fcr die Datenbank rhel8\/postgresql-96 in der Annahme, dass hierf\u00fcr der gleiche Support-Zeitraum wie f\u00fcr RHEL 8 gilt. Eher durch Zufall habe ich noch im letzten Jahr bemerkt, dass das von mir genutzte Image deprecated ist und somit keine<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/migration-auf-ein-neueres-postgresql-image-im-containerland\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[57],"tags":[517,673,606],"class_list":["post-3046","post","type-post","status-publish","format-standard","hentry","category-wochenend-projekte","tag-container","tag-db-upgrade","tag-podman"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3046"}],"version-history":[{"count":2,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3046\/revisions"}],"predecessor-version":[{"id":3048,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3046\/revisions\/3048"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}