{"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\/it\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","title":{"rendered":"Introduzione al sistema di backup wal-g per PostgreSQL","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 uno strumento semplice ed efficace per il backup di PostgreSQL nel cloud. Nella sua funzionalit\u00e0 principale \u00e8 l'erede di un popolare strumento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-e\/wal-e\">WAL-E<\/a><\/noindex>, riscritto in Go. Tuttavia, WAL-G ha una nuova caratteristica importante: le copie delta. Le copie delta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">WAL-G<\/a><\/noindex> memorizzano le pagine dei file che sono cambiate dalla versione precedente del backup. WAL-G implementa molte tecnologie per il parallelismo dei backup. WAL-G funziona molto pi\u00f9 velocemente di WAL-E.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Puoi leggere maggiori dettagli sul funzionamento di wal-g nell'articolo: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/415817\/\">Accelerando il backup. Lezione di Yandex<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>Il protocollo di archiviazione S3 \u00e8 diventato popolare per la memorizzazione dei dati. Uno dei vantaggi di S3 \u00e8 la possibilit\u00e0 di accesso tramite API, che consente di organizzare un'interazione flessibile con lo storage, inclusa l'accesso pubblico in lettura, mentre l'aggiornamento delle informazioni nello storage avviene solo da parte di persone autorizzate.<\/p>\n<p><\/p>\n<p>Esistono diverse implementazioni sia aperte che private di storage che operano seguendo il protocollo S3. Oggi esamineremo una soluzione popolare per l'organizzazione di piccoli storage: Minio.<\/p>\n<p><\/p>\n<p>Per testare wal-g sar\u00e0 sufficiente un server PostgreSQL, mentre si utilizzer\u00e0 Minio come sostituto di S3.<\/p>\n<p><\/p>\n<h2 id=\"server-minio\">Server Minio<\/h2>\n<p><\/p>\n<p>Installazione di Minio<\/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>Modifica AccessKey e SecretKey in \/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>Se non utilizzi nginx davanti a Minio, dovrai modificare<\/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>Avviamo Minio<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start minio<\/code><\/pre>\n<p><\/p>\n<p>Accediamo all'interfaccia web di Minio <noindex><a rel=\"nofollow\" href=\"http:\/\/ip-indirizzo-server-minio:9000\">http:\/\/ip-address-of-minio-server:9000<\/a><\/noindex> e creiamo un bucket (ad esempio, pg-backups).<\/p>\n<p><\/p>\n<h2 id=\"server-bd\">Server DB<\/h2>\n<p><\/p>\n<p>Compilo WAL-G in rpm io stesso (Anton Patsev). <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>Chi non ha un sistema basato su RPM utilizzi la documentazione ufficiale <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g#installation\">istruzione<\/a><\/noindex> per l'installazione.<\/p>\n<p><\/p>\n<p>Insieme al binario wal-g in rpm ci sono script che importano le variabili dal file \/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>Installa 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>Controlliamo la versione di wal-g.<\/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>Modifica \/etc\/wal-g.d\/server-s3.conf secondo le tue esigenze.<\/p>\n<p><\/p>\n<p>I file di configurazione e i file dati utilizzati dal cluster del database sono tradizionalmente memorizzati insieme nella cartella dati del cluster, che di solito viene chiamata <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>Quando configuri WAL-G, specifichi WALG_DELTA_MAX_STEPS \u2014 il numero massimo di passi a cui pu\u00f2 distaccarsi dal backup base il backup delta, e imposti la politica della copia delta. O fai una copia dall'ultima delta esistente, o crei una delta dal backup completo iniziale. Questo \u00e8 necessario nel caso in cui nella tua database cambi sempre la stessa componente del DB, gli stessi dati vengono costantemente modificati.<\/p>\n<p><\/p>\n<p>Installiamo il DB.<\/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>Inizializziamo il db.<\/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>Se stai testando su un server, devi riconfigurare il parametro wal_level su archive per PostgreSQL inferiore alla versione 10, e replica per PostgreSQL versione 10 e superiore.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">wal_level = archive<\/code><\/pre>\n<p><\/p>\n<p>Effettuiamo backup degli archivi WAL ogni 60 secondi usando PostgreSQL stesso. In produzione avrai un valore diverso per 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 # Ogni 60 secondi verr\u00e0 eseguita la comando archive_command.<\/code><\/pre>\n<p><\/p>\n<p>Avviamo PostgreSQL<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6<\/code><\/pre>\n<p><\/p>\n<p>In una console separata, controlliamo i log di PostgreSQL per eventuali errori: (sostituisci postgresql-Wed.log con quello attuale).<\/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>Accediamo a psql.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\npsql<\/code><\/pre>\n<p><\/p>\n<p>In psql creiamo il DB.<\/p>\n<p><\/p>\n<p>Creiamo una tabella nel db test1.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">create database test1;<\/code><\/pre>\n<p><\/p>\n<p>Passiamo al db test.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# c test1;<\/code><\/pre>\n<p><\/p>\n<p>Creiamo la tabella 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>Aggiunta di dati.<\/p>\n<p><\/p>\n<p>Iniziamo a inserire dati. Aspetta 10-20 minuti.<\/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>Assicurati di fare un backup completo.<\/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>Controlliamo le registrazioni nella tabella del DB 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>La riga rappresenta l'ora attuale.<\/p>\n<p><\/p>\n<h3 id=\"smotrim-spisok-polnyh-bekapov\">Controlliamo l'elenco dei backup completi<\/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\">Test di ripristino<\/h3>\n<p><\/p>\n<h4 id=\"polnoe-vosstanovlenie-s-nakatyvaem-vseh-dostupnyh-wal\">Ripristino completo con l'applicazione di tutti i WAL disponibili.<\/h4>\n<p><\/p>\n<p>Ferma PostgreSQL.<\/p>\n<p><\/p>\n<p>Cancella tutto dalla cartella \/var\/lib\/pgsql\/9.6\/data.<\/p>\n<p><\/p>\n<p>Esegui lo script \/usr\/local\/bin\/backup-fetch.sh come utente 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>Estrazione del backup completata.<\/p>\n<p><\/p>\n<p>Aggiungi recovery.conf nella cartella \/var\/lib\/pgsql\/9.6\/data con il seguente contenuto.<\/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>Avviamo PostgreSQL. PostgreSQL avvier\u00e0 il processo di recovery dagli WAL archiviati, e solo allora il database si aprir\u00e0. <\/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\">Ripristino a un momento specifico.<\/h4>\n<p><\/p>\n<p>Se vogliamo ripristinare il database a un minuto specifico, allora aggiungiamo il parametro recovery_target_time in recovery.conf per indicare a quale tempo ripristinare il database.<\/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>Dopo il ripristino, controlliamo la tabella 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>Avviamo PostgreSQL. PostgreSQL avvier\u00e0 il processo di recovery dagli WAL archiviati, e solo allora il database si aprir\u00e0. <\/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<\/h3>\n<p><\/p>\n<p>Generiamo un database da 1GB come descritto qui <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>Richiediamo la dimensione del bucket dopo la generazione di 1GB di dati.<\/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 uno strumento gratuito da riga di comando per lavorare con i dati archiviati in Amazon S3. Questa utility \u00e8 scritta in Python, il che la rende utilizzabile sia su sistemi operativi Windows che Linux.<\/p>\n<p><\/p>\n<p>Installiamo 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-address-del-server-minio:9000 --access-key=xxxx --secret-key=yyyy du -r s3:\/\/pg-backups\n840540822       s3:\/\/pg-backups\/wal_005\/\n840 MB in formato lz4 solo log WAL\n\nBackup completo con lz4 - 1GB di dati\ntime backup_push.sh\nreal 0m18.582s\n\nDimensione del bucket S3 dopo il backup completo\n\n581480085       s3:\/\/pg-backups\/basebackups_005\/\n842374424   s3:\/\/pg-backups\/wal_005\n581 MB occupa il backup completo<\/code><\/pre>\n<p><\/p>\n<h4 id=\"lzma\">LZMA<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Dopo la generazione di 1GB di dati\n338413694       s3:\/\/pg-backups\/wal_005\/\n338 MB di log in formato lzma\n\nTempo di generazione del backup completo\ntime backup_push.sh\nreal    5m25.054s\n\nDimensione del bucket in S3\n270310495       s3:\/\/pg-backups\/basebackups_005\/\n433485092   s3:\/\/pg-backups\/wal_005\/\n\n270 MB occupa il backup completo in formato lzma<\/code><\/pre>\n<p><\/p>\n<h4 id=\"brotli\">Brotli<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Dopo la generazione di 1GB di dati\n459229886       s3:\/\/pg-backups\/wal_005\/\n459 MB di log in formato brotli\n\nTempo di generazione del backup completo\ntime backup_push.sh\nreal    0m23.408s\n\nDimensione del bucket in S3\n312960942       s3:\/\/pg-backups\/basebackups_005\/\n459309262   s3:\/\/pg-backups\/wal_005\/\n\n312 MB occupa il backup completo in formato brotli\n<\/code><\/pre>\n<p><\/p>\n<p>Confronto dei risultati nel grafico.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Introduzione al sistema di backup wal-g per PostgreSQL\" src=\"\/wp-content\/uploads\/2020\/01\/eeb4f6ae485f086cba126de323f900db.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Come vediamo, Brotli \u00e8 comparabile in dimensione a LZMA, ma il backup viene eseguito in un tempo simile a LZ4.<\/p>\n<p><\/p>\n<p>Chat della comunit\u00e0 di lingua russa PostgreSQL: <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/pgsql\">https:\/\/t.me\/pgsql<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Per favore, metti una stella su Github se lo utilizzi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">wal-g<\/a><\/noindex><\/p>\n<p>Fonte: <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.0.1 - 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\/it\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Introduzione al sistema di backup wal-g di PostgreSQL | ProHoster","description":"WAL-G \u2014 uno strumento semplice ed efficace per il backup di PostgreSQL su cloud.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/55884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=55884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/55884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/55885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=55884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=55884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=55884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}