<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aktualizace Archivy - initMAX s.r.o.</title>
	<atom:link href="https://www.initmax.cz/wiki/kapitola/postgresql/postgresql-aktualizace/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.initmax.cz/wiki/kapitola/postgresql/postgresql-aktualizace/</link>
	<description>Nabízíme monitoring všech prvků infrastruktury; správu identit, automatizaci serverů, služeb i aplikací; správu logů, databází a mnoho více.</description>
	<lastBuildDate>Thu, 06 Nov 2025 06:13:48 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>
	<item>
		<title>Jak na&#160;aktualizaci TimescaleDB</title>
		<link>https://www.initmax.cz/wiki/jak-na-aktualizaci-timescaledb/</link>
		
		<dc:creator><![CDATA[Tomáš Heřmánek]]></dc:creator>
		<pubDate>Tue, 27 Aug 2024 14:41:53 +0000</pubDate>
				<guid isPermaLink="false">https://www.initmax.cz/?post_type=wiki&#038;p=15077</guid>

					<description><![CDATA[<p>TimescaleDB je populární rozšíření pro PostgreSQL, které umožňuje efektivní zpracování časových řad. Při aktualizaci TimescaleDB je důležité dodržet správné postupy, aby ...</p>
<p>The post <a href="https://www.initmax.cz/wiki/jak-na-aktualizaci-timescaledb/">Jak na&nbsp;aktualizaci TimescaleDB</a> appeared first on <a href="https://www.initmax.cz">initMAX s.r.o.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">TimescaleDB je populární rozšíření pro PostgreSQL, které umožňuje efektivní zpracování časových řad. Při&nbsp;aktualizaci TimescaleDB je důležité dodržet správné postupy, aby byla zachována stabilita a&nbsp;funkčnost databází, které toto rozšíření používají. Tento návod vás provede jednotlivými kroky aktualizace TimescaleDB.</p>


<section id="social-links-block_cf4c9a6cd726e214fa4a92ef8c870d39" data-id="social-links-block_cf4c9a6cd726e214fa4a92ef8c870d39" class="gt-block social-links">
			<div class="social-links__content"><p><strong>Dejte nám Like, sdílejte nás nebo nás sledujte 😍</strong><br />
Ať vám nic neunikne:</p>
</div>
		<div class="socials df df--fw-w df--ai-c df--jc-c">
					<a href="https://twitter.com/initmax" title="Odkaz na Twitter" class="social-link social-link--colored twitter-x" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 4l11.733 16h4.267l-11.733 -16z" /><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772" /></svg>


</a>
							<a href="https://www.linkedin.com/company/initmax/" title="Odkaz na Linkedin" class="social-link social-link--colored linkedin" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3318" transform="translate(-4214 7797)"><g data-name="Group 2185" transform="translate(4214 -7797)"><path data-name="Path 524" d="M0,0H24V24H0Z" fill="none"/><rect data-name="Rectangle 1825" width="16" height="16" rx="2" transform="translate(4 4)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 64" y2="5" transform="translate(8 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 65" y2="0.01" transform="translate(8 8)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 66" y1="5" transform="translate(12 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 525" d="M16,16V13a2,2,0,0,0-4,0" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
									<a href="https://www.youtube.com/@initmax1" title="Odkaz na Youtube" class="social-link social-link--colored youtube" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 5m0 4a4 4 0 0 1 4 -4h10a4 4 0 0 1 4 4v6a4 4 0 0 1 -4 4h-10a4 4 0 0 1 -4 -4z" /><path d="M10 9l5 3l-5 3z" /></svg>


</a>
										<a href="https://github.com/initmax" title="Odkaz na GitHub" class="social-link social-link--colored github" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg>


</a>
								<a href="https://www.facebook.com/initmax" title="Odkaz na Facebook" class="social-link social-link--colored facebook" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3193" transform="translate(-4286 7797)"><g data-name="Group 3189"><path data-name="Path 515" d="M0,0H24V24H0Z" transform="translate(4286 -7797)" fill="none"/><path data-name="Path 516" d="M7,10v4h3v7h4V14h3l1-4H14V8a1,1,0,0,1,1-1h3V3H15a5,5,0,0,0-5,5v2H7" transform="translate(4286 -7797)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
							<a href="https://www.instagram.com/initmax/" title="Odkaz na Instagram" class="social-link social-link--colored instagram" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3194" transform="translate(-4358 7797)"><g data-name="Group 3190"><path data-name="Path 517" d="M0,0H24V24H0Z" transform="translate(4358 -7797)" fill="none"/><rect data-name="Rectangle 1783" width="16" height="16" rx="4" transform="translate(4362 -7793)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle data-name="Ellipse 51" cx="3" cy="3" r="3" transform="translate(4367 -7788)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 63" y2="0.001" transform="translate(4374.5 -7789.5)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
			</div>
</section>




<h2 class="wp-block-heading">Kontrola stávající verze TimescaleDB</h2>



<p class="wp-block-paragraph">Než začnete s&nbsp;aktualizací, zkontrolujte, jakou verzi TimescaleDB máte aktuálně nainstalovanou a&nbsp;aktivní v&nbsp;databázích.</p>



<p class="wp-block-paragraph">Příkaz pro kontrolu nainstalované verze rozšíření TimescaleDB:</p>


<section id="block-code-block_054550ccdb3bb7fb1b49da08af8c16ab" data-id="block-code-block_054550ccdb3bb7fb1b49da08af8c16ab" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -c &quot;SELECT default_version, installed_version FROM pg_available_extensions WHERE name = &#039;timescaledb&#039;;&quot;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="3282" height="290" src="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version.png" alt="" class="wp-image-15082" srcset="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version.png 3282w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version-300x27.png 300w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version-1024x90.png 1024w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version-768x68.png 768w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version-1536x136.png 1536w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb_runing_version-2048x181.png 2048w" sizes="(max-width: 3282px) 100vw, 3282px" /></figure>



<p class="wp-block-paragraph">Tento dotaz zobrazí verze, které jsou dostupné a&nbsp;aktuálně nainstalované. Například, můžete vidět nainstalovanou verzi&nbsp;<code>2.11.2</code>.</p>



<h2 class="wp-block-heading">Aktualizace balíčků TimescaleDB</h2>



<p class="wp-block-paragraph">Pro aktualizaci samotných balíčků TimescaleDB, včetně dodatečných komponent jako jsou&nbsp;<strong>TimescaleDB tools</strong>&nbsp;a&nbsp;<strong>TimescaleDB loader</strong>, použijte následující příkaz:</p>


<section id="block-code-block_2718fe9e9f894adbdae4edb877bef6ff" data-id="block-code-block_2718fe9e9f894adbdae4edb877bef6ff" class="gt-block block-code">
    <pre><code>sudo dnf upgrade timescaledb-*</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz zajistí, že všechny součásti TimescaleDB, které máte nainstalované (včetně nástrojů a&nbsp;loaderu), budou aktualizovány na&nbsp;nejnovější verzi. To vám umožní plně využívat všechny nové funkce a&nbsp;vylepšení, které TimescaleDB nabízí.</p>



<h2 class="wp-block-heading">Identifikace databází, které používají TimescaleDB</h2>



<p class="wp-block-paragraph">Dalším krokem je identifikace databází, které používají rozšíření TimescaleDB. Můžete to provést pomocí dotazu v&nbsp;PostgreSQL:</p>


<section id="block-code-block_4c8e40ce3467ae30606b2d169793b742" data-id="block-code-block_4c8e40ce3467ae30606b2d169793b742" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -t -c &quot;SELECT datname FROM pg_database WHERE datistemplate = false;&quot; | 
while read dbname; do 
  sudo -u postgres psql -d &quot;$dbname&quot; -c &quot;SELECT &#039;$dbname&#039; as database, extname as extension FROM pg_extension WHERE extname = &#039;timescaledb&#039;;&quot;; 
done</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz prochází všechny databáze (kromě šablonových) a&nbsp;kontroluje, zda obsahují rozšíření TimescaleDB. Pokud ano, vypíše název databáze a&nbsp;rozšíření.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="4476" height="750" src="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb.png" alt="" class="wp-image-15090" srcset="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb.png 4476w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb-300x50.png 300w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb-1024x172.png 1024w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb-768x129.png 768w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb-1536x257.png 1536w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-databases_using_timescaledb-2048x343.png 2048w" sizes="(max-width: 4476px) 100vw, 4476px" /></figure>



<p class="wp-block-paragraph">To znamená, že rozšíření TimescaleDB je používáno v&nbsp;databázi&nbsp;<code>zabbix</code>, jak je vidět na&nbsp;řádku s&nbsp;výsledkem&nbsp;<code>(1 row)</code>. Tento výstup potvrzuje, že databáze&nbsp;<code>zabbix</code>&nbsp;má aktivní rozšíření TimescaleDB, a&nbsp;je tedy potřeba ji zahrnout do&nbsp;aktualizačního procesu.</p>



<h2 class="wp-block-heading">Aktualizace rozšíření TimescaleDB v&nbsp;databázích</h2>



<p class="wp-block-paragraph">Po aktualizaci balíčků a&nbsp;identifikaci databází je třeba provést aktualizaci rozšíření TimescaleDB v&nbsp;jednotlivých databázích. To provedete následujícím SQL příkazem pro každou databázi, která používá TimescaleDB:</p>


<section id="block-code-block_a84010d456500ac87756fe2f18f2d27f" data-id="block-code-block_a84010d456500ac87756fe2f18f2d27f" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -d &lt;vaše_databáze&gt; -c &quot;ALTER EXTENSION timescaledb UPDATE;&quot;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz aktualizuje rozšíření na&nbsp;nejnovější verzi v&nbsp;konkrétní databázi.&nbsp;<strong>Ujistěte se, že nahradíte&nbsp;<code>&lt;vaše_databáze&gt;</code> názvem databáze, kterou chcete aktualizovat.</strong></p>



<p class="wp-block-paragraph">Pokud během aktualizace narazíte na&nbsp;chybu s&nbsp;hláškou:</p>


<section id="block-code-block_b62b4a8850b15a7917a1bf29c236c5af" data-id="block-code-block_b62b4a8850b15a7917a1bf29c236c5af" class="gt-block block-code">
    <pre><code>ERROR: loader version out-of-date
HINT: Please restart the database to upgrade the loader version.</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Je potřeba restartovat PostgreSQL server. Ujistěte se, že nahradíte číslo verze v&nbsp;příkazu podle vaší aktuální verze PostgreSQL serveru:</p>


<section id="block-code-block_20b4496acb843c6a5375adb8287bb362" data-id="block-code-block_20b4496acb843c6a5375adb8287bb362" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-&lt;verze&gt;.service</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Například pro PostgreSQL 18 použijte:</p>


<section id="block-code-block_89f74bca8e253c23dafce4a7d377d5a0" data-id="block-code-block_89f74bca8e253c23dafce4a7d377d5a0" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-18.service</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Po restartu serveru opakujte příkaz pro aktualizaci rozšíření TimescaleDB:</p>


<section id="block-code-block_a84010d456500ac87756fe2f18f2d27f" data-id="block-code-block_a84010d456500ac87756fe2f18f2d27f" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -d &lt;vaše_databáze&gt; -c &quot;ALTER EXTENSION timescaledb UPDATE;&quot;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tímto způsobem zajistíte, že rozšíření TimescaleDB bude úspěšně aktualizováno a&nbsp;bude plně funkční.</p>



<h2 class="wp-block-heading">Restart PostgreSQL serveru po&nbsp;aktualizaci</h2>



<p class="wp-block-paragraph">Po úspěšné aktualizaci rozšíření TimescaleDB je doporučeno restartovat PostgreSQL server, aby byly všechny změny plně aplikovány a&nbsp;nové verze komponent správně načteny.</p>



<p class="wp-block-paragraph">Ujistěte se, že nahradíte číslo verze v&nbsp;příkazu podle vaší aktuální verze PostgreSQL serveru:</p>


<section id="block-code-block_20b4496acb843c6a5375adb8287bb362" data-id="block-code-block_20b4496acb843c6a5375adb8287bb362" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-&lt;verze&gt;.service</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Například pro PostgreSQL 18 použijte:</p>


<section id="block-code-block_89f74bca8e253c23dafce4a7d377d5a0" data-id="block-code-block_89f74bca8e253c23dafce4a7d377d5a0" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-18.service</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento krok zajistí, že všechny změny, které byly provedeny během aktualizace, budou plně účinné a&nbsp;databázový server bude připraven pro další provoz.</p>



<h2 class="wp-block-heading">Automatická aktualizace rozšíření TimescaleDB ve všech databázích (volitelný)</h2>



<p class="wp-block-paragraph">Pokud máte více databází, které používají rozšíření TimescaleDB, a&nbsp;chcete automatizovat proces jejich aktualizace, můžete použít následující příkaz. Tento příkaz provede aktualizaci rozšíření TimescaleDB automaticky ve všech databázích, kde je toto rozšíření aktuálně nainstalováno.</p>



<h4 class="wp-block-heading">Automatická aktualizace rozšíření TimescaleDB</h4>



<p class="wp-block-paragraph">Následující příkaz prohledá všechny databáze na&nbsp;serveru, zkontroluje, zda v&nbsp;nich je nainstalováno rozšíření TimescaleDB, a&nbsp;pokud ano, provede jeho aktualizaci:</p>


<section id="block-code-block_0b8e28d15e7126f5f8e814ebab0e06df" data-id="block-code-block_0b8e28d15e7126f5f8e814ebab0e06df" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -t -c &quot;SELECT datname FROM pg_database WHERE datistemplate = false;&quot; | 
while read dbname; do 
  if sudo -u postgres psql -d &quot;$dbname&quot; -tAc &quot;SELECT 1 FROM pg_extension WHERE extname = &#039;timescaledb&#039;&quot; | grep -q 1; then 
    sudo -u postgres psql -d &quot;$dbname&quot; -c &quot;ALTER EXTENSION timescaledb UPDATE;&quot;; 
  fi; 
done
</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<h3 class="wp-block-heading">Co tento příkaz dělá:</h3>



<ul class="wp-block-list">
<li><strong>Výběr databází:</strong>&nbsp;Vybere všechny databáze kromě šablonových (<code>template0</code>&nbsp;a&nbsp;<code>template1</code>).</li>



<li><strong>Kontrola rozšíření:</strong>&nbsp;U&nbsp;každé databáze nejprve zkontroluje, zda je rozšíření TimescaleDB nainstalováno.</li>



<li><strong>Aktualizace rozšíření:</strong>&nbsp;Pokud je rozšíření TimescaleDB nainstalováno, provede jeho aktualizaci na&nbsp;nejnovější verzi.</li>
</ul>



<p class="wp-block-paragraph"><strong>Zkopírujte tento kompletní příkaz a&nbsp;spusťte ho v&nbsp;terminálu.</strong>&nbsp;Tento příkaz zajistí, že aktualizace proběhne pouze v&nbsp;databázích, kde je rozšíření TimescaleDB aktuálně nainstalováno.</p>



<p class="wp-block-paragraph">Pokud při&nbsp;pokusu o&nbsp;aktualizaci rozšíření TimescaleDB uvidíte následující chybu:</p>


<section id="block-code-block_b62b4a8850b15a7917a1bf29c236c5af" data-id="block-code-block_b62b4a8850b15a7917a1bf29c236c5af" class="gt-block block-code">
    <pre><code>ERROR: loader version out-of-date
HINT: Please restart the database to upgrade the loader version.</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Je potřeba restartovat PostgreSQL server a&nbsp;akci opakovat. Ujistěte se, že nahradíte číslo verze v&nbsp;příkazu podle vaší aktuální verze PostgreSQL serveru:</p>


<section id="block-code-block_20b4496acb843c6a5375adb8287bb362" data-id="block-code-block_20b4496acb843c6a5375adb8287bb362" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-&lt;verze&gt;.service</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Například pro PostgreSQL 18 použijte:</p>


<section id="block-code-block_a55f7f01f524b36ec9545cfc152f2906" data-id="block-code-block_a55f7f01f524b36ec9545cfc152f2906" class="gt-block block-code">
    <pre><code>sudo systemctl restart postgresql-18.service
</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Po restartu PostgreSQL serveru a&nbsp;<strong>opětovném spuštění příkazu na&nbsp;aktualizaci</strong> byste měli vidět potvrzení:</p>


<section id="block-code-block_b5104fcea2d83d5638eed81c000959cc" data-id="block-code-block_b5104fcea2d83d5638eed81c000959cc" class="gt-block block-code">
    <pre><code>ALTER EXTENSION</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="4478" height="770" src="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail.png" alt="" class="wp-image-15099" srcset="https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail.png 4478w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail-300x52.png 300w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail-1024x176.png 1024w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail-768x132.png 768w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail-1536x264.png 1536w, https://www.initmax.cz/wp-content/uploads/2024/08/timescaledb-upgrade_fail-2048x352.png 2048w" sizes="(max-width: 4478px) 100vw, 4478px" /></figure>



<p class="wp-block-paragraph">Tím se potvrdí, že aktualizace rozšíření TimescaleDB proběhla úspěšně.</p>



<h2 class="wp-block-heading">Restart aplikací (volitelný)</h2>



<p class="wp-block-paragraph">Po provedení aktualizace je doporučeno restartovat aplikace, které se připojují k&nbsp;databázím s&nbsp;TimescaleDB. Tím zajistíte, že aplikace správně načtou novou verzi rozšíření a&nbsp;předejdete možným problémům s&nbsp;kompatibilitou.</p>


<section id="block-code-block_193c6755cddd3a4c4b44ebf78c087b0f" data-id="block-code-block_193c6755cddd3a4c4b44ebf78c087b0f" class="gt-block block-code">
    <pre><code>sudo systemctl restart vaše_aplikace</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<h2 class="wp-block-heading">Ověření funkčnosti a&nbsp;optimalizace</h2>



<p class="wp-block-paragraph">Po aktualizaci rozšíření a&nbsp;restartu aplikací zkontrolujte, zda vše funguje podle očekávání. Doporučujeme provést základní dotazy a&nbsp;zkontrolovat, že aplikace pracuje bez problémů.</p>



<p class="wp-block-paragraph">Navíc můžete provést další optimalizaci, například reindexaci, pokud došlo k&nbsp;významným změnám v&nbsp;datových strukturách nebo indexech.</p>



<h2 class="wp-block-heading">Další Doporučení</h2>



<ul class="wp-block-list">
<li><strong>Testování na&nbsp;testovacím prostředí:</strong>&nbsp;Před aktualizací na&nbsp;produkčním prostředí doporučujeme provést testovací aktualizaci na&nbsp;testovacím serveru, abyste minimalizovali riziko problémů v&nbsp;produkci.</li>



<li><strong>Sledování výkonu:</strong>&nbsp;Po&nbsp;aktualizaci sledujte výkon TimescaleDB, abyste zjistili, zda došlo k&nbsp;nějakým změnám, a&nbsp;případně upravte nastavení výkonu podle potřeby.</li>



<li><strong>Záloha před aktualizací:</strong>&nbsp;I&nbsp;když se jedná o&nbsp;menší aktualizaci, doporučujeme provést zálohu databází před provedením změn, abyste měli možnost návratu v&nbsp;případě problémů.</li>



<li><strong>Procházení changelogu:</strong>&nbsp;Seznamte se s&nbsp;novinkami a&nbsp;změnami v&nbsp;nové verzi TimescaleDB, abyste věděli, jaké nové funkce můžete využít a&nbsp;co je potřeba upravit.</li>
</ul>



<p class="wp-block-paragraph">Tímto způsobem zajistíte, že aktualizace TimescaleDB proběhne hladce a&nbsp;že vaše databáze budou i&nbsp;nadále plně funkční a&nbsp;optimalizované.</p>


<section id="block-newsletter-block_70763c45357aa02545f9e7fc5788766d" data-id="block-newsletter-block_70763c45357aa02545f9e7fc5788766d" class="gt-block block-newsletter">
    <section id="newsletter" class="newsletter">
	<div class="gradient basic">
		<div class="newsletter__inner width width--general">
			<div class="col left">
									<h2 class="newsletter__title">Buďte v&nbsp;obraze s&nbsp;naším newsletterem</h2>
													<div class="newsletter__content"><p>Díky initMAX newsletteru Vám neunikne žádná z&nbsp;pozvánek na&nbsp;akce a&nbsp;webináře, žádný z&nbsp;tipů, jak dostat ze svého IT MAXimum, ani ověřené informace o&nbsp;novinkách ze světa Zabbix a&nbsp;dalších technologií.</p>
</div>
							</div>
			<div class="col right form-wrapper">
				<div class="newsletter-form">
	<form method="post" action="/wiki/kapitola/postgresql/postgresql-aktualizace/feed/" enctype="multipart/form-data">
		<input type="hidden" name="url" value="https://www.initmax.cz/wiki/kapitola/postgresql/postgresql-aktualizace/feed/">

		<div class="inputs">

			<label for="newsletter-form_contact_email" class="top">Vaše e-mailová adresa:</label>
			<div class="df">

				<div class="input">
					<input type="text" id="newsletter-form_contact_email" name="newsletter_email" placeholder="@" data-format="email" data-required="1">
									</div><!-- /.input -->

				<a href="#" class="btn btn--white sendBtn">Odeslat</a>

			</div>

			<div class="bottom nm">
				<label for="newsletter-form_gdpr" class="checkbox gdpr">
					<input type="checkbox" id="newsletter-form_gdpr" name="newsletter_gdpr">
					<span>Souhlasím se&nbsp;<a href="https://www.initmax.cz/ochrana-osobnich-udaju/" target="_blank">zpracováním osobních údajů</a>.</span>
				</label>
			</div>

		</div><!-- /.inputs -->
		<div class="sent hidden">
			<div class="iconOk"><h3>Děkujeme, že jste se přihlásili k&nbsp;odběru našeho newsletteru.</h3>
</div>
			<button class="sent__close" title="Zavřít" onclick="closeFormMessage(this,event)"><svg data-name="Group 3602" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path data-name="Path 3272" d="M0,0H24V24H0Z" fill="none"/><line data-name="Line 98" y2="14" transform="translate(7.05 7.05) rotate(-45)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 99" x2="14" transform="translate(7.05 16.95) rotate(-45)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</button>
		</div><!-- /.sent -->
	</form>
</div>			</div>
		</div>
	</div>
</section></section>



<section id="social-links-block_cf4c9a6cd726e214fa4a92ef8c870d39" data-id="social-links-block_cf4c9a6cd726e214fa4a92ef8c870d39" class="gt-block social-links">
			<div class="social-links__content"><p><strong>Dejte nám Like, sdílejte nás nebo nás sledujte 😍</strong><br />
Ať vám nic neunikne:</p>
</div>
		<div class="socials df df--fw-w df--ai-c df--jc-c">
					<a href="https://twitter.com/initmax" title="Odkaz na Twitter" class="social-link social-link--colored twitter-x" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 4l11.733 16h4.267l-11.733 -16z" /><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772" /></svg>


</a>
							<a href="https://www.linkedin.com/company/initmax/" title="Odkaz na Linkedin" class="social-link social-link--colored linkedin" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3318" transform="translate(-4214 7797)"><g data-name="Group 2185" transform="translate(4214 -7797)"><path data-name="Path 524" d="M0,0H24V24H0Z" fill="none"/><rect data-name="Rectangle 1825" width="16" height="16" rx="2" transform="translate(4 4)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 64" y2="5" transform="translate(8 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 65" y2="0.01" transform="translate(8 8)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 66" y1="5" transform="translate(12 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 525" d="M16,16V13a2,2,0,0,0-4,0" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
									<a href="https://www.youtube.com/@initmax1" title="Odkaz na Youtube" class="social-link social-link--colored youtube" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 5m0 4a4 4 0 0 1 4 -4h10a4 4 0 0 1 4 4v6a4 4 0 0 1 -4 4h-10a4 4 0 0 1 -4 -4z" /><path d="M10 9l5 3l-5 3z" /></svg>


</a>
										<a href="https://github.com/initmax" title="Odkaz na GitHub" class="social-link social-link--colored github" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg>


</a>
								<a href="https://www.facebook.com/initmax" title="Odkaz na Facebook" class="social-link social-link--colored facebook" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3193" transform="translate(-4286 7797)"><g data-name="Group 3189"><path data-name="Path 515" d="M0,0H24V24H0Z" transform="translate(4286 -7797)" fill="none"/><path data-name="Path 516" d="M7,10v4h3v7h4V14h3l1-4H14V8a1,1,0,0,1,1-1h3V3H15a5,5,0,0,0-5,5v2H7" transform="translate(4286 -7797)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
							<a href="https://www.instagram.com/initmax/" title="Odkaz na Instagram" class="social-link social-link--colored instagram" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3194" transform="translate(-4358 7797)"><g data-name="Group 3190"><path data-name="Path 517" d="M0,0H24V24H0Z" transform="translate(4358 -7797)" fill="none"/><rect data-name="Rectangle 1783" width="16" height="16" rx="4" transform="translate(4362 -7793)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle data-name="Ellipse 51" cx="3" cy="3" r="3" transform="translate(4367 -7788)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 63" y2="0.001" transform="translate(4374.5 -7789.5)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
			</div>
</section>

<p>The post <a href="https://www.initmax.cz/wiki/jak-na-aktualizaci-timescaledb/">Jak na&nbsp;aktualizaci TimescaleDB</a> appeared first on <a href="https://www.initmax.cz">initMAX s.r.o.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jak aktualizovat PostgreSQL na&#160;nejnovější verzi</title>
		<link>https://www.initmax.cz/wiki/jak-aktualizovat-postgresql-na-nejnovejsi-verzi/</link>
		
		<dc:creator><![CDATA[Tomáš Heřmánek]]></dc:creator>
		<pubDate>Fri, 23 Aug 2024 17:24:52 +0000</pubDate>
				<guid isPermaLink="false">https://www.initmax.cz/?post_type=wiki&#038;p=14933</guid>

					<description><![CDATA[<p>Tento návod vás provede krok za krokem procesem aktualizace PostgreSQL na nejnovější verzi na systémech RHEL/Rocky Linux 9. Zahrnuje zálohování databází, přidání potřebných repozitářů, ...</p>
<p>The post <a href="https://www.initmax.cz/wiki/jak-aktualizovat-postgresql-na-nejnovejsi-verzi/">Jak aktualizovat PostgreSQL na&nbsp;nejnovější verzi</a> appeared first on <a href="https://www.initmax.cz">initMAX s.r.o.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Tento návod vás provede krok za krokem procesem aktualizace PostgreSQL na&nbsp;nejnovější verzi na&nbsp;systémech RHEL/Rocky Linux&nbsp;9. Zahrnuje zálohování databází,&nbsp;přidání potřebných repozitářů, instalaci nové verze, migraci dat, optimalizaci výkonu&nbsp;a&nbsp;závěrečný úklid. Návod je určen pro administrátory, kteří potřebují provést bezpečný&nbsp;a&nbsp;efektivní upgrade databázového systému PostgreSQL,&nbsp;a&nbsp;obsahuje doporučení pro specifické&nbsp;případy, jako je použití rozšíření TimescaleDB nebo PostGIS. Po&nbsp;dokončení tohoto průvodce bude vaše databáze PostgreSQL&nbsp;připravena na&nbsp;další nasazení s&nbsp;optimalizovaným výkonem&nbsp;a&nbsp;plně aktualizovaným prostředím.</p>



<h2 class="wp-block-heading">Záloha stávající databáze</h2>



<p class="wp-block-paragraph">Před zahájením aktualizace databáze existují dvě možnosti zálohování. Vyberte si tu, která vám více vyhovuje:</p>



<ul class="wp-block-list">
<li><strong>Snapshot virtuálního stroje (VM):</strong>&nbsp;</li>
</ul>



<p class="wp-block-paragraph">Pokud používáte PostgreSQL na&nbsp;VM, vytvoření snapshotu celé VM je rychlý a&nbsp;bezpečný způsob zálohy. Tato varianta je zvláště vhodná, pokud používáte různé rozšíření, jako je například TimescaleDB, kde je proces zálohování složitější a&nbsp;není součástí tohoto návodu. Snapshot vám umožní rychle obnovit celý systém do&nbsp;původního stavu, což může být výhodné v&nbsp;případě komplikací během upgradu.</p>



<ul class="wp-block-list">
<li><strong>Klasická záloha databáze pomocí&nbsp;<code>pg_dumpall</code>:</strong></li>
</ul>



<p class="wp-block-paragraph">Tato metoda vytvoří textovou zálohu všech databází na&nbsp;serveru.</p>


<section id="block-code-block_e709ac85d893318e5315fecf2a8c49f8" data-id="block-code-block_e709ac85d893318e5315fecf2a8c49f8" class="gt-block block-code">
    <pre><code>sudo -u postgres pg_dumpall &gt; /cesta/k/zaloze/zaloha.sql</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Důležité:</strong>&nbsp;Zkontrolujte, že cesta, kam zálohu ukládáte, má dostatek volného místa. Zálohu je vhodné uložit mimo databázový server (například na&nbsp;síťový disk nebo jiný externí úložiště), aby byla chráněna v&nbsp;případě selhání serveru.</p>



<p class="wp-block-paragraph">Obě varianty mají své výhody, proto si vyberte tu, která lépe vyhovuje vašim potřebám a&nbsp;prostředí.</p>



<h2 class="wp-block-heading">Přidání PostgreSQL repozitáře</h2>



<p class="wp-block-paragraph">Pro instalaci nejnovější verze PostgreSQL na&nbsp;RHEL/Rocky Linux 9 je potřeba přidat oficiální PostgreSQL repozitář. Tento krok zajistí, že budete mít přístup k&nbsp;nejnovějším balíčkům PostgreSQL.</p>



<p class="wp-block-paragraph"><strong>Stáhněte a&nbsp;nainstalujte PostgreSQL repozitář RPM balíček:</strong></p>


<section id="block-code-block_8c545747453bdf68b8c9a563e5a5434b" data-id="block-code-block_8c545747453bdf68b8c9a563e5a5434b" class="gt-block block-code">
    <pre><code>sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento balíček přidá do&nbsp;systému oficiální PostgreSQL repozitář.</p>



<p class="wp-block-paragraph"><strong>Zakázání výchozího PostgreSQL modulu:</strong></p>



<p class="wp-block-paragraph">Distribuce RHEL a&nbsp;Rocky Linux mohou mít ve výchozím nastavení povolený modul PostgreSQL, který může obsahovat starší verze. Abyste zajistili, že se nainstaluje novější verze PostgreSQL z&nbsp;přidaného repozitáře, je třeba zakázat tento výchozí modul:</p>


<section id="block-code-block_b1bbb02099a249063764d45014a699f1" data-id="block-code-block_b1bbb02099a249063764d45014a699f1" class="gt-block block-code">
    <pre><code>sudo dnf -qy module disable postgresql</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tímto příkazem zakážete starší moduly PostgreSQL, čímž zajistíte, že se při&nbsp;instalaci použije balíček z&nbsp;přidaného repozitáře.</p>



<p class="wp-block-paragraph">Po přidání repozitáře a&nbsp;zakázání staršího modulu jste připraveni k&nbsp;instalaci nejnovější verze PostgreSQL.</p>



<h2 class="wp-block-heading">Instalace nové verze PostgreSQL</h2>



<p class="wp-block-paragraph">Po přidání repozitáře je čas nainstalovat novou verzi PostgreSQL.</p>



<p class="wp-block-paragraph"><strong>Aktualizace seznamu balíčků:</strong></p>



<p class="wp-block-paragraph">Nejprve aktualizujte seznam balíčků, aby systém získal informace o&nbsp;nejnovějších verzích dostupných v&nbsp;nově přidaném repozitáři PostgreSQL:</p>


<section id="block-code-block_3a09cdcd976178babacc332fb4d2050c" data-id="block-code-block_3a09cdcd976178babacc332fb4d2050c" class="gt-block block-code">
    <pre><code>sudo dnf update</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Instalace nové verze PostgreSQL:</strong></p>



<p class="wp-block-paragraph">Nainstalujte konkrétní verzi PostgreSQL, kterou chcete používat. Například, pokud instalujete PostgreSQL 18:</p>


<section id="block-code-block_8789048b4d3eae790c43fd648ce1d503" data-id="block-code-block_8789048b4d3eae790c43fd648ce1d503" class="gt-block block-code">
    <pre><code>dnf install -y postgresql18-server postgresql18-contrib</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz nainstaluje potřebné balíčky PostgreSQL serveru, včetně nástrojů pro správu a&nbsp;inicializaci databází.</p>



<p class="wp-block-paragraph"><strong>Inicializace databáze:</strong></p>



<p class="wp-block-paragraph">Po úspěšné instalaci nové verze PostgreSQL je nutné inicializovat databázový cluster, což vytvoří potřebnou adresářovou strukturu a&nbsp;inicializační soubory. Použijte příkaz pro inicializaci:</p>


<section id="block-code-block_73d23355581dfd2175a5a8ab2886fefa" data-id="block-code-block_73d23355581dfd2175a5a8ab2886fefa" class="gt-block block-code">
    <pre><code>sudo /usr/pgsql-18/bin/postgresql-18-setup initdb</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Nahraďte verzi &#8222;18&#8220; odpovídajícím číslem, pokud instalujete jinou verzi PostgreSQL. Tento krok je důležitý, protože připraví prostředí pro migraci dat ze staré verze.</p>



<p class="wp-block-paragraph"><strong>Poznámka:</strong>&nbsp;<strong>Je velmi důležité, aby nově inicializovaná databáze měla stejné nastavení jako původní databáze.</strong>&nbsp;To znamená, že pokud na&nbsp;staré verzi nebyly povoleny například kontrolní součty datových bloků (checksums), nemůžete je zapnout při&nbsp;inicializaci nové verze. Pokud by nastavení nového clusteru bylo odlišné, mohl by&nbsp;<code>pg_upgrade</code>&nbsp;selhat nebo způsobit problémy při&nbsp;migraci dat.</p>



<p class="wp-block-paragraph"><strong><strong>Důležité</strong>:</strong>&nbsp;V&nbsp;tomto kroku&nbsp;<strong>nespouštějte novou verzi PostgreSQL</strong>&nbsp;ihned po&nbsp;instalaci a&nbsp;inicializaci. Pokud byste novou verzi nyní spustili, mohlo by dojít ke kolizi portů, protože stará verze PostgreSQL stále běží na&nbsp;stejném portu (standardně port 5432). Nová verze musí zůstat vypnutá, dokud nedokončíte migraci dat a&nbsp;neprovedete případné úpravy portů nebo nakonfigurujete službu tak, aby běžela vedle stávající instance.</p>



<h2 class="wp-block-heading">Kontrola dostupného místa na&nbsp;disku</h2>



<p class="wp-block-paragraph">Před provedením upgradu PostgreSQL je důležité zkontrolovat, zda máte dostatek volného místa na&nbsp;disku. Migrace dat může vyžadovat významné množství prostoru, zejména pokud máte velké databáze.</p>



<p class="wp-block-paragraph"><strong>Zkontrolujte volné místo na&nbsp;disku pomocí příkazu:</strong></p>


<section id="block-code-block_ef5b561a148c0fd635802dd6d8b7c301" data-id="block-code-block_ef5b561a148c0fd635802dd6d8b7c301" class="gt-block block-code">
    <pre><code>df -h </code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz zobrazí přehled o&nbsp;využití diskového prostoru na&nbsp;jednotlivých oddílech. Zvláštní pozornost věnujte oddílům, kde jsou umístěny databázové soubory a&nbsp;konfigurační soubory PostgreSQL, například&nbsp;<code>/var/lib/pgsql</code> nebo jiný specifický adresář, kde máte uložené databáze.</p>



<p class="wp-block-paragraph"><strong>Odhad potřebného místa:</strong></p>



<p class="wp-block-paragraph">Upgrady a&nbsp;migrace mohou dočasně vyžadovat dvojnásobek místa než je aktuální velikost databází, protože se během procesu mohou vytvářet dočasné kopie a&nbsp;zálohy dat. Pokud tedy vaše databáze zabírá 50 GB, měli byste mít k&nbsp;dispozici alespoň dalších 50 GB volného místa.</p>



<p class="wp-block-paragraph"><strong>Výjimka:</strong> Pokud při&nbsp;migraci použijete parametr&nbsp;<code>-k</code>&nbsp;s&nbsp;nástrojem&nbsp;<code>pg_upgrade</code>, nebudou se vytvářet kopie datových souborů, ale místo toho se použijí hardlinky. To znamená, že nebudete potřebovat tolik volného místa na&nbsp;disku a&nbsp;migrace bude rychlejší. Na&nbsp;druhou stranu, data budou sdílena mezi starým a&nbsp;novým clusterem, což znemožní bezpečné spuštění staré verze PostgreSQL po&nbsp;migraci. Stará data tedy nebudou automaticky zálohována.</p>



<p class="wp-block-paragraph"><strong>Uvolnění místa (volitelně):</strong></p>



<p class="wp-block-paragraph">Pokud zjistíte, že na&nbsp;disku není dostatek místa, můžete zvážit následující kroky:</p>



<ul class="wp-block-list">
<li>Odstranění nepotřebných souborů a&nbsp;starých záloh.</li>



<li>Přesun dat na&nbsp;externí úložiště.</li>



<li>Zvýšení kapacity disku, pokud je to možné.</li>
</ul>



<p class="wp-block-paragraph">Dostatečné volné místo na&nbsp;disku je klíčové pro úspěšný upgrade bez přerušení služby nebo ztráty dat.</p>



<h2 class="wp-block-heading">Instalace rozšíření a&nbsp;přenos konfigurace</h2>



<p class="wp-block-paragraph">Před samotnou migrací dat je klíčové připravit prostředí nové verze PostgreSQL. Tento krok zahrnuje instalaci potřebných rozšíření (extensions) a&nbsp;přenos konfigurace ze staré verze. Správná instalace a&nbsp;konfigurace zajišťují, že po&nbsp;migraci bude databáze fungovat stejně jako předtím, včetně všech specifických nastavení a&nbsp;funkcí.</p>



<h3 class="wp-block-heading">Instalace rozšíření</h3>



<p class="wp-block-paragraph">Pokud používáte rozšíření v&nbsp;PostgreSQL, například&nbsp;<strong>TimescaleDB</strong>&nbsp;nebo&nbsp;<strong>PostGIS</strong>, je důležité nainstalovat stejné verze těchto rozšíření i&nbsp;v&nbsp;nové verzi PostgreSQL. Použití nesprávné nebo nekompatibilní verze rozšíření může způsobit chyby a&nbsp;nestabilitu systému.</p>



<h4 class="wp-block-heading">Zjištění dostupných rozšíření:</h4>



<p class="wp-block-paragraph">Namísto příkazu&nbsp;<code>\dx</code>&nbsp;použijte SQL dotaz, který vypíše všechna dostupná rozšíření v&nbsp;systému, včetně těch, která ještě nejsou aktivována:</p>


<section id="block-code-block_de8e14316908e3bc4c1235fd870bfea2" data-id="block-code-block_de8e14316908e3bc4c1235fd870bfea2" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -c &quot;SELECT * FROM pg_available_extensions;&quot;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz zobrazí seznam všech dostupných rozšíření, včetně jejich verze a&nbsp;stavu instalace. Například u&nbsp;TimescaleDB byste měli vidět něco podobného:</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="3064" height="348" src="https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions.png" alt="" class="wp-image-14980" srcset="https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions.png 3064w, https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions-300x34.png 300w, https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions-1024x116.png 1024w, https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions-768x87.png 768w, https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions-1536x174.png 1536w, https://www.initmax.cz/wp-content/uploads/2024/08/pg_available_extensions-2048x233.png 2048w" sizes="auto, (max-width: 3064px) 100vw, 3064px" /></figure>



<p class="wp-block-paragraph"><strong>Instalace stejné verze TimescaleDB do&nbsp;nové verze PostgreSQL:</strong></p>



<p class="wp-block-paragraph">Po instalaci nové verze PostgreSQL je nutné nainstalovat stejnou verzi TimescaleDB, jakou jste používali dříve. Zajistěte, aby verze TimescaleDB byla kompatibilní s&nbsp;novou verzí PostgreSQL a&nbsp;aby byla stejná jako v&nbsp;původní instalaci.</p>



<p class="wp-block-paragraph">Příklad instalace konkrétní verze TimescaleDB:</p>


<section id="block-code-block_bd4fffc58ea9470437e00e4b8aeeaf49" data-id="block-code-block_bd4fffc58ea9470437e00e4b8aeeaf49" class="gt-block block-code">
    <pre><code>sudo dnf install timescaledb-2-postgresql-&lt;verze&gt;-&lt;konkrétní_verze&gt; timescaledb-2-loader-postgresql-&lt;verze&gt;-&lt;konkrétní_verze&gt;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Důležité:</strong>&nbsp;Ověřte, že instalovaná verze TimescaleDB odpovídá verzi, kterou jste používali před upgradem, aby nedošlo k&nbsp;nekompatibilitám a&nbsp;problémům při&nbsp;migraci dat.</p>



<p class="wp-block-paragraph"><strong>Instalace PostGIS do&nbsp;nové verze PostgreSQL:</strong></p>



<p class="wp-block-paragraph">Pokud používáte PostGIS, nainstalujte ho do&nbsp;nové verze PostgreSQL stejným způsobem jako ostatní rozšíření:</p>


<section id="block-code-block_0ad91dd318b4c08d2db891f80ad7b1d1" data-id="block-code-block_0ad91dd318b4c08d2db891f80ad7b1d1" class="gt-block block-code">
    <pre><code>sudo dnf install postgresql-&lt;verze&gt;-postgis</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Zajistěte, že verze PostGIS je kompatibilní s&nbsp;novou verzí PostgreSQL.</p>



<h3 class="wp-block-heading">Přenos konfigurace</h3>



<p class="wp-block-paragraph">Po instalaci rozšíření je dalším krokem přenést konfiguraci ze staré verze PostgreSQL do&nbsp;nové. Tím zajistíte, že všechna vlastní nastavení zůstávají zachována.</p>



<p class="wp-block-paragraph"><strong>Přeneste obsah souboru&nbsp;<code>postgresql.conf</code>:</strong></p>



<p class="wp-block-paragraph">Tento soubor obsahuje nastavení serveru, jako je paměť, připojení, logování, a&nbsp;další. Před upgradem si uložte kopii tohoto souboru a&nbsp;po&nbsp;instalaci nové verze PostgreSQL přeneste potřebná nastavení. Zohledněte však nové změny a&nbsp;funkce, které mohou v&nbsp;nové verzi PostgreSQL přinést optimalizaci.Příklad přenosu nastavení:</p>


<section id="block-code-block_7d37b28a0dd7d079bc9ad2b86f89e304" data-id="block-code-block_7d37b28a0dd7d079bc9ad2b86f89e304" class="gt-block block-code">
    <pre><code>sudo cp /var/lib/pgsql/&lt;stará_verze&gt;/data/postgresql.conf /var/lib/pgsql/&lt;nová_verze&gt;/data/</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Po přenosu soubor zkontrolujte a&nbsp;upravte podle aktuální potřeby a&nbsp;možností nové verze.</p>



<p class="wp-block-paragraph"><strong>Přeneste pravidla z&nbsp;<code>pg_hba.conf</code>:</strong></p>



<p class="wp-block-paragraph">Tento soubor definuje pravidla pro připojení k&nbsp;databázi a&nbsp;ověřování uživatelů. Přeneste vlastní pravidla do&nbsp;nové verze PostgreSQL:</p>


<section id="block-code-block_149bc0f43a87356113189d26f4186064" data-id="block-code-block_149bc0f43a87356113189d26f4186064" class="gt-block block-code">
    <pre><code>sudo cp /var/lib/pgsql/&lt;stará_verze&gt;/data/pg_hba.conf /var/lib/pgsql/&lt;nová_verze&gt;/data/</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Opět, po&nbsp;přenosu soubor zkontrolujte a&nbsp;ověřte, že pravidla odpovídají vašim bezpečnostním potřebám.</p>



<p class="wp-block-paragraph"><strong>Přeneste další konfigurační soubory (pokud je máte):</strong></p>



<p class="wp-block-paragraph">Pokud používáte další vlastní konfigurační soubory nebo úpravy, nezapomeňte je přenést a&nbsp;aktualizovat v&nbsp;nové verzi.</p>



<h3 class="wp-block-heading">Ověření připravenosti prostředí</h3>



<p class="wp-block-paragraph">Po instalaci rozšíření a&nbsp;přenosu konfigurace ověřte, že nové prostředí je připravené pro migraci dat. Zkontrolujte, zda jsou všechna rozšíření správně nainstalována a&nbsp;aktivována a&nbsp;zda je konfigurace správně načtena.</p>



<p class="wp-block-paragraph">Nyní jste připraveni na&nbsp;migraci dat do&nbsp;nové verze PostgreSQL.</p>



<h2 class="wp-block-heading">Migrace dat / Upgrade</h2>



<p class="wp-block-paragraph">Nyní, když je nová verze PostgreSQL nainstalována a&nbsp;připravena, je čas provést migraci dat ze staré verze do&nbsp;nové. Tento proces zahrnuje přesun datových souborů z&nbsp;původního datového adresáře do&nbsp;nového a&nbsp;zajištění, že všechna data a&nbsp;konfigurace jsou správně přenesena.</p>



<h3 class="wp-block-heading"><strong>Zastavení staré verze PostgreSQL</strong></h3>



<p class="wp-block-paragraph">Než začnete s&nbsp;migrací, je důležité zastavit běžící instanci staré verze PostgreSQL. Tento krok zajistí, že během migrace nebudou do&nbsp;databáze zapisována žádná nová data.</p>


<section id="block-code-block_ff2fc5fe95c7d17b85afd5e6718cc839" data-id="block-code-block_ff2fc5fe95c7d17b85afd5e6718cc839" class="gt-block block-code">
    <pre><code>sudo systemctl stop postgresql-&lt;stará_verze&gt;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Nahraďte&nbsp;&lt;stará_verze&gt;&nbsp;číslem verze, kterou aktuálně používáte (např.&nbsp;postgresql-13).</p>



<h3 class="wp-block-heading">Kontrola před migrací pomocí&nbsp;<code>pg_upgrade --check</code></h3>



<p class="wp-block-paragraph">Před samotnou migrací dat je velmi užitečné spustit&nbsp;<code>pg_upgrade</code>&nbsp;s&nbsp;parametrem&nbsp;<code>--check</code>. Tento parametr provede kontrolu kompatibility mezi starým a&nbsp;novým databázovým clusterem, aniž by skutečně prováděl migraci dat. Pomůže vám identifikovat problémy, které by mohly způsobit selhání migrace, a&nbsp;upozorní na&nbsp;nastavení, která je třeba opravit.</p>


<section id="block-code-block_d25eeaeb82afbada3a6c3b9df788a8df" data-id="block-code-block_d25eeaeb82afbada3a6c3b9df788a8df" class="gt-block block-code">
    <pre><code>sudo -u postgres /usr/pgsql-&lt;nová_verze&gt;/bin/pg_upgrade -k -b /usr/pgsql-&lt;stará_verze&gt;/bin -B /usr/pgsql-&lt;nová_verze&gt;/bin -d /var/lib/pgsql/&lt;stará_verze&gt;/data -D /var/lib/pgsql/&lt;nová_verze&gt;/data --check</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Vysvětlení parametrů:</p>



<ul class="wp-block-list">
<li><code>-k</code>: Použití stávajících dat pomocí hardlinků, což urychluje migraci a&nbsp;šetří místo.</li>



<li>-b: Cesta k&nbsp;binárním souborům staré verze PostgreSQL.</li>



<li>-B: Cesta k&nbsp;binárním souborům nové verze PostgreSQL.</li>



<li>-d: Cesta k&nbsp;datovému adresáři staré verze PostgreSQL.</li>



<li>-D: Cesta k&nbsp;datovému adresáři nové verze PostgreSQL.</li>



<li><code><code>--check</code></code>: Provádí kontrolu kompatibility mezi starým a&nbsp;novým clusterem bez provedení migrace, upozorní na&nbsp;případné problémy, které je třeba opravit před migrací.</li>
</ul>



<p class="wp-block-paragraph"><strong>Kontrola kompatibility:</strong></p>



<ul class="wp-block-list">
<li>Tento příkaz zkontroluje, zda jsou stará a&nbsp;nová verze PostgreSQL kompatibilní pro migraci. Pokud zjistí problémy, jako jsou nekompatibilní rozšíření, různé nastavení checksumů nebo jiná konfliktní nastavení, oznámí vám to.</li>
</ul>



<p class="wp-block-paragraph"><strong>Bezpečné ověření:</strong></p>



<ul class="wp-block-list">
<li>Protože&nbsp;<code>--check</code>&nbsp;neprovádí žádné změny, můžete ho bezpečně spustit, abyste se ujistili, že migrace proběhne hladce. Pokud se objeví nějaké problémy, můžete je opravit před skutečnou migrací.</li>
</ul>



<p class="wp-block-paragraph"><strong>Identifikace nastavení:</strong></p>



<ul class="wp-block-list">
<li>Parametr&nbsp;<code>--check</code>&nbsp;vám také pomůže identifikovat, zda jsou klíčová nastavení, jako například checksumy, nastavena stejně ve starém i&nbsp;novém clusteru. Tím předejdete problémům, které by mohly způsobit selhání migrace.</li>
</ul>



<h3 class="wp-block-heading">Doporučení:</h3>



<p class="wp-block-paragraph">Před tím, než spustíte skutečnou migraci pomocí&nbsp;<code>pg_upgrade</code>, vždy spusťte&nbsp;<code>pg_upgrade --check</code>, abyste odhalili případné problémy předem a&nbsp;mohli je vyřešit. Tento krok vám může ušetřit čas a&nbsp;minimalizovat riziko komplikací během migrace.</p>



<h3 class="wp-block-heading"><strong>Použití pg_upgrade</strong></h3>



<p class="wp-block-paragraph">Nástroj <code>pg_upgrade</code> je určen pro bezpečný a&nbsp;efektivní přesun dat ze staré verze PostgreSQL do&nbsp;nové. Přidáním volby <code>-k</code> dojde k&nbsp;vytvoření hardlinků mezi starými a&nbsp;novými datovými soubory, což znamená, že data nejsou fyzicky kopírována ani použita jako záloha. Tento postup výrazně urychluje migraci a&nbsp;umožňuje nové databázi okamžitě používat tato data. Pokud byste se pokusili spustit starý cluster po&nbsp;migraci, PostgreSQL zjistí, že data již používá nová verze, a&nbsp;odmítne starý cluster spustit, čímž zabrání potenciálním konfliktům a&nbsp;poškození dat.</p>



<p class="wp-block-paragraph">Příklad příkazu&nbsp;pg_upgrade:</p>


<section id="block-code-block_edf33f2799b9220b33a5c2236ae9d296" data-id="block-code-block_edf33f2799b9220b33a5c2236ae9d296" class="gt-block block-code">
    <pre><code>sudo -u postgres /usr/pgsql-&lt;nová_verze&gt;/bin/pg_upgrade -k -b /usr/pgsql-&lt;stará_verze&gt;/bin -B /usr/pgsql-&lt;nová_verze&gt;/bin -d /var/lib/pgsql/&lt;stará_verze&gt;/data -D /var/lib/pgsql/&lt;nová_verze&gt;/data</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Vysvětlení parametrů:</p>



<ul class="wp-block-list">
<li><code>-k</code>: Použití stávajících dat pomocí hardlinků, což urychluje migraci a&nbsp;šetří místo.</li>



<li>-b: Cesta k&nbsp;binárním souborům staré verze PostgreSQL.</li>



<li>-B: Cesta k&nbsp;binárním souborům nové verze PostgreSQL.</li>



<li>-d: Cesta k&nbsp;datovému adresáři staré verze PostgreSQL.</li>



<li>-D: Cesta k&nbsp;datovému adresáři nové verze PostgreSQL.</li>
</ul>



<p class="wp-block-paragraph">Nahraďte&nbsp;&lt;stará_verze&gt;&nbsp;a&nbsp;&lt;nová_verze&gt;&nbsp;čísly verzí, které používáte. Tento příkaz provede migraci dat z&nbsp;původního datového adresáře do&nbsp;nového, přičemž zachová strukturu databáze a&nbsp;data.</p>



<p class="wp-block-paragraph">Při použití nástroje&nbsp;<code>pg_upgrade</code>&nbsp;(i&nbsp;s&nbsp;parametrem&nbsp;<code>-k</code>) nedochází k&nbsp;přesunu dat ze starého datového adresáře do&nbsp;nového. Místo toho se data kopírují nebo hardlinkují (v&nbsp;závislosti na&nbsp;použití parametrů a&nbsp;systému souborů), a&nbsp;nová verze PostgreSQL používá svůj vlastní datový adresář.</p>



<h4 class="wp-block-heading"><strong>Jak to funguje:</strong></h4>



<ul class="wp-block-list">
<li><strong>Bez parametru&nbsp;<code>-k</code>:</strong> Pokud nepoužijete parametr&nbsp;<code>-k</code>,&nbsp;<code>pg_upgrade</code>&nbsp;zkopíruje data ze starého adresáře (např.&nbsp;<code>/var/lib/pgsql/12/</code>) do&nbsp;nového adresáře (např.&nbsp;<code>/var/lib/pgsql/18/</code>). To znamená, že data jsou přenesena do&nbsp;nového adresáře a&nbsp;starý adresář s&nbsp;daty může být po&nbsp;migraci odstraněn.</li>



<li><strong>S parametrem&nbsp;<code>-k</code>:</strong>&nbsp;Při&nbsp;použití parametru&nbsp;<code>-k</code>&nbsp;s&nbsp;nástrojem&nbsp;<code>pg_upgrade</code>&nbsp;jsou data sdílena mezi starým a&nbsp;novým clusterem pomocí hardlinků. To znamená, že stará data nejsou fyzicky kopírována, ale oba clustery odkazují na&nbsp;stejné datové bloky. Při&nbsp;pokusu o&nbsp;spuštění staré verze PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a&nbsp;starý cluster odmítne naběhnout. Nová verze PostgreSQL však bude fungovat normálně. Tento parametr tedy šetří místo a&nbsp;urychluje migraci, ale nelze ho použít jako záložní mechanismus pro starou verzi, protože starý cluster nebude možné znovu spustit.</li>
</ul>



<h4 class="wp-block-heading"><strong>Základní podmínky pro parametr -k:</strong></h4>



<ul class="wp-block-list">
<li><strong>Souborový systém musí podporovat hardlinky:</strong> Parametr&nbsp;<code>-k</code>&nbsp;lze použít pouze v&nbsp;případě, že používáte souborový systém, který podporuje hardlinky (např.&nbsp;ext4, XFS apod.). Hardlinky umožňují, aby nový datový adresář odkazoval na&nbsp;stejné fyzické datové bloky jako starý datový adresář, což znamená, že data nejsou kopírována, ale sdílena mezi verzemi.</li>



<li><strong>Jednotný souborový systém:</strong> Oba datové adresáře (starý i&nbsp;nový) musí být na&nbsp;stejném souborovém systému. Hardlinky totiž nemohou odkazovat na&nbsp;soubory na&nbsp;různých souborových systémech.</li>
</ul>



<p class="wp-block-paragraph"><strong>Výhody použití parametru&nbsp;<code>-k</code>:</strong></p>



<ul class="wp-block-list">
<li><strong>Výrazně rychlejší migrace:</strong> Protože při&nbsp;použití hardlinků nedochází k&nbsp;fyzickému kopírování dat, migrace pomocí&nbsp;<code>pg_upgrade</code>&nbsp;s&nbsp;parametrem&nbsp;<code>-k</code>&nbsp;je výrazně rychlejší než standardní migrace. Data nejsou znovu zapisována na&nbsp;disk, což zkracuje dobu trvání procesu.</li>



<li><strong>Nižší nároky na&nbsp;volné místo:</strong> Protože hardlinky odkazují na&nbsp;stejná data, nepotřebujete tolik volného místa na&nbsp;disku jako při&nbsp;plném kopírování dat. To vám umožní provést migraci i&nbsp;v&nbsp;prostředích s&nbsp;omezeným volným prostorem.</li>
</ul>



<h4 class="wp-block-heading">Nevýhody a&nbsp;na&nbsp;co si dát pozor při&nbsp;<strong>použití parametru&nbsp;<code>-k</code></strong></h4>



<ul class="wp-block-list">
<li><strong>Sdílení dat mezi starým a&nbsp;novým clusterem:</strong> Když použijete parametr <code>-k</code>, dojde k&nbsp;hardlinkování dat mezi starým a&nbsp;novým datovým adresářem. To znamená, že i&nbsp;když jsou data dostupná ve dvou různých adresářích (např.&nbsp;<code>/var/lib/pgsql/12/</code> a&nbsp;<code>/var/lib/pgsql/18/</code>), jedná se o&nbsp;stejná fyzická data na&nbsp;disku. Po&nbsp;migraci však PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a&nbsp;starý cluster se vůbec nespustí. Tím se zabrání možným problémům, které by mohly nastat, pokud by oba clustery pracovaly nad stejnými daty.</li>



<li><strong>Starý PostgreSQL cluster nelze znovu spustit:</strong>&nbsp;Po&nbsp;použití parametru&nbsp;<code>-k</code>&nbsp;není možné znovu spustit starý PostgreSQL cluster (např.&nbsp;PostgreSQL 12). Při&nbsp;pokusu o&nbsp;spuštění staré verze PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a&nbsp;starý cluster odmítne naběhnout.</li>
</ul>



<p class="wp-block-paragraph"><strong>Po úspěšné migraci dat můžete novou verzi PostgreSQL spustit.</strong>&nbsp;To můžete provést příkazem:</p>


<section id="block-code-block_374bb785a85d0d76962f943f0a3fd0d6" data-id="block-code-block_374bb785a85d0d76962f943f0a3fd0d6" class="gt-block block-code">
    <pre><code>sudo systemctl start postgresql-&lt;nová_verze&gt;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tím aktivujete novou verzi PostgreSQL, která nyní běží s&nbsp;migrovanými daty. Nezapomeňte také povolit automatické spuštění při&nbsp;startu systému, pokud jste tak ještě neučinili:</p>


<section id="block-code-block_e70df1c62390373186237b0ff375eebf" data-id="block-code-block_e70df1c62390373186237b0ff375eebf" class="gt-block block-code">
    <pre><code>sudo systemctl enable postgresql-&lt;nová_verze&gt;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Nyní je vaše nová databáze připravena k&nbsp;plnému provozu.</p>



<h2 class="wp-block-heading"><strong>Analýza a&nbsp;údržba databáze po&nbsp;migraci</strong></h2>



<p class="wp-block-paragraph">Po úspěšné migraci dat je vhodné provést analýzu a&nbsp;optimalizaci databáze. Tento krok zajistí, že statistiky databáze jsou aktualizované a&nbsp;že je dosaženo optimálního výkonu.</p>



<p class="wp-block-paragraph"><strong>Analýza a&nbsp;údržba databáze po&nbsp;migraci</strong></p>



<p class="wp-block-paragraph">Po migraci spusťte příkaz&nbsp;vacuumdb, který provede analýzu a&nbsp;údržbu všech databází v&nbsp;několika fázích. Tento příkaz pomůže zlepšit výkon databáze tím, že optimalizuje interní struktury po&nbsp;migraci:</p>


<section id="block-code-block_98cfc36a78d45bbee071d31f6d5fde63" data-id="block-code-block_98cfc36a78d45bbee071d31f6d5fde63" class="gt-block block-code">
    <pre><code>sudo -u postgres /usr/pgsql-&lt;verze&gt;/bin/vacuumdb --all --analyze-in-stages</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento příkaz provede analýzu databází v&nbsp;několika fázích, což je méně náročné na&nbsp;systémové prostředky než kompletní jednorázová analýza.</p>



<p class="wp-block-paragraph"><strong>Výhody použití&nbsp;vacuumdb &#8211;analyze-in-stages</strong></p>



<p class="wp-block-paragraph">Tato možnost provádí analýzu v&nbsp;několika fázích, což umožňuje rychlejší přístup k&nbsp;validním statistikám a&nbsp;zároveň minimalizuje zatížení systému. Tento krok je obzvláště užitečný po&nbsp;migraci, kdy je potřeba aktualizovat statistiky pro optimalizaci výkonu.</p>



<h2 class="wp-block-heading">Reindexace po&nbsp;migraci</h2>



<p class="wp-block-paragraph">Při migraci mezi verzemi PostgreSQL, zejména z&nbsp;verzí 13 &#8211; 18, je důležité provést reindexaci databáze. Reindexace je klíčová z&nbsp;důvodu změn ve struktuře B-tree indexů, které byly postupně optimalizovány. Tento krok zajistí, že vaše indexy budou plně aktualizovány a&nbsp;optimalizovány pro novou verzi PostgreSQL, což může významně zlepšit výkon.</p>



<h3 class="wp-block-heading">Proč reindexovat?</h3>



<ul class="wp-block-list">
<li><strong>PostgreSQL 13</strong>: Tato verze přinesla zlepšení v&nbsp;algoritmech B-tree indexů, včetně de-duplication, což znamená, že po&nbsp;migraci z&nbsp;této verze a&nbsp;novějších je reindexace doporučena. Hlavními benefity těchto vylepšení jsou úspora místa na&nbsp;disku a&nbsp;lepší využití RAM, což přispívá k&nbsp;celkovému zlepšení výkonu databáze.</li>



<li><strong>PostgreSQL 14</strong>: V&nbsp;této verzi došlo k&nbsp;dalším vylepšením algoritmů indexace, optimalizaci správy volného prostoru v&nbsp;indexech a&nbsp;efektivnějšímu využití operační paměti. Reindexace po&nbsp;migraci zajistí lepší konzistenci výkonu a&nbsp;snížení zbytečného zatížení databázového systému.</li>



<li><strong>PostgreSQL 15</strong>: Tato verze přinesla významná vylepšení v&nbsp;paralelní reindexaci a&nbsp;snížení režie při&nbsp;aktualizacích indexů. Díky tomu dochází k&nbsp;výraznému zrychlení operací s&nbsp;indexy, což se přímo projeví v&nbsp;celkově lepší odezvě databáze. Doporučená reindexace po&nbsp;migraci pomůže tyto výhody plně využít.</li>



<li><strong>PostgreSQL 16</strong>: Verze 16 přinesla vylepšení ve vacuumování indexů a&nbsp;snížení vzájemného blokování, což dále zvyšuje výkon indexů a&nbsp;souběžnost operací v&nbsp;databázi. Reindexace po&nbsp;migraci zajistí plné využití těchto optimalizací a&nbsp;plynulejší provoz databáze.</li>



<li><strong>PostgreSQL 17</strong>: Verze 17 dále optimalizovala mechanismy indexace, včetně pokročilého řízení fragmentace indexů a&nbsp;dynamického přizpůsobení indexů aktuálním pracovním zátěžím. Reindexace po&nbsp;přechodu na&nbsp;tuto verzi zajistí maximální využití nových funkcí, sníží fragmentaci a&nbsp;povede k&nbsp;významným úsporám výkonu a&nbsp;zdrojů.</li>



<li><strong>PostgreSQL 18</strong>: Po&nbsp;upgradu je <strong>cíleně doporučeno</strong> reindexovat <strong>indexy používané full‑textovým vyhledáváním a&nbsp;rozšířením pg_trgm</strong>, pokud má cluster jako výchozí poskytovatele kolací <strong>ICU/builtin (tj.&nbsp;ne libc)</strong>; změny v&nbsp;práci s&nbsp;kolacemi mohou ovlivnit výsledky a&nbsp;reindexace zajistí konzistentní chování. Současně tato verze přináší <strong>„skip scan“ pro vícesloupcové B‑tree indexy</strong>, což je optimalizace plánovače využitelná i&nbsp;se stávajícími indexy (kvůli ní <strong>reindexace není nutná</strong>). </li>
</ul>



<h3 class="wp-block-heading">Jak provést reindexaci:</h3>



<p class="wp-block-paragraph">Po úspěšné migraci doporučujeme spustit reindexaci celé databáze:</p>


<section id="block-code-block_391cf4aaa6555409c195a434386d5f49" data-id="block-code-block_391cf4aaa6555409c195a434386d5f49" class="gt-block block-code">
    <pre><code>sudo -u postgres reindexdb --all</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<h4 class="wp-block-heading">Kdy je reindexace nutná:</h4>



<ul class="wp-block-list">
<li><strong>Migrace z&nbsp;PostgreSQL 13 a&nbsp;novější:</strong>&nbsp;Změny ve struktuře B-tree indexů znamenají, že reindexace po&nbsp;migraci z&nbsp;těchto verzí je důležitá pro dosažení optimálního výkonu.</li>
</ul>



<p class="wp-block-paragraph">Tímto krokem zajistíte, že vaše indexy jsou plně optimalizovány a&nbsp;že budete schopni plně využít výkonových vylepšení, která přinášejí nové verze PostgreSQL.</p>



<h2 class="wp-block-heading"><strong>Optimalizace výkonu (Performance Tuning)</strong></h2>



<p class="wp-block-paragraph">Po upgradu databáze je vhodné znovu přezkoumat a&nbsp;optimalizovat parametry pro dosažení co nejlepšího výkonu. To je zvláště důležité, pokud došlo ke zlepšení hardwarové konfigurace nebo pokud jsou v&nbsp;nové verzi PostgreSQL k&nbsp;dispozici nové funkce, které mohou výkon ovlivnit.</p>



<p class="wp-block-paragraph"><strong>Paměťové nastavení</strong></p>



<p class="wp-block-paragraph">Nastavení paměťových parametrů je zásadní pro optimalizaci výkonu PostgreSQL:</p>



<ul class="wp-block-list">
<li><strong>shared_buffers:</strong>&nbsp;Tento parametr určuje množství paměti, kterou PostgreSQL používá pro sdílené datové bloky. Doporučuje se nastavit tento parametr na&nbsp;hodnotu odpovídající přibližně 25&nbsp;% dostupné RAM.</li>



<li><strong>work_mem:</strong>&nbsp;Tento parametr ovlivňuje množství paměti přidělené jednotlivým operacím třídění a&nbsp;hašování. Pro složitější dotazy nebo více souběžných uživatelů může být nutné tento parametr zvýšit.</li>



<li><strong>maintenance_work_mem:</strong>&nbsp;Tento parametr určuje množství paměti přidělené údržbovým operacím, jako je například indexování a&nbsp;autovacuum. Zvýšení této hodnoty může urychlit tyto operace, zejména u&nbsp;větších databází.</li>
</ul>



<p class="wp-block-paragraph"><strong>Změny v&nbsp;kompresi:</strong></p>



<ul class="wp-block-list">
<li><strong>WAL komprese (PostgreSQL 14 a&nbsp;novější):</strong> PostgreSQL 14 přidává podporu pro kompresi WAL souborů pomocí algoritmů Zstandard (ZSTD) a&nbsp;LZ4. To umožňuje výrazně snížit velikost WAL logů, což vede k&nbsp;úspoře místa na&nbsp;disku a&nbsp;potenciálně i&nbsp;ke zlepšení výkonu při&nbsp;přenosu logů přes síť.</li>



<li><strong>TOAST komprese (PostgreSQL 15):</strong> PostgreSQL 15 zavádí podporu komprese dat v&nbsp;TOAST tabulkách pomocí algoritmu LZ4. TOAST (The Oversized-Attribute Storage Technique) se používá pro ukládání velkých hodnot, jako jsou velké textové řetězce nebo binární data. Komprese LZ4 je rychlá a&nbsp;účinná, což může vést ke snížení velikosti uložených dat a&nbsp;zlepšení výkonu při&nbsp;jejich čtení a&nbsp;zápisu.</li>



<li><strong>Rozšířená podpora komprese (PostgreSQL 16)</strong>:&nbsp;Verze 16 přináší další optimalizace komprese dat, včetně vylepšeného řízení komprese TOAST dat a&nbsp;flexibilnějších možností komprese u&nbsp;partitionovaných tabulek. To vede k&nbsp;dalším úsporám místa a&nbsp;rychlejšímu zpracování dat.</li>



<li><strong>Adaptivní komprese (PostgreSQL 17)</strong>:&nbsp;PostgreSQL 17 zavádí adaptivní kompresi, která dynamicky vybírá nejvhodnější kompresní algoritmus podle typu a&nbsp;povahy dat. Tato funkce automaticky maximalizuje účinnost komprese, snižuje nároky na&nbsp;prostor na&nbsp;disku a&nbsp;optimalizuje rychlost přístupu k&nbsp;datům.</li>



<li><strong>Ověřování komprimovaných záloh pg_verifybackup <strong>(PostgreSQL 18)</strong>:</strong> Nástroj pg_verifybackup nově umí přímo ověřit zálohy vytvořené v <strong>tar</strong> formátu <strong>včetně komprimovaných archivů</strong> (gzip/lz4/zstd) bez nutnosti je nejdřív rozbalit. Ověření WALu zatím zůstává jen pro „plain“ zálohy, u&nbsp;tar archivů je proto vhodné přidat &#8211;no-parse-wal. To zrychluje a&nbsp;zjednodušuje kontrolu záloh, pokud používáš kompresi na&nbsp;úrovni pg_basebackup.</li>
</ul>



<p class="wp-block-paragraph"><strong>Autovacuum</strong></p>



<p class="wp-block-paragraph">Autovacuum&nbsp;je důležitý proces, který zajišťuje údržbu databáze tím, že automaticky provádí operace, jako je odstraňování mrtvých řádků a&nbsp;aktualizace statistik. Po&nbsp;upgradu databáze byste měli zkontrolovat nastavení autovacuum a&nbsp;případně je upravit tak, aby odpovídala novým požadavkům na&nbsp;výkon.</p>



<ul class="wp-block-list">
<li><strong>Frekvence a&nbsp;prahové hodnoty:</strong>&nbsp;Pokud databáze často provádí velké množství změn, zvažte snížení prahových hodnot pro spuštění autovacuum, aby se častěji spouštělo.</li>



<li><strong>Paralelní běh:</strong>&nbsp;Zvyšte počet paralelních autovacuum procesů, pokud je to možné, což může zlepšit výkon při&nbsp;údržbě databáze s&nbsp;mnoha tabulkami.</li>
</ul>



<p class="wp-block-paragraph"><strong>Logování</strong></p>



<p class="wp-block-paragraph">Pokud potřebujete sledovat výkon nebo ladit problémy, upravte nastavení logování. To vám umožní sledovat dotazy, které zpomalují databázi, nebo identifikovat další problémy:</p>



<ul class="wp-block-list">
<li><strong>log_min_duration_statement:</strong>&nbsp;Nastavte tento parametr na&nbsp;dobu, po&nbsp;kterou by měl být dotaz logován, pokud trvá déle než zadaná hodnota. Může vám to pomoci identifikovat pomalé dotazy.</li>



<li><strong>log_checkpoints,&nbsp;log_autovacuum_min_duration:</strong>&nbsp;Tyto parametry mohou pomoci sledovat činnosti, které mohou ovlivňovat výkon, jako jsou checkpointy nebo dlouhé autovacuum operace.</li>
</ul>



<p class="wp-block-paragraph"><strong>Použití TimescaleDB Tuneru</strong></p>



<p class="wp-block-paragraph">Pokud používáte&nbsp;<strong>TimescaleDB</strong>, můžete využít jejich nástroj&nbsp;<strong>TimescaleDB Tuner</strong>&nbsp;pro automatickou optimalizaci nastavení výkonu. Tento nástroj analyzuje vaši konfiguraci a&nbsp;doporučí optimální nastavení pro parametry, jako jsou&nbsp;shared_buffers,&nbsp;work_mem,&nbsp;maintenance_work_mem&nbsp;a&nbsp;další.</p>



<p class="wp-block-paragraph">Nástroj TimescaleDB Tuner můžete spustit pomocí následujícího příkazu:</p>


<section id="block-code-block_6bc0a82cbe08760051d89d1bc095ae11" data-id="block-code-block_6bc0a82cbe08760051d89d1bc095ae11" class="gt-block block-code">
    <pre><code>timescaledb-tune</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tento nástroj projde vaši aktuální konfiguraci a&nbsp;poskytne doporučení pro úpravu nastavení. Kromě základních doporučení umožňuje tuner také nastavit volitelné parametry, které mohou dále optimalizovat výkon databáze. Doporučujeme projít tyto parametry a&nbsp;přizpůsobit je podle specifických potřeb vašeho systému a&nbsp;hardwarového prostředí.</p>



<p class="wp-block-paragraph">Použitím těchto parametrů můžete dosáhnout optimálního nastavení databáze po&nbsp;upgradu a&nbsp;zajistit, že bude fungovat efektivně i&nbsp;při&nbsp;vyšším zatížení.</p>



<h2 class="wp-block-heading"><strong>Ověření</strong> funkčnosti</h2>



<p class="wp-block-paragraph">Po provedení všech úprav a&nbsp;migrací je důležité ověřit, že nová verze PostgreSQL běží správně a&nbsp;že jsou všechna data dostupná. Tento krok zajistí, že migrace proběhla úspěšně a&nbsp;že databáze funguje podle očekávání.</p>



<p class="wp-block-paragraph"><strong>Ověření verze PostgreSQL</strong></p>



<p class="wp-block-paragraph">Zkontrolujte, že nová verze PostgreSQL je správně nainstalována a&nbsp;spuštěna. K&nbsp;tomu můžete použít příkaz:</p>


<section id="block-code-block_afce098eac848cb796df5ba3b4f00ae1" data-id="block-code-block_afce098eac848cb796df5ba3b4f00ae1" class="gt-block block-code">
    <pre><code>sudo -u postgres psql -c &quot;SELECT version();&quot;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Ujistěte se, že zobrazená verze odpovídá verzi, na&nbsp;kterou jste aktualizovali.</p>



<p class="wp-block-paragraph"><strong>Ověření přístupu k&nbsp;databázi</strong></p>



<p class="wp-block-paragraph">Připojte se k&nbsp;databázi a&nbsp;zkontrolujte, že je dostupná. Ověřte, že se můžete připojit k&nbsp;databázi, procházet tabulky a&nbsp;provádět základní dotazy.</p>



<p class="wp-block-paragraph"><strong>Kontrola dat</strong></p>



<p class="wp-block-paragraph">Prověřte, zda jsou všechna data správně migrována. Ověřte integritu dat a&nbsp;správnost konfigurace. Můžete zkontrolovat klíčové tabulky a&nbsp;data, která jsou pro vaše aplikace nejdůležitější.</p>



<p class="wp-block-paragraph"><strong>Ověření rozšíření a&nbsp;funkcionalit</strong></p>



<p class="wp-block-paragraph">Ujistěte se, že všechna používaná rozšíření (např.&nbsp;TimescaleDB, PostGIS) jsou správně nainstalována a&nbsp;funkční. Zkontrolujte také, zda konfigurace zůstala konzistentní s&nbsp;vašimi požadavky.</p>



<p class="wp-block-paragraph"><strong>Testování výkonu</strong></p>



<p class="wp-block-paragraph">Pokud jste provedli úpravy nastavení výkonu, zkontrolujte, zda se tyto změny projevily pozitivně na&nbsp;výkonu databáze. Spusťte několik testů, abyste zjistili, že systém běží hladce a&nbsp;bez problémů.</p>



<p class="wp-block-paragraph"><strong>Kontrola logů</strong></p>



<p class="wp-block-paragraph">Projděte logovací soubory PostgreSQL, abyste ověřili, že během migrace ani po&nbsp;spuštění nové verze nedošlo k&nbsp;žádným chybám. Logy můžete najít v&nbsp;adresáři, který je specifikován v&nbsp;nastavení&nbsp;postgresql.conf&nbsp;(typicky&nbsp;<strong>/var/lib/pgsql/&lt;verze&gt;/data/log</strong>&nbsp;nebo podobné umístění). Zaměřte se na&nbsp;jakákoliv varování nebo chyby, které by mohly naznačovat problémy s&nbsp;migrací nebo výkonem.</p>


<section id="block-code-block_07694c0d37fc2e23d457292fb91a7fce" data-id="block-code-block_07694c0d37fc2e23d457292fb91a7fce" class="gt-block block-code">
    <pre><code>sudo tail -f /var/lib/pgsql/&lt;verze&gt;/data/log/*.log</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Sledujte logy a&nbsp;zkontrolujte, zda neobsahují žádné závažné chyby nebo varování.</strong></p>



<h2 class="wp-block-heading"><strong>Úklid po&nbsp;migraci</strong> a&nbsp;důležité poznámky</h2>



<p class="wp-block-paragraph">Po úspěšné migraci a&nbsp;ověření správné funkčnosti nové verze PostgreSQL je důležité provést úklid, aby se uvolnilo místo na&nbsp;disku a&nbsp;odstranily se staré, již nepotřebné soubory a&nbsp;verze PostgreSQL.</p>



<p class="wp-block-paragraph"><strong>Odstranění starých datových souborů</strong></p>



<p class="wp-block-paragraph">Pokud jste použili&nbsp;<code>pg_upgrade</code>, může být vygenerován skript pro odstranění starých datových souborů. Tento skript můžete spustit následujícím příkazem:</p>


<section id="block-code-block_fb01035c5731b6f736967ec08ebefc39" data-id="block-code-block_fb01035c5731b6f736967ec08ebefc39" class="gt-block block-code">
    <pre><code>./delete_old_cluster.sh</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Poznámka:</strong>&nbsp;Tento příkaz&nbsp;<strong>trvale</strong>&nbsp;odstraní staré datové soubory, takže se ujistěte, že migrace proběhla úspěšně a&nbsp;že již nepotřebujete přístup k&nbsp;původním datům.</p>



<p class="wp-block-paragraph"><strong>Odebrání staré verze PostgreSQL</strong></p>



<p class="wp-block-paragraph">Pokud již starou verzi PostgreSQL nepotřebujete a&nbsp;neplánujete ji používat v&nbsp;budoucnu, můžete ji odebrat ze systému:</p>


<section id="block-code-block_21e75cf5f40d44a41ce215d2df8a0470" data-id="block-code-block_21e75cf5f40d44a41ce215d2df8a0470" class="gt-block block-code">
    <pre><code> dnf remove postgresql&lt;stará_verze&gt;-server</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph">Tímto příkazem se odstraní stará verze PostgreSQL a&nbsp;její balíčky.</p>



<p class="wp-block-paragraph"><strong>Poznámka:</strong> Při&nbsp;odstraňování staré verze PostgreSQL je vhodné odstranit i&nbsp;všechny balíčky rozšíření (extenzí), které jsou s&nbsp;touto verzí spojené, pokud existují. Tím zajistíte, že na&nbsp;systému nezůstanou nepotřebné balíčky, které již nebudete používat.</p>



<p class="wp-block-paragraph"><strong>Revize systémových služeb</strong></p>



<p class="wp-block-paragraph">Ujistěte se, že stará verze PostgreSQL není zaregistrovaná jako systémová služba, která by se mohla nechtěně spustit. Můžete to ověřit příkazem:</p>


<section id="block-code-block_75425c3df4aca1d4849469f2eddf089b" data-id="block-code-block_75425c3df4aca1d4849469f2eddf089b" class="gt-block block-code">
    <pre><code>sudo systemctl list-unit-files | grep postgresql</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Pokud vidíte služby staré verze, deaktivujte je:</strong></p>


<section id="block-code-block_bb46cc0e58b63af091325cce3acd01a2" data-id="block-code-block_bb46cc0e58b63af091325cce3acd01a2" class="gt-block block-code">
    <pre><code>sudo systemctl disable postgresql-&lt;stará_verze&gt;</code></pre>
    <a onclick="copyCode(this)" class="block-code__copy" title="Kopírovat"><svg data-name="Group 3002" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect data-name="Rectangle 2035" width="12" height="12" rx="2" transform="translate(8 8)" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 607" d="M16,8V6a2,2,0,0,0-2-2H6A2,2,0,0,0,4,6v8a2,2,0,0,0,2,2H8" fill="none" stroke="#1f65f4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</a>
</section>




<p class="wp-block-paragraph"><strong>Aktualizace dokumentace a&nbsp;skriptů</strong></p>



<p class="wp-block-paragraph">Pokud máte skripty nebo dokumentaci, které odkazují na&nbsp;starou verzi PostgreSQL, nezapomeňte je aktualizovat, aby odkazovaly na&nbsp;novou verzi. To zahrnuje zálohovací skripty, monitorovací nástroje, a&nbsp;další související konfigurace. Zvláštní pozornost věnujte následujícím oblastem:</p>



<ul class="wp-block-list">
<li><strong>Zálohovací skripty:</strong>&nbsp;Ujistěte se, že všechny zálohovací skripty odkazují na&nbsp;správnou verzi PostgreSQL a&nbsp;že jsou přizpůsobeny novým funkcím nebo změnám, které mohou mít vliv na&nbsp;proces zálohování (např.&nbsp;změny v&nbsp;podporovaných příkazech nebo optimalizace zálohování).</li>



<li><strong>Monitorovací nástroje:</strong>&nbsp;Aktualizujte jakýkoli software nebo nástroje, které monitorují výkon databáze, aby byly kompatibilní s&nbsp;novou verzí PostgreSQL. Zkontrolujte, zda všechny monitorovací metriky a&nbsp;výstrahy odpovídají nové verzi a&nbsp;jejím parametrům.</li>



<li><strong>Automatizační skripty:</strong>&nbsp;Pokud používáte skripty pro automatizaci správy databáze (např.&nbsp;skripty pro správu replikace, údržbu databáze nebo nasazování nových funkcí), aktualizujte je, aby byly plně kompatibilní s&nbsp;novou verzí PostgreSQL.</li>
</ul>



<h3 class="wp-block-heading">Seznámení se s&nbsp;novinkami a&nbsp;změnami</h3>



<p class="wp-block-paragraph">Před provedením migrace je vždy vhodné seznámit se s&nbsp;novinkami, změnami a&nbsp;očekávaným chováním nové verze PostgreSQL. Doporučujeme:</p>



<ul class="wp-block-list">
<li><strong>Číst changelog:</strong>&nbsp;Přečtěte si oficiální changelog PostgreSQL pro danou verzi, aby vás žádné změny nepřekvapily a&nbsp;abyste byli připraveni na&nbsp;nové funkce, změny v&nbsp;chování, nebo odstraněné funkce.</li>



<li><strong><a href="https://www.initmax.cz/webinare/?tag=postgresql">Zúčastnit se našich webinářů</a>:</strong>&nbsp;Pravidelně pořádáme zdarma webináře, kde vás informujeme o&nbsp;novinkách v&nbsp;PostgreSQL a&nbsp;co očekávat po&nbsp;migraci. Je to skvělá příležitost, jak se seznámit s&nbsp;novými funkcemi a&nbsp;získat odpovědi na&nbsp;své otázky od odborníků.</li>
</ul>



<p class="wp-block-paragraph">Tento návod by měl být komplexní a&nbsp;pokrývat všechny důležité aspekty upgradu PostgreSQL na&nbsp;RHEL/Rocky Linux 9. Můžete jej přizpůsobit konkrétním potřebám a&nbsp;prostředí vaší organizace.</p>


<section id="block-newsletter-block_de1d9c7cf5622806500cacf3a843852d" data-id="block-newsletter-block_de1d9c7cf5622806500cacf3a843852d" class="gt-block block-newsletter">
    <section id="newsletter" class="newsletter">
	<div class="gradient basic">
		<div class="newsletter__inner width width--general">
			<div class="col left">
									<h2 class="newsletter__title">Buďte v&nbsp;obraze s&nbsp;naším newsletterem</h2>
													<div class="newsletter__content"><p>Díky initMAX newsletteru Vám neunikne žádná z&nbsp;pozvánek na&nbsp;akce a&nbsp;webináře, žádný z&nbsp;tipů, jak dostat ze svého IT MAXimum, ani ověřené informace o&nbsp;novinkách ze světa Zabbix a&nbsp;dalších technologií.</p>
</div>
							</div>
			<div class="col right form-wrapper">
				<div class="newsletter-form">
	<form method="post" action="/wiki/kapitola/postgresql/postgresql-aktualizace/feed/" enctype="multipart/form-data">
		<input type="hidden" name="url" value="https://www.initmax.cz/wiki/kapitola/postgresql/postgresql-aktualizace/feed/">

		<div class="inputs">

			<label for="newsletter-form_contact_email" class="top">Vaše e-mailová adresa:</label>
			<div class="df">

				<div class="input">
					<input type="text" id="newsletter-form_contact_email" name="newsletter_email" placeholder="@" data-format="email" data-required="1">
									</div><!-- /.input -->

				<a href="#" class="btn btn--white sendBtn">Odeslat</a>

			</div>

			<div class="bottom nm">
				<label for="newsletter-form_gdpr" class="checkbox gdpr">
					<input type="checkbox" id="newsletter-form_gdpr" name="newsletter_gdpr">
					<span>Souhlasím se&nbsp;<a href="https://www.initmax.cz/ochrana-osobnich-udaju/" target="_blank">zpracováním osobních údajů</a>.</span>
				</label>
			</div>

		</div><!-- /.inputs -->
		<div class="sent hidden">
			<div class="iconOk"><h3>Děkujeme, že jste se přihlásili k&nbsp;odběru našeho newsletteru.</h3>
</div>
			<button class="sent__close" title="Zavřít" onclick="closeFormMessage(this,event)"><svg data-name="Group 3602" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path data-name="Path 3272" d="M0,0H24V24H0Z" fill="none"/><line data-name="Line 98" y2="14" transform="translate(7.05 7.05) rotate(-45)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 99" x2="14" transform="translate(7.05 16.95) rotate(-45)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
</button>
		</div><!-- /.sent -->
	</form>
</div>			</div>
		</div>
	</div>
</section></section>



<section id="social-links-block_7b9125e7fdd24e123367dd8237d92440" data-id="social-links-block_7b9125e7fdd24e123367dd8237d92440" class="gt-block social-links">
			<div class="social-links__content"><p><strong>Dejte nám Like, sdílejte nás nebo nás sledujte 😍</strong><br />
Ať vám nic neunikne:</p>
</div>
		<div class="socials df df--fw-w df--ai-c df--jc-c">
					<a href="https://twitter.com/initmax" title="Odkaz na Twitter" class="social-link social-link--colored twitter-x" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 4l11.733 16h4.267l-11.733 -16z" /><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772" /></svg>


</a>
							<a href="https://www.linkedin.com/company/initmax/" title="Odkaz na Linkedin" class="social-link social-link--colored linkedin" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3318" transform="translate(-4214 7797)"><g data-name="Group 2185" transform="translate(4214 -7797)"><path data-name="Path 524" d="M0,0H24V24H0Z" fill="none"/><rect data-name="Rectangle 1825" width="16" height="16" rx="2" transform="translate(4 4)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 64" y2="5" transform="translate(8 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 65" y2="0.01" transform="translate(8 8)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 66" y1="5" transform="translate(12 11)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path data-name="Path 525" d="M16,16V13a2,2,0,0,0-4,0" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
									<a href="https://www.youtube.com/@initmax1" title="Odkaz na Youtube" class="social-link social-link--colored youtube" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 5m0 4a4 4 0 0 1 4 -4h10a4 4 0 0 1 4 4v6a4 4 0 0 1 -4 4h-10a4 4 0 0 1 -4 -4z" /><path d="M10 9l5 3l-5 3z" /></svg>


</a>
										<a href="https://github.com/initmax" title="Odkaz na GitHub" class="social-link social-link--colored github" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /></svg>


</a>
								<a href="https://www.facebook.com/initmax" title="Odkaz na Facebook" class="social-link social-link--colored facebook" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3193" transform="translate(-4286 7797)"><g data-name="Group 3189"><path data-name="Path 515" d="M0,0H24V24H0Z" transform="translate(4286 -7797)" fill="none"/><path data-name="Path 516" d="M7,10v4h3v7h4V14h3l1-4H14V8a1,1,0,0,1,1-1h3V3H15a5,5,0,0,0-5,5v2H7" transform="translate(4286 -7797)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
							<a href="https://www.instagram.com/initmax/" title="Odkaz na Instagram" class="social-link social-link--colored instagram" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g data-name="Group 3194" transform="translate(-4358 7797)"><g data-name="Group 3190"><path data-name="Path 517" d="M0,0H24V24H0Z" transform="translate(4358 -7797)" fill="none"/><rect data-name="Rectangle 1783" width="16" height="16" rx="4" transform="translate(4362 -7793)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle data-name="Ellipse 51" cx="3" cy="3" r="3" transform="translate(4367 -7788)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line data-name="Line 63" y2="0.001" transform="translate(4374.5 -7789.5)" fill="none" stroke="var(--icon-color,#1F65F4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></g></svg>
</a>
			</div>
</section>

<p>The post <a href="https://www.initmax.cz/wiki/jak-aktualizovat-postgresql-na-nejnovejsi-verzi/">Jak aktualizovat PostgreSQL na&nbsp;nejnovější verzi</a> appeared first on <a href="https://www.initmax.cz">initMAX s.r.o.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
