Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t1IPt-00FZsc-0e for pgsql-general@arkaria.postgresql.org; Thu, 17 Oct 2024 04:47:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t1IPq-00G8nP-UJ for pgsql-general@arkaria.postgresql.org; Thu, 17 Oct 2024 04:47:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t1IPq-00G8n3-Ej for pgsql-general@lists.postgresql.org; Thu, 17 Oct 2024 04:47:14 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t1IPn-001Ieb-Pl for pgsql-general@lists.postgresql.org; Thu, 17 Oct 2024 04:47:13 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-a9a2cdc6f0cso62910766b.2 for ; Wed, 16 Oct 2024 21:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729140429; x=1729745229; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=RcAlRD+kuJPzzi1Nlku3o+bECLSm4tuj+pa+NMszvL8=; b=j84n4JSHF1RcoPkluZ1F9icov74ZzhPbPQB1bwbeSmI8sksVT20KsyDyjguXVbNFK/ sejWp0ar9O1ZTBFvNlbYnG1Vg/qiDQoS0XRzLbt/TUc4Q279Z6l2TFsTf94iz7bvHxOo Jgq/6AX/Kqz37rmfxFF23kW21n/Z7jjSgVIR7CYBpwfxgXlcSyBYMEhPA+06TfeegE4b MSAMjGkVprEivHng91rcAEgPPLygMzJDmOkqlF5pft7IOjspPox+PhsS3TzshJGzHVqp sq5c/nSuKH6aPMiVa3kzzBzObU7ge06BLZ9tRtASurbLQ3jRiFEy6j+QXfDRjCFjlt/R CdXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729140429; x=1729745229; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=RcAlRD+kuJPzzi1Nlku3o+bECLSm4tuj+pa+NMszvL8=; b=KXSlPVPQNYD8G92zBM7rV9IUzs2hRm8wR7a8LE3ORmG+DfqwyKP3b4hic6aiLpCAHj ZmgN0D+aYbmy9XS5Dx0Re/GCJHrPJljswVDYirDExOY7PHt6t/jL8K0D9eM0ISl4tae5 gomnOitHUhHO+Rp9LMEAYpOnkSV6biwg54O26MP6RCu04KKrzxVNFPHILGGSHK6OqYJv 40+jsiMZEsLMQTrAgI2P84ws2GY4yjFkojm2yEIBQE6Zy4gy9gr9l2jtKkdzKzMlqVAl tzyPI5T5RDdCPuhE/NMlxzHd1tiiRUcLnn4X3tAhnSlNyp/8wnjSNohGvX7vPk2P9V4+ e0/w== X-Gm-Message-State: AOJu0YxdrE5SKWzoSs+QP23GpzaBCFoWcNaq/hDEV3mphqtbHZ2XJS7t 0XDDZN6VUDeVGz/hTE3n7/BwzAQkmQMvW6/8OpOS86tf5K68hmPiGtwa6xymbzRuBsOB9ADiP35 /Xk9APOpemfD3/pFmGZqexWG3Xo0= X-Google-Smtp-Source: AGHT+IGeKwKAbBXH9DnOkf7aiKlDVcdZ54XPsiDCqLRFpq3PXzvhUqOzAUhMk04qLKFNOoxRNVCU41nem0tcimz5zuI= X-Received: by 2002:a17:907:1c14:b0:a9a:8ee:594f with SMTP id a640c23a62f3a-a9a08ee5b21mr1158480366b.21.1729140428614; Wed, 16 Oct 2024 21:47:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Asad Ali Date: Thu, 17 Oct 2024 09:46:56 +0500 Message-ID: Subject: Re: Backup To: Andy Hartman Cc: pgsql-general@lists.postgresql.org Content-Type: multipart/alternative; boundary="00000000000003b6390624a4e123" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000003b6390624a4e123 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Andy, I hope you're doing well. Based on your inquiry about PostgreSQL backups for your 100GB historical database with images, here are some suggestions that should help you achieve compressed, efficient backups without running into storage issues. *1. Use Custom Format with Compression* A more efficient option would be to use the custom format (-Fc) with compression. You can also adjust the compression level and make use of your machine's multiple CPUs by using parallel jobs: pg_dump -Fc -Z 9 -j 4 --blobs -f /path/to/backup/file.dump your_database_name - -Fc: Custom format (supports compression and flexible restore options)= . - -Z 9: Maximum compression level (0-9 scale). - -j 4: Number of parallel jobs (adjust based on CPU cores). - --blobs: Includes large objects (important for your images). This approach should give you a smaller backup file with faster performance= . *2. Splitting Backups into Parts* If you're concerned about running out of storage space, consider splitting the backup by table or schema, allowing more control over the backup size: pg_dump -Fc --table=3Dmy_large_table -f /path/to/backup/my_large_table.dump your_database_name pg_dump -Fc --table=3Dother_table -f /path/to/backup/other_table.dump your_database_name This can be helpful when you archive different tables or sections of data. *3. External Compression Tools* If you need additional compression, you can pipe the pg_dump output through an external compression tool like gzip: pg_dump -Fc --blobs your_database_name | gzip > /path/to/backup/file.dump.g= z This should further reduce the size of your backups. *4. Consider Alternative Backup Methods* - Explore other backup methods like `*pgBackRest` or `WAL-E`*. These tools are specifically designed for PostgreSQL backups and offer features like incremental backups and point-in-time recovery pgbackrest --stanza=3Dyour-database --type=3Dfull --compress-type=3Dzst --compress-level=3D6 --process-max=3D4 backup - You can use *pg_basebackup* for PostgreSQL backups, but it has limitations compared to tools like pgBackRest. While pg_basebackup is easy to use and built-in with PostgreSQL, it is primarily designed for physical backups (base backups) and doesn't offer as many advanced features such as incremental backups, sophisticated compression, or parallelism. However, it does support basic compression and can be used for full backups= . pg_basebackup -D /path/to/backup/directory -F t -z -Z 9 -P -X stream - -D: The destination directory for the backup. - -F t: Specifies the tar format for the backup, which is required for compression. - -z: Compresses the output. - -Z 9: Compression level (0=E2=80=939, where 9 is the highest). - -P: Shows the progress of the backup. - -X stream: Includes the WAL files needed to make the backup consistent (important for recovery). pg_basebackup -D /backups/db_backup -F t -z -Z 9 -P -X stream This command will take a full physical backup of the database, compress the output using gzip, and store the backup in a tarball. *5. Automating Backups* Since you need monthly backups, I recommend automating this process with a cron job. For example, you can set this up to run on the 1st of every month at 2 AM: 0 2 1 * * /usr/bin/pg_dump -Fc -Z 9 -j 4 --blobs -f /path/to/backup/file.dump your_database_name *6. Monitoring Disk Usage & * *Backup Performance* Finally, it's important to monitor your available storage. You can either ensure you have enough free space or consider moving older backups to external or cloud storage to free up space. Use monitoring tools to track the performance of your backups. This will help you identify any potential bottlenecks and optimize the backup process= . I hope this helps you create smaller and quicker backups for your PostgreSQL database. Let me know if you have any questions or need further assistance! Best regards, Asad Ali On Thu, Oct 17, 2024 at 12:38=E2=80=AFAM Andy Hartman wrote: > I am very new to Postgres and have always worked in the mssql world. I'm > looking for suggestions on DB backups. I currently have a DB used to stor= e > Historical information that has images it's currently around 100gig. > > I'm looking to take a monthly backup as I archive a month of data at a > time. I am looking for it to be compressed and have a machine that has > multiple cpu's and ample memory. > > Suggestions on things I can try ? > I did a pg_dump using these parms > --format=3Dt --blobs lobarch > > it ran my device out of storage: > > pg_dump: error: could not write to output file: No space left on device > > I have 150gig free on my backup drive... can obviously add more > > looking for the quickest and smallest backup file output... > > Thanks again for help\suggestions > > --00000000000003b6390624a4e123 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi Andy,

