{"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\/fr\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","title":{"rendered":"Introduction au syst\u00e8me de sauvegarde wal-g pour 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> est un outil simple et efficace pour la sauvegarde de PostgreSQL dans le cloud. En termes de fonctionnalit\u00e9s principales, il est l'h\u00e9ritier de l'outil populaire <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-e\/wal-e\">WAL-E<\/a><\/noindex>, mais r\u00e9\u00e9crit en Go. Cependant, WAL-G a une nouvelle fonctionnalit\u00e9 importante : les copies delta. Les copies delta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">WAL-G<\/a><\/noindex> stockent les pages de fichiers qui ont chang\u00e9 par rapport \u00e0 la version pr\u00e9c\u00e9dente de la sauvegarde. WAL-G utilise de nombreuses technologies pour le parall\u00e9lisme des sauvegardes. WAL-G fonctionne beaucoup plus vite que WAL-E.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Vous pouvez lire les d\u00e9tails du fonctionnement de WAL-G dans l'article : <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/415817\/\">Acc\u00e9l\u00e9rer la sauvegarde. Conf\u00e9rence de Yandex<\/a><\/noindex> <\/p>\n<p><\/p>\n<p>Le protocole de stockage S3 est devenu populaire pour le stockage de donn\u00e9es. Un des avantages du S3 est la possibilit\u00e9 d'acc\u00e8s via API, permettant une interaction flexible avec le stockage, y compris un acc\u00e8s public en lecture, tandis que la mise \u00e0 jour des informations dans le stockage ne peut \u00eatre effectu\u00e9e que par des utilisateurs authentifi\u00e9s.<\/p>\n<p><\/p>\n<p>Il existe plusieurs impl\u00e9mentations, tant ouvertes que priv\u00e9es, de stockage fonctionnant selon le protocole S3. Aujourd'hui, nous allons examiner une solution populaire pour l'organisation de petits stockages : Minio.<\/p>\n<p><\/p>\n<p>Pour tester WAL-G, un serveur PostgreSQL suffira, et nous utiliserons Minio comme remplacement du S3.<\/p>\n<p><\/p>\n<h2 id=\"server-minio\">Serveur Minio<\/h2>\n<p><\/p>\n<p>Installation 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>Modifiez AccessKey et SecretKey dans \/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 vous n'utilisez pas nginx devant Minio, vous devez changer<\/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>D\u00e9marrez Minio<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start minio<\/code><\/pre>\n<p><\/p>\n<p>Acc\u00e9dez \u00e0 l'interface web de Minio <noindex><a rel=\"nofollow\" href=\"http:\/\/ip-adresse-serveur-minio:9000\">http:\/\/adresse-ip-du-serveur-minio:9000<\/a><\/noindex> et cr\u00e9ez un bucket (par exemple, pg-backups).<\/p>\n<p><\/p>\n<h2 id=\"server-bd\">Serveur de DB<\/h2>\n<p><\/p>\n<p>Je compile 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>Pour ceux qui n'ont pas de syst\u00e8me bas\u00e9 sur RPM, utilisez le guide officiel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g#installation\">l'instruction<\/a><\/noindex> pour l'installation.<\/p>\n<p><\/p>\n<p>Avec le binaire de WAL-G en rpm, il y a des scripts qui importent des variables depuis le fichier \/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>Installez 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>V\u00e9rifiez la version 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>Modifiez \/etc\/wal-g.d\/server-s3.conf selon vos besoins.<\/p>\n<p><\/p>\n<p>Les fichiers de configuration et les fichiers de donn\u00e9es utilis\u00e9s par le cluster de base de donn\u00e9es sont traditionnellement stock\u00e9s ensemble dans le r\u00e9pertoire de donn\u00e9es du cluster, g\u00e9n\u00e9ralement appel\u00e9 <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>Lors de la configuration de WAL-G, vous sp\u00e9cifiez WALG_DELTA_MAX_STEPS \u2014 le nombre d'\u00e9tapes maximal entre une sauvegarde delta et une sauvegarde de base, et vous d\u00e9finissez la politique de copie delta. Vous pouvez soit effectuer une copie \u00e0 partir de la derni\u00e8re delta existante, soit cr\u00e9er un delta \u00e0 partir de la premi\u00e8re sauvegarde compl\u00e8te. Cela est n\u00e9cessaire dans le cas o\u00f9 une m\u00eame partie de votre base de donn\u00e9es change constamment, avec des donn\u00e9es toujours en modification.<\/p>\n<p><\/p>\n<p>Installons la base de donn\u00e9es.<\/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>Initialisons la base de donn\u00e9es.<\/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 vous testez sur un seul serveur, vous devez reconfigurer le param\u00e8tre wal_level sur archive pour PostgreSQL version inf\u00e9rieure \u00e0 10, et en replica pour PostgreSQL version 10 et sup\u00e9rieure.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">wal_level = archive<\/code><\/pre>\n<p><\/p>\n<p>Nous allons sauvegarder les archives WAL toutes les 60 secondes \u00e0 l'aide de PostgreSQL lui-m\u00eame. En production, vous aurez une autre valeur pour 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 # La commande archive_command sera ex\u00e9cut\u00e9e toutes les 60 secondes.<\/code><\/pre>\n<p><\/p>\n<p>D\u00e9marrons PostgreSQL<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">systemctl start postgresql-9.6<\/code><\/pre>\n<p><\/p>\n<p>Dans une console s\u00e9par\u00e9e, v\u00e9rifiez les journaux de PostgreSQL pour des erreurs : (remplacez postgresql-Wed.log par le journal actuel).<\/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>Acc\u00e9dons \u00e0 psql.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">su - postgres\npsql<\/code><\/pre>\n<p><\/p>\n<p>Dans psql, cr\u00e9ons la base de donn\u00e9es.<\/p>\n<p><\/p>\n<p>Cr\u00e9ons une table dans la base de donn\u00e9es test1.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">create database test1;<\/code><\/pre>\n<p><\/p>\n<p>Passons \u00e0 la base de donn\u00e9es test.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# c test1;<\/code><\/pre>\n<p><\/p>\n<p>Cr\u00e9ons la table 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>Ajout des donn\u00e9es.<\/p>\n<p><\/p>\n<p>Lan\u00e7ons l'insertion des donn\u00e9es. Attendez 10-20 minutes.<\/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>Faites absolument une sauvegarde compl\u00e8te.<\/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>Consultons les enregistrements dans la table de la base 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 ligne repr\u00e9sente l'heure actuelle.<\/p>\n<p><\/p>\n<h3 id=\"smotrim-spisok-polnyh-bekapov\">Consultons la liste des sauvegardes compl\u00e8tes.<\/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 de restauration<\/h3>\n<p><\/p>\n<h4 id=\"polnoe-vosstanovlenie-s-nakatyvaem-vseh-dostupnyh-wal\">Restauration compl\u00e8te en appliquant toutes les WAL disponibles.<\/h4>\n<p><\/p>\n<p>Arr\u00eatons PostgreSQL.<\/p>\n<p><\/p>\n<p>Supprimons tout dans le dossier \/var\/lib\/pgsql\/9.6\/data.<\/p>\n<p><\/p>\n<p>Ex\u00e9cutons le script \/usr\/local\/bin\/backup-fetch.sh \u00e0 partir de l'utilisateur 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>Extraction de la sauvegarde termin\u00e9e.<\/p>\n<p><\/p>\n<p>Ajoutez recovery.conf dans le dossier \/var\/lib\/pgsql\/9.6\/data avec le contenu suivant.<\/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>D\u00e9marrons PostgreSQL. PostgreSQL lancera le processus de restauration \u00e0 partir des WAL archiv\u00e9, et seulement apr\u00e8s cela, la base sera ouverte. <\/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\">Restauration \u00e0 un moment d\u00e9fini.<\/h4>\n<p><\/p>\n<p>Si nous voulons restaurer la base jusqu'\u00e0 une minute pr\u00e9cise, nous ajoutons le param\u00e8tre recovery_target_time dans recovery.conf pour indiquer \u00e0 quel moment restaurer la base.<\/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>Apr\u00e8s la restauration, nous consultons la table 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>D\u00e9marrons PostgreSQL. PostgreSQL lancera le processus de restauration \u00e0 partir des WAL archiv\u00e9, et seulement apr\u00e8s cela, la base sera ouverte. <\/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>Nous g\u00e9n\u00e9rons une base de donn\u00e9es de 1 Go comme d\u00e9crit ici. <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>Nous demandons la taille du bucket apr\u00e8s la g\u00e9n\u00e9ration de 1 Go de donn\u00e9es.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">postgres=# SELECT pg_size_pretty(pg_database_size('test1'));\npg_size_pretty\n----------------\n1003 Mo<\/code><\/pre>\n<p><\/p>\n<p>s4cmd est un outil en ligne de commande gratuit pour travailler avec des donn\u00e9es stock\u00e9es dans Amazon S3. L'utilitaire est \u00e9crit en python, ce qui lui permet d'\u00eatre utilis\u00e9 aussi bien sous Windows que sous Linux.<\/p>\n<p><\/p>\n<p>Installons 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-adresse-du-serveur-minio:9000 --access-key=xxxx --secret-key=yyyy du -r s3:\\\/\\\/pg-backups\n840540822       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\n840 Mo au format lz4 uniquement pour les logs WAL\n\nSauvegarde compl\u00e8te avec lz4 - 1 Go de donn\u00e9es\ntime backup_push.sh\nreal 0m18.582s\n\nTaille du bucket S3 apr\u00e8s la sauvegarde compl\u00e8te\n\n581480085       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\n842374424   s3:\\\/\\\/pg-backups\\\/wal_005\n581 Mo pour la sauvegarde compl\u00e8te<\/code><\/pre>\n<p><\/p>\n<h4 id=\"lzma\">LZMA<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Apr\u00e8s la g\u00e9n\u00e9ration de 1 Go de donn\u00e9es\n338413694       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\n338 Mo de logs au format lzma\n\nTemps de g\u00e9n\u00e9ration de la sauvegarde compl\u00e8te\ntime backup_push.sh\nreal    5m25.054s\n\nTaille du bucket dans S3\n270310495       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\n433485092   s3:\\\/\\\/pg-backups\\\/wal_005\\\/\n\n270 Mo pour la sauvegarde compl\u00e8te au format lzma<\/code><\/pre>\n<p><\/p>\n<h4 id=\"brotli\">Brotli<\/h4>\n<p><\/p>\n<pre><code class=\"plaintext\">Apr\u00e8s la g\u00e9n\u00e9ration de 1 Go de donn\u00e9es\n459229886       s3:\\\/\\\/pg-backups\\\/wal_005\\\/\n459 Mo de logs au format brotli\n\nTemps de g\u00e9n\u00e9ration de la sauvegarde compl\u00e8te\nreal    0m23.408s\n\nTaille du bucket dans S3\n312960942       s3:\\\/\\\/pg-backups\\\/basebackups_005\\\/\n459309262   s3:\\\/\\\/pg-backups\\\/wal_005\\\/\n\n312 Mo pour la sauvegarde compl\u00e8te au format brotli\n<\/code><\/pre>\n<p><\/p>\n<p>Comparaison des r\u00e9sultats sur le graphique.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Introduction au syst\u00e8me de sauvegarde wal-g pour PostgreSQL\" src=\"\/wp-content\/uploads\/2020\/01\/eeb4f6ae485f086cba126de323f900db.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Comme nous le voyons, Brotli est comparable en taille \u00e0 LZMA, mais la sauvegarde s'effectue en temps de LZ4.<\/p>\n<p><\/p>\n<p>Chat de la communaut\u00e9 PostgreSQL francophone : <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/pgsql\">https:\/\/t.me\/pgsql<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Veuillez mettre une \u00e9toile sur Github si vous utilisez. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wal-g\/wal-g\">wal-g<\/a><\/noindex><\/p>\n<p>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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\udd47 Introduction au syst\u00e8me de sauvegarde wal-g pour PostgreSQL | ProHoster","description":"WAL-G est un outil simple et efficace pour la sauvegarde de PostgreSQL dans le cloud.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/znakomstvo-s-wal-g-sistemoj-bekapirovaniya-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/55884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=55884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/55885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=55884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=55884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=55884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}