{"id":55884,"date":"2020-01-31T00:00:00","date_gmt":"2020-01-30T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql"},"modified":"2020-02-18T14:04:03","modified_gmt":"2020-02-18T11:04:03","slug":"znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","title":{"rendered":"Iepaz\u012b\u0161an\u0101s ar wal-g PostgreSQL dubl\u0113\u0161anas sist\u0113mu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">WAL-G<\/a><\/noindex> \u2014 vienk\u0101r\u0161s un efekt\u012bvs r\u012bks PostgreSQL dubl\u0113\u0161anai m\u0101ko\u0146os. \u0145emot v\u0113r\u0101 savu galveno funkcionalit\u0101ti, tas ir popul\u0101r\u0101 r\u012bka mantinieks <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-e\/wal-e\">WAL-E<\/a><\/noindex>, ta\u010du p\u0101rprogramm\u0113ts Go valod\u0101. Ta\u010du WAL-G ir viena svar\u012bga jauna iez\u012bme \u2014 deltas dubl\u0113jumi. Deltas dubl\u0113jumi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">WAL-G<\/a><\/noindex> glab\u0101 failu lapas, kas ir main\u012bju\u0161\u0101s kop\u0161 iepriek\u0161\u0113j\u0101 dubl\u0113juma versijas. WAL-G \u012bsteno diezgan daudz tehnolo\u0123iju dubl\u0113jumu paraleliz\u0113\u0161anai. WAL-G darbojas daudz \u0101tr\u0101k nek\u0101 WAL-E.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>S\u012bk\u0101ka inform\u0101cija par wal-g darb\u012bbu ir pieejama rakst\u0101: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/415817\/\">Dubl\u0113\u0161anas pa\u0101trin\u0101\u0161ana. Yandex lekcija<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>S3 uzglab\u0101\u0161anas protokols ir k\u013cuvis popul\u0101rs datu glab\u0101\u0161anai. Viens no S3 priek\u0161roc\u012bb\u0101m ir piek\u013cuves iesp\u0113jas caur API, kas \u013cauj organiz\u0113t elast\u012bgu mijiedarb\u012bbu ar uzglab\u0101\u0161anu, tostarp publisko piek\u013cuvi las\u012b\u0161anai, kam\u0113r inform\u0101cijas atjaunin\u0101\u0161ana uzglab\u0101\u0161an\u0101 notiek tikai autoriz\u0113t\u0101m person\u0101m.<\/p>\n<p><\/p>\n<p>Past\u0101v vair\u0101kas atv\u0113rtas un priv\u0101tas uzglab\u0101\u0161anas \u012bstenojumi, kas darbojas p\u0113c S3 protokola. \u0160odien m\u0113s apl\u016bkosim popul\u0101ru risin\u0101jumu nelielu uzglab\u0101\u0161anas sist\u0113mu izveidei \u2014 Minio.<\/p>\n<p><\/p>\n<p>Wal-g test\u0113\u0161anai b\u016bs pietiekams viens PostgreSQL serveris, un k\u0101 S3 aizvietot\u0101js tiks izmantots Minio.<\/p>\n<p><\/p>\n<h2 id=\"server-minio\">Minio servers<\/h2>\n<p><\/p>\n<p>Minio instal\u0113\u0161ana<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">yum -y install yum-plugin-copr\nyum copr enable -y lkiesow\/minio\nyum install -y minio<\/code><\/pre>\n<p><\/p>\n<p>P\u0101rveidojam AccessKey un SecretKey fail\u0101 \/etc\/minio\/minio.conf<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vi \/etc\/minio\/minio.conf<\/code><\/pre>\n<p><\/p>\n<p>Ja neizmantojat nginx pirms Minio, j\u0101izmaina<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">--address 127.0.0.1:9000<\/code><\/pre>\n<p><\/p>\n<pre><code class=\"plaintext\">--address 0.0.0.0:9000<\/code><\/pre>\n<p><\/p>\n<p>Palai\u017eam Minio<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start minio<\/code><\/pre>\n<p><\/p>\n<p>Ieejam Minio t\u012bmek\u013ca saskarn\u0113 <noindex><a rel=\"nofollow\" href=\"http:\/\/ip-adrese-servera-minio:9000\">http:\/\/ip-adrese-servera-minio:9000<\/a><\/noindex> un izveidojam grozu (piem\u0113ram, pg-backups).<\/p>\n<p><\/p>\n<h2 id=\"server-bd\">Datu b\u0101zes serveris<\/h2>\n<p><\/p>\n<p>WAL-G rpm form\u0101t\u0101 es apkopoju es (Antons Pacevs). <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/patsevanton\/wal-g-rpm\">Github<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/copr.fedorainfracloud.org\/coprs\/antonpatsev\/wal-g\/\">Fedora COPR<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Ja jums nav RPM b\u0101zes sist\u0113mas, izmantojiet ofici\u0101lo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g#installation\">instrukciju<\/a><\/noindex> instal\u0113\u0161anas dokument\u0101ciju.<\/p>\n<p><\/p>\n<p>Kop\u0101 ar wal-g bin\u0101ro failu rpm ir iek\u013cauti skripti, kas import\u0113 main\u012bgos no faila \/etc\/wal-g.d\/server-s3.conf.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">backup-fetch.sh\nbackup-list.sh\nbackup-push.sh\nwal-fetch.sh\nwal-g-run.sh\nwal-push.sh<\/code><\/pre>\n<p><\/p>\n<p>Uzst\u0101dam wal-g.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">yum -y install yum-plugin-copr\nyum copr enable -y antonpatsev\/wal-g\nyum install -y wal-g<\/code><\/pre>\n<p><\/p>\n<p>P\u0101rbaud\u0101m wal-g versiju.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">wal-g --version\nwal-g version v0.2.14<\/code><\/pre>\n<p><\/p>\n<p>Redi\u0123\u0113jam \/etc\/wal-g.d\/server-s3.conf p\u0113c savu vajadz\u012bbu.<\/p>\n<p><\/p>\n<p>Konfigur\u0101cijas faili un datu faili, ko izmanto datu b\u0101zes klasteris, tradicion\u0101li tiek glab\u0101ti kop\u0101 klastera datu katalog\u0101, ko parasti sauc <code>PGDATA<\/code><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">#!\/bin\/bash\n\nexport PG_VER=&quot;9.6&quot;\n\nexport WALE_S3_PREFIX=&quot;s3:\/\/pg-backups&quot; # \u0431\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432 S3\nexport AWS_ACCESS_KEY_ID=&quot;xxxx&quot; # AccessKey \u0438\u0437 \/etc\/minio\/minio.conf \nexport AWS_ENDPOINT=&quot;http:\/\/ip-\u0430\u0434\u0440\u0435\u0441-\u0441\u0435\u0440\u0432\u0435\u0440\u0430-minio:9000&quot;\nexport AWS_S3_FORCE_PATH_STYLE=&quot;true&quot;\nexport AWS_SECRET_ACCESS_KEY=&quot;yyyy&quot; # SecretKey \u0438\u0437 \/etc\/minio\/minio.conf\n\nexport PGDATA=\/var\/lib\/pgsql\/$PG_VER\/data\/\nexport PGHOST=\/var\/run\/postgresql\/.s.PGSQL.5432 # \u0421\u043e\u043a\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a PostgreSQL\n\nexport WALG_UPLOAD_CONCURRENCY=2 # \u041a\u043e\u043b-\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043a\u0430\u0447\u043a\u0438 \nexport WALG_DOWNLOAD_CONCURRENCY=2 # \u041a\u043e\u043b-\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f\nexport WALG_UPLOAD_DISK_CONCURRENCY=2 # \u041a\u043e\u043b-\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0434\u043b\u044f \u0437\u0430\u043a\u0430\u0447\u043a\u0438\nexport WALG_DELTA_MAX_STEPS=7\nexport WALG_COMPRESSION_METHOD=brotli # \u041a\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u0436\u0430\u0442\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.\n<\/code><\/pre>\n<p><\/p>\n<p>Konfigur\u0113jot WAL-G, j\u016bs nor\u0101d\u0101t WALG_DELTA_MAX_STEPS \u2014 maksimalo posmu skaitu, par kuru d\u0113\u013c d\u0113lta rezerves kopija ir att\u0101lin\u0101ta no b\u0101zes rezerves kopijas, un nor\u0101d\u0101t d\u0113lta kopiju politiku. J\u016bs varat veikt kopiju no p\u0113d\u0113j\u0101s eso\u0161\u0101s d\u0113lta, vai veikt d\u0113lta no s\u0101kotn\u0113j\u0101 piln\u0101 rezerves kopijas. Tas ir nepiecie\u0161ams gad\u012bjumam, kad j\u016bsu datub\u0101z\u0113 past\u0101v\u012bgi main\u0101s viena un t\u0101 pati datub\u0101zes sast\u0101vda\u013ca, un tie pa\u0161i dati nemit\u012bgi tiek main\u012bti.<\/p>\n<p><\/p>\n<p>Uzst\u0101dam datub\u0101zi.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">yum install -y https:\/\/download.postgresql.org\/pub\/repos\/yum\/reporpms\/EL-7-x86_64\/pgdg-redhat-repo-latest.noarch.rpm\nyum install -y postgresql96 postgresql96-server mc<\/code><\/pre>\n<p><\/p>\n<p>Inicializ\u0113jam datub\u0101zi.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">\/usr\/pgsql-9.6\/bin\/postgresql96-setup initdb\nInitializing database ... OK<\/code><\/pre>\n<p><\/p>\n<p>Ja test\u0113jat uz viena servera, jums j\u0101maina parametra wal_level uz archive PostgreSQL, kas ir maz\u0101ks par 10 versiju, un uz replica, ja PostgreSQL ir 10 versija vai vec\u0101ka.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">wal_level = archive<\/code><\/pre>\n<p><\/p>\n<p>Izveidosim WAL arh\u012bvu d\u0113lta rezerves kopijas ik p\u0113c 60 sekund\u0113m, izmantojot pa\u0161u PostgreSQL. J\u016bsu produkcij\u0101 b\u016bs cita v\u0113rt\u012bba archive_timeout.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">archive_mode = on\narchive_command = '\/usr\/local\/bin\/wal-push.sh %p'\narchive_timeout = 60 # Komanda archive_command tiks izpild\u012bta ik p\u0113c 60 sekund\u0113m.<\/code><\/pre>\n<p><\/p>\n<p>S\u0101kam PostgreSQL<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6<\/code><\/pre>\n<p><\/p>\n<p>Atsevi\u0161\u0137\u0101 konsol\u0113 skat\u0101m PostgreSQL \u017eurn\u0101lus par k\u013c\u016bd\u0101m: (postgresql-Wed.log mainiet uz aktu\u0101lo).<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">tail -fn100 \/var\/lib\/pgsql\/9.6\/data\/pg_log\/postgresql-Wed.log<\/code><\/pre>\n<p><\/p>\n<p>Ieejam psql.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\npsql<\/code><\/pre>\n<p><\/p>\n<p>psql izveidojam datub\u0101zi.<\/p>\n<p><\/p>\n<p>Izveidojam tabulu datub\u0101z\u0113 test1.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">create database test1;<\/code><\/pre>\n<p><\/p>\n<p>P\u0101rsl\u0113dzamies uz datub\u0101zi test.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# c test1;<\/code><\/pre>\n<p><\/p>\n<p>Izveidojam tabulu indexing_table.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">test1=# CREATE TABLE indexing_table(created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW());<\/code><\/pre>\n<p><\/p>\n<p>Datu pievieno\u0161ana.<\/p>\n<p><\/p>\n<p>S\u0101kam datu iel\u0101des procesu. Gaida 10-20 min\u016btes.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">#!\/bin\/bash\n# postgres\nwhile true; do\npsql -U postgres -d test1 -c &quot;INSERT INTO indexing_table(created_at) VALUES (CURRENT_TIMESTAMP);&quot;\nsleep 60;\ndone<\/code><\/pre>\n<p><\/p>\n<p>Oblig\u0101ti veiciet piln\u012bgu rezerves kopiju.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\n\/usr\/local\/bin\/backup-push.sh<\/code><\/pre>\n<p><\/p>\n<p>Skat\u0101m ierakstus tabul\u0101 datub\u0101z\u0113 test1<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">select * from indexing_table;\n2020-01-29 09:41:25.226198+\n2020-01-29 09:42:25.336989+\n2020-01-29 09:43:25.356069+\n2020-01-29 09:44:25.37381+\n2020-01-29 09:45:25.392944+\n2020-01-29 09:46:25.412327+\n2020-01-29 09:47:25.432564+\n2020-01-29 09:48:25.451985+\n2020-01-29 09:49:25.472653+\n2020-01-29 09:50:25.491974+\n2020-01-29 09:51:25.510178+<\/code><\/pre>\n<p><\/p>\n<p>Rindkopa ir pa\u0161reiz\u0113jais laiks.<\/p>\n<p><\/p>\n<h3 id=\"smotrim-spisok-polnyh-bekapov\">Skat\u0101m pilno rezerves kopiju sarakstu<\/h3>\n<p><\/p>\n<pre><code class=\"plaintext\">\/usr\/local\/bin\/backup-list.sh<\/code><\/pre>\n<p><\/p>\n<h3 id=\"testirovanie-vosstanovleniya\">Atjauno\u0161anas test\u0113\u0161ana<\/h3>\n<p><\/p>\n<h4 id=\"polnoe-vosstanovlenie-s-nakatyvaem-vseh-dostupnyh-wal\">Piln\u012bga atjauno\u0161ana, izmantojot visus pieejamos WAL.<\/h4>\n<p><\/p>\n<p>Apturam PostgreSQL.<\/p>\n<p><\/p>\n<p>Izm\u0113rd\u0113jam visu no mapes \/var\/lib\/pgsql\/9.6\/data.<\/p>\n<p><\/p>\n<p>Palai\u017eam skriptu \/usr\/local\/bin\/backup-fetch.sh no lietot\u0101ja postgres.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\n\/usr\/local\/bin\/backup-fetch.sh<\/code><\/pre>\n<p><\/p>\n<p>Rezerves kopijas izguve ir pabeigta.<\/p>\n<p><\/p>\n<p>Pievienojam recovery.conf mapi \/var\/lib\/pgsql\/9.6\/data ar sekojo\u0161o saturu.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">restore_command = '\/usr\/local\/bin\/wal-fetch.sh \"%f\" \"%p\"'<\/code><\/pre>\n<p><\/p>\n<p>Palai\u017eam PostgreSQL. PostgreSQL uzs\u0101ks atjauno\u0161anas procesu no arh\u012bva WAL, un tikai p\u0113c tam datub\u0101ze tiks atv\u0113rta. <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6\ntail -fn100 \/var\/lib\/pgsql\/9.6\/data\/pg_log\/postgresql-Wed.log<\/code><\/pre>\n<p><\/p>\n<h4 id=\"vosstanovlenie-na-opredelennoe-vremya\">Atjauno\u0161ana uz noteiktu laiku.<\/h4>\n<p><\/p>\n<p>Ja v\u0113lamies atjaunot datub\u0101zi l\u012bdz noteiktai min\u016btei, tad recovery.conf pievienojam parametru recovery_target_time \u2014 nor\u0101d\u0101m, uz kuru laiku atjaunot datub\u0101zi.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">restore_command = 'usr\/local\/bin\/wal-fetch.sh \"%f\" \"%p\"'\nrecovery_target_time = '2020-01-29 09:46:25'<\/code><\/pre>\n<p><\/p>\n<p>P\u0113c atjauno\u0161anas apskat\u0101m tabulu indexing_table.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\"> 2020-01-29 09:41:25.226198+00\n 2020-01-29 09:42:25.336989+00\n 2020-01-29 09:43:25.356069+00\n 2020-01-29 09:44:25.37381+00\n 2020-01-29 09:45:25.392944+00<\/code><\/pre>\n<p><\/p>\n<p>Palai\u017eam PostgreSQL. PostgreSQL uzs\u0101ks atjauno\u0161anas procesu no arh\u012bva WAL, un tikai p\u0113c tam datub\u0101ze tiks atv\u0113rta. <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6\ntail -fn100 \/var\/lib\/pgsql\/9.6\/data\/pg_log\/postgresql-Wed.log<\/code><\/pre>\n<p><\/p>\n<h3 id=\"testirovanie\">Test\u0113\u0161ana<\/h3>\n<p><\/p>\n<p>\u0122ener\u0113jam 1GB datub\u0101zi, k\u0101 aprakst\u012bts \u0161eit. <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/ololobus\/5b25c432f208d7eb31051a5f238dffff\">https:\/\/gist.github.com\/ololobus\/5b25c432f208d7eb31051a5f238dffff<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Piepras\u0101m ba\u010dka izm\u0113ru p\u0113c 1GB datu \u0123ener\u0113\u0161anas.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# SELECT pg_size_pretty(pg_database_size('test1'));\npg_size_pretty\n----------------\n1003 MB<\/code><\/pre>\n<p><\/p>\n<p>s4cmd \u2014 bezmaksas komandu r\u012bks darbam ar datiem, kas atrodas Amazon S3 kr\u0101tuv\u0113. Lietder\u012bba ir uzrakst\u012bta Python programm\u0113\u0161anas valod\u0101, un t\u0101d\u0113\u013c var tikt izmantota gan Windows, gan Linux oper\u0113t\u0101jsist\u0113m\u0101s.<\/p>\n<p><\/p>\n<p>Uzst\u0101dam s4cmd.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">pip install s4cmd<\/code><\/pre>\n<p><\/p>\n<h4 id=\"lz4\">LZ4<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">s4cmd --endpoint-url=http:\/\/ip-adrese-servera-minio:9000 --access-key=xxxx --secret-key=yyyy du -r s3:\/\/pg-backups\n840540822       s3:\/\/pg-backups\/wal_005\/\n840 MB lz4 form\u0101t\u0101 tikai WAL \u017eurn\u0101liem\n\nPilns dubl\u0113jums ar lz4 - 1GB datu\ntime backup_push.sh\nreal 0m18.582s\n\nS3 ba\u010dka izm\u0113rs p\u0113c pilna dubl\u0113juma\n\n581480085       s3:\/\/pg-backups\/basebackups_005\/\n842374424   s3:\/\/pg-backups\/wal_005\n581 MB aiz\u0146em pilns dubl\u0113jums.<\/code><\/pre>\n<p><\/p>\n<h4 id=\"lzma\">LZMA<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">P\u0113c 1GB datu \u0123ener\u0113\u0161anas\n338413694       s3:\/\/pg-backups\/wal_005\/\n338 MB \u017eurn\u0101lu lzma form\u0101t\u0101\n\nPilna dubl\u0113juma \u0123ener\u0113\u0161anas laiks\ntime backup_push.sh\nreal    5m25.054s\n\nS3 ba\u010dka izm\u0113rs\n270310495       s3:\/\/pg-backups\/basebackups_005\/\n433485092   s3:\/\/pg-backups\/wal_005\/\n\n270 MB aiz\u0146em pilns dubl\u0113jums lzma form\u0101t\u0101.<\/code><\/pre>\n<p><\/p>\n<h4 id=\"brotli\">Brotli<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">P\u0113c 1GB datu \u0123ener\u0113\u0161anas\n459229886       s3:\/\/pg-backups\/wal_005\/\n459 MB \u017eurn\u0101lu brotli form\u0101t\u0101\n\nPilna dubl\u0113juma \u0123ener\u0113\u0161anas laiks\nreal    0m23.408s\n\nS3 ba\u010dka izm\u0113rs\n312960942       s3:\/\/pg-backups\/basebackups_005\/\n459309262   s3:\/\/pg-backups\/wal_005\/\n\n312 MB aiz\u0146em pilns dubl\u0113jums brotli form\u0101t\u0101.\n<\/code><\/pre>\n<p><\/p>\n<p>Sal\u012bdzin\u0101jums rezult\u0101tiem diagramm\u0101.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Iepaz\u012b\u0161an\u0101s ar wal-g PostgreSQL dubl\u0113\u0161anas sist\u0113mu\" src=\"\/wp-content\/uploads\/2020\/01\/eeb4f6ae485f086cba126de323f900db.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u0101 redzam, Brotli izm\u0113rs ir sal\u012bdzin\u0101ms ar LZMA, bet dubl\u0113jums tiek veikts laika ietvaros LZ4.<\/p>\n<p><\/p>\n<p>Krievu valodas PostgreSQL kopienas \u010dats: <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/pgsql\">https:\/\/t.me\/pgsql<\/a><\/noindex><\/p>\n<p><\/p>\n<p>L\u016bdzu, novietojiet zvaigzni Github, ja izmantojat. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">wal-g<\/a><\/noindex><\/p>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/486188\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>WAL-G \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL \u0432 \u043e\u0431\u043b\u0430\u043a\u0430. \u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 WAL-E, \u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043d\u0430 Go. \u041d\u043e \u0432 WAL-G \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0432\u0430\u0436\u043d\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u2014 \u0434\u0435\u043b\u044c\u0442\u0430-\u043a\u043e\u043f\u0438\u0438. \u0414\u0435\u043b\u044c\u0442\u0430-\u043a\u043e\u043f\u0438\u0438 WAL-G \u0445\u0440\u0430\u043d\u044f\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438. \u0412 WAL-G \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55885,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55884","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"WAL-G \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL \u0432 \u043e\u0431\u043b\u0430\u043a\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 wal-g \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0435\u043a\u0430\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"WAL-G \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL \u0432 \u043e\u0431\u043b\u0430\u043a\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-30T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Iepaz\u012b\u0161an\u0101s ar wal-g PostgreSQL rezerves kop\u0113\u0161anas sist\u0113mu | ProHoster","description":"WAL-G \u2014 vienk\u0101r\u0161s un efekt\u012bvs r\u012bks PostgreSQL dubl\u0113\u0161anai m\u0101ko\u0146os.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 wal-g \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0435\u043a\u0430\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL | ProHoster","og:description":"WAL-G \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PostgreSQL \u0432 \u043e\u0431\u043b\u0430\u043a\u0430.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-30T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55884","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:35:40","updated":"2022-09-28 13:58:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/55884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=55884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/55884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/55885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=55884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=55884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=55884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}