I hope you're doing well. Based on your inquiry about PostgreSQL backup= s for your 100GB historical database with images, here are some suggestions= that should help you achieve compressed, efficient backups without running= into storage issues.

1. Use Custom Format with Compression
A= more efficient option would be to use the custom format (-Fc) with compres= sion. You can also adjust the compression level and make use of your machin= e's multiple CPUs by using parallel jobs:

pg_dump -Fc -Z 9 -j 4 --blobs -f /p= ath/to/backup/file.dump your_database_name
  • -Fc: Custom format (supports com= pression and flexible restore options).
  • -Z 9: Maximum compression level (0-9 scale).<= /span>
  • -j 4: Numb= er of parallel jobs (adjust based on CPU cores).
  • --blobs: Includes large objects (imp= ortant for your images).
This approach should gi= ve you a smaller backup file with faster performance.

2. Splittin= g Backups into Parts
If you're concerned about running out of st= orage space, consider splitting the backup by table or schema, allowing mor= e control over the backup size:

pg_dump -Fc --table=3Dmy_large_table= -f /path/to/backup/my_large_table.dump your_database_name
pg_dump -Fc -= -table=3Dother_table -f /path/to/backup/other_table.dump your_database_name=

This can be helpful when you archive different= tables or sections of data.

3. External Compression ToolsIf you need additional compression, you can pipe the pg_dump output throug= h an external compression tool like gzip:

