{"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\/es\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","title":{"rendered":"Introducci\u00f3n al sistema de respaldo wal-g para 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 una herramienta simple y efectiva para la copia de seguridad de PostgreSQL en la nube. En su funcionalidad b\u00e1sica, es un heredero de la popular herramienta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-e\/wal-e\">WAL-E<\/a><\/noindex>, pero reescrita en Go. Sin embargo, WAL-G tiene una caracter\u00edstica nueva importante: copias delta. Las copias delta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">WAL-G<\/a><\/noindex> almacenan las p\u00e1ginas de archivos que han cambiado desde la versi\u00f3n anterior de la copia de seguridad. WAL-G implementa muchas tecnolog\u00edas para paralelizar las copias de seguridad. WAL-G funciona mucho m\u00e1s r\u00e1pido que WAL-E.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Puedes leer m\u00e1s sobre el funcionamiento de WAL-G en el art\u00edculo: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/415817\/\">Acelerando la copia de seguridad. Charla de Yandex<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>El protocolo de almacenamiento S3 se ha vuelto popular para almacenar datos. Una de las ventajas de S3 es la capacidad de acceso a trav\u00e9s de API, lo que permite organizar una interacci\u00f3n flexible con el almacenamiento, incluyendo acceso p\u00fablico de lectura, mientras que la actualizaci\u00f3n de la informaci\u00f3n en el almacenamiento solo es posible para personas autorizadas.<\/p>\n<p><\/p>\n<p>Existen varias implementaciones tanto abiertas como privadas de almacenes que funcionan con el protocolo S3. Hoy revisaremos una soluci\u00f3n popular para la organizaci\u00f3n de peque\u00f1os almacenes: Minio.<\/p>\n<p><\/p>\n<p>Para probar WAL-G, se necesita un servidor PostgreSQL y Minio se utiliza como sustituto de S3.<\/p>\n<p><\/p>\n<h2 id=\"server-minio\">Servidor Minio<\/h2>\n<p><\/p>\n<p>Instalaci\u00f3n de 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>Edita AccessKey y SecretKey en \/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>Si no vas a usar nginx delante de Minio, debes cambiar<\/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>Iniciamos Minio<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start minio<\/code><\/pre>\n<p><\/p>\n<p>Accedemos a la interfaz web de Minio <noindex><a rel=\"nofollow\" href=\"http:\/\/ip-direcci\u00f3n-servidor-minio:9000\">http:\/\/ip-direcci\u00f3n-servidor-minio:9000<\/a><\/noindex> y creamos un bucket (por ejemplo, pg-backups).<\/p>\n<p><\/p>\n<h2 id=\"server-bd\">Servidor de Bases de Datos<\/h2>\n<p><\/p>\n<p>Compilo WAL-G en rpm (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>Si no tienes un sistema basado en RPM, utiliza la oficial <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g#installation\">gu\u00eda<\/a><\/noindex> para la instalaci\u00f3n.<\/p>\n<p><\/p>\n<p>Junto con el binario de WAL-G en rpm, hay scripts que importan variables del archivo \/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>Instalamos 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>Verificamos la versi\u00f3n de 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>Edita \/etc\/wal-g.d\/server-s3.conf seg\u00fan tus necesidades.<\/p>\n<p><\/p>\n<p>Los archivos de configuraci\u00f3n y los archivos de datos utilizados por el cl\u00faster de bases de datos, tradicionalmente se almacenan juntos en el directorio de datos del cl\u00faster, que com\u00fanmente se llama <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>Al configurar WAL-G, especificas WALG_DELTA_MAX_STEPS: el n\u00famero de pasos que separa el delta-backup del back-up base, y defines la pol\u00edtica de delta-copy. Puedes hacer una copia con el \u00faltimo delta existente o crear un delta a partir del back-up completo original. Esto es necesario en caso de que una parte de tu base de datos cambie constantemente con los mismos datos.<\/p>\n<p><\/p>\n<p>Instalamos la base de datos.<\/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>Inicializamos la base de datos.<\/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>Si pruebas en un solo servidor, debes reconfigurar el par\u00e1metro wal_level a archive para PostgreSQL de versi\u00f3n menor a 10, y a replica para versiones 10 y mayores de PostgreSQL.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">wal_level = archive<\/code><\/pre>\n<p><\/p>\n<p>Realizaremos la copia de seguridad de los archivos WAL cada 60 segundos mediante PostgreSQL. En producci\u00f3n tendr\u00e1s un valor diferente para 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 # Se ejecutar\u00e1 el comando archive_command cada 60 segundos.<\/code><\/pre>\n<p><\/p>\n<p>Iniciamos PostgreSQL<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6<\/code><\/pre>\n<p><\/p>\n<p>En una consola separada, revisamos los registros de PostgreSQL en busca de errores: (cambia postgresql-Wed.log por el actual).<\/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>Accedemos a psql.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\npsql<\/code><\/pre>\n<p><\/p>\n<p>Creamos una base de datos en psql.<\/p>\n<p><\/p>\n<p>Creamos una tabla en la base de datos test1.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">create database test1;<\/code><\/pre>\n<p><\/p>\n<p>Cambiamos a la base de datos test.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# c test1;<\/code><\/pre>\n<p><\/p>\n<p>Creamos la tabla 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>A\u00f1adiendo datos.<\/p>\n<p><\/p>\n<p>Iniciamos la inserci\u00f3n de datos. Esperamos de 10 a 20 minutos.<\/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>Aseg\u00farate de hacer una copia de seguridad completa.<\/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>Vemos los registros en la tabla en la base de datos 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 fila representa la hora actual.<\/p>\n<p><\/p>\n<h3 id=\"smotrim-spisok-polnyh-bekapov\">Revisamos la lista de copias de seguridad completas.<\/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\">Prueba de recuperaci\u00f3n<\/h3>\n<p><\/p>\n<h4 id=\"polnoe-vosstanovlenie-s-nakatyvaem-vseh-dostupnyh-wal\">Recuperaci\u00f3n completa aplicando todos los WAL disponibles.<\/h4>\n<p><\/p>\n<p>Detenemos PostgreSQL.<\/p>\n<p><\/p>\n<p>Eliminamos todo en la carpeta \/var\/lib\/pgsql\/9.6\/data.<\/p>\n<p><\/p>\n<p>Ejecutamos el script \/usr\/local\/bin\/backup-fetch.sh como el usuario 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>La extracci\u00f3n de la copia de seguridad se complet\u00f3.<\/p>\n<p><\/p>\n<p>Agregamos recovery.conf en la carpeta \/var\/lib\/pgsql\/9.6\/data con el siguiente contenido.<\/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>Iniciamos PostgreSQL. PostgreSQL iniciar\u00e1 el proceso de recuperaci\u00f3n desde los archivos WAL archivados, y solo entonces se abrir\u00e1 la base de datos. <\/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\">Recuperaci\u00f3n a un momento espec\u00edfico.<\/h4>\n<p><\/p>\n<p>Si queremos restaurar la base de datos a un momento espec\u00edfico, a\u00f1adimos el par\u00e1metro recovery_target_time en recovery.conf, especificando a qu\u00e9 hora restaurar la base de datos.<\/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>Despu\u00e9s de la restauraci\u00f3n, revisamos la tabla 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>Iniciamos PostgreSQL. PostgreSQL iniciar\u00e1 el proceso de recuperaci\u00f3n desde los archivos WAL archivados, y solo entonces se abrir\u00e1 la base de datos. <\/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\">Pruebas<\/h3>\n<p><\/p>\n<p>Generamos una base de datos de 1GB como se describe aqu\u00ed. <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>Solicitamos el tama\u00f1o del bucket despu\u00e9s de generar 1GB de datos.<\/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 es una herramienta gratuita de l\u00ednea de comandos para trabajar con datos almacenados en Amazon S3. La utilidad est\u00e1 escrita en Python, lo que permite su uso tanto en Windows como en Linux.<\/p>\n<p><\/p>\n<p>Instalamos 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-direcci\u00f3n-del-servidor-minio:9000 --access-key=xxxx --secret-key=yyyy du -r s3:\\\/\\\/pg-backups\n840540822       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\\n840 MB en formato lz4 solo de los registros WAL\n\nBackup completo con lz4 - 1GB de datos\ntime backup_push.sh\nreal 0m18.582s\n\nTama\u00f1o del bucket S3 despu\u00e9s del backup completo\n\n581480085       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\\n842374424   s3:\\\/\\\/pg-backups\\\/wal_005\\n581 MB ocupa el backup completo<\/code><\/pre>\n<p><\/p>\n<h4 id=\"lzma\">LZMA<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Despu\u00e9s de generar 1GB de datos\n338413694       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\\n338 MB de registros en formato lzma\n\nTiempo de generaci\u00f3n del backup completo\ntime backup_push.sh\nreal    5m25.054s\n\nTama\u00f1o del bucket en S3\n270310495       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\\n433485092   s3:\\\/\\\/pg-backups\\\/wal_005\\\/\\n\n270 MB ocupa el backup completo en formato lzma<\/code><\/pre>\n<p><\/p>\n<h4 id=\"brotli\">Brotli<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Despu\u00e9s de generar 1GB de datos\n459229886       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\\n459 MB de registros en formato brotli\n\nTiempo de generaci\u00f3n del backup completo\nreal    0m23.408s\n\nTama\u00f1o del bucket en S3\n312960942       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\\n459309262   s3:\\\/\\\/pg-backups\\\/wal_005\\\/\\n\n312 MB ocupa el backup completo en formato brotli\n<\/code><\/pre>\n<p><\/p>\n<p>Comparaci\u00f3n de los resultados en el gr\u00e1fico.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Introducci\u00f3n al sistema de respaldo wal-g para PostgreSQL.\" src=\"\/wp-content\/uploads\/2020\/01\/eeb4f6ae485f086cba126de323f900db.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Como vemos, Brotli es comparable en tama\u00f1o con LZMA, pero el backup se realiza en un tiempo similar a LZ4.<\/p>\n<p><\/p>\n<p>Chat de la comunidad de habla rusa de PostgreSQL: <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/pgsql\">https:\/\/t.me\/pgsql<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Por favor, d\u00e9jenos una estrella en Github si utiliza <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">wal-g<\/a><\/noindex><\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Introducci\u00f3n al sistema de Backup wal-g para PostgreSQL | ProHoster","description":"WAL-G es una herramienta sencilla y eficaz para realizar copias de seguridad de PostgreSQL en la nube.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/55884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=55884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/55884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/55885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=55884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=55884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=55884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}