pg_dump -Fc --blobs your_database_name = | gzip > /path/to/backup/file.dump.gz

This should f= urther reduce the size of your backups.

4.= Consider Alternative Backup Methods
- Explore other backup m= ethods like `pgBackRest`= or `WAL-E`. These tools are specifically designed for PostgreSQ= L backups and offer features like incremental backups and point-in-time rec= overy
pgbackrest --stanza=3Dyour-database --type=3Dfull --compress-type=3D= zst --compress-level=3D6 --process-max=3D4 backup

=
- You can use pg_ba= sebackup for PostgreSQL backups, but it has limitations compared to too= ls like pgBackRest. While pg_basebackup is easy to use and built-in with Po= stgreSQL, it is primarily designed for physical backups (base backups) and = doesn't offer as many advanced features such as incremental backups, so= phisticated compression, or parallelism.

However, it does support ba= sic compression and can be used for full backups.

<= div>pg_baseba= ckup -D /path/to/backup/directory -F t -z -Z 9 -P -X stream
  • -D: The destination directory for the backup.
  • -F t: Speci= fies the tar format for the backup, which is required for compression.
  • =
  • -z: Compresses the output.
  • -Z 9: Compression level (0=E2=80=939= , where 9 is the highest).
  • -P: Shows the progress of the backup.
  • -X stream: Includes the WAL files needed to make the backup consisten= t (important for recovery).
pg_basebackup -D /backups/db_backup -F t -z -= Z 9 -P -X stream
This command will take a full physical ba= ckup of the database, compress the output using gzip, and store the backup = in a tarball.

5. Automating Backups
Since you need monthly= backups, I recommend automating this process with a cron job. For example,= you can set this up to run on the 1st of every month at 2 AM:

0 2 1 * * /usr/bin= /pg_dump -Fc -Z 9 -j 4 --blobs -f /path/to/backup/file.dump your_database_n= ame

6. Monitoring Disk Usage &=C2=A0 Backup Performance
Finally, it's important to monitor your av= ailable storage. You can either ensure you have enough free space or consid= er moving older backups to external or cloud storage to free up space.=C2= =A0=C2=A0
Use monitoring tools to track the performance of your b= ackups. This will help you identify any potential bottlenecks and optimize = the backup process.

I hope this helps you create smaller and quicker= backups for your PostgreSQL database. Let me know if you have any question= s or need further assistance!

Best regards,

Asad Ali


On Thu, Oct 17, 2024 at 12:38=E2= =80=AFAM Andy Hartman <hartma= n60home@gmail.com> wrote:
I am ve= ry new to Postgres and have always worked in the mssql world. I'm looki= ng for suggestions on DB backups. I currently have a DB used to store Histo= rical information that has images it's currently around 100gig.=C2=A0
I'm looking to take a monthly backup as I archive a month of data= at a time. I am looking for it to be compressed and have a machine that ha= s multiple=C2=A0cpu's=C2=A0and ample memory.

Suggestions on thi= ngs I can try ?=C2=A0=C2=A0
I did a pg_dump using these parms
= --format=3Dt --blobs lobarch

it ran my device out of storage:
pg_dump: error: could not write to output file: No space left on device
I have 150gig free on my backup drive... can obviously=C2=A0add more
looking for the quickest and smallest backup file output...

Th= anks again for help\suggestions=C2=A0

--00000000000003b6390624a4e123--