From: | Andre Lopes <lopes80andre(at)gmail(dot)com> |
---|---|
To: | Thom Brown <thom(at)linux(dot)com> |
Cc: | postgresql Forums <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Shell script to Backup/Dump Database |
Date: | 2010-05-12 16:02:07 |
Message-ID: | AANLkTilQUeGrANXtaXSy3nlTAaMBuOrpM6R-yNGB6N2Y@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Thanks for the reply.
I will test today.
There are some good practices that I should do? For example, I have this
database in a shared hosting, should I add the functionality of send the
dumps by FTP to my PC once a week? Give some more ideias to avoid data loss
in case of disaster.
Best Regards,
On Wed, May 12, 2010 at 4:45 PM, Thom Brown <thom(at)linux(dot)com> wrote:
> On 12 May 2010 16:30, Andre Lopes <lopes80andre(at)gmail(dot)com> wrote:
>
>> Hi,
>>
>> I'am looking fo a shell script do Backup/Dump my PostgreSQL twice a day.
>>
>> I will need to do a full dump (schema + data), schema dump (only schema)
>> and data (only data)
>>
>> There is something done on this subject? I'am very poor in shell script,
>> there are some scripts on the web ready to use?
>>
>>
>> Best Regards,
>>
>
> Yes, several of us discussed something like this recently. Are you looking
> to back up all databases on the cluster or just an individual database?
>
> If it's a cluster, you could have a shell script like this:
>
> #!/bin/bash
>
> mkdir /tmp/`date +\%Y\%m\%d`
> pg_dumpall -U postgres | gzip > /tmp/`date +\%Y\%m\%d`/FULL.sql.gz
> pg_dumpall -c -U postgres | gzip > /tmp/`date +\%Y\%m\%d`/SCHEMA.sql.gz
> pg_dumpall -a -U postgres | gzip > /tmp/`date +\%Y\%m\%d`/DATA.sql.gz
>
>
> If you want a single database, try this:
>
> #!/bin/bash
>
> mkdir /tmp/`date +\%Y\%m\%d`
> pg_dump -U postgres my_database | gzip > /tmp/`date
> +\%Y\%m\%d`/my_database_FULL.sql.gz
> pg_dump -s -U postgres my_database | gzip > /tmp/`date
> +\%Y\%m\%d`/my_database_SCHEMA.sql.gz
> pg_dump -a -U postgres my_database | gzip > /tmp/`date
> +\%Y\%m\%d`/my_database_DATA.sql.gz
>
>
> If you want each individual database, try this:
>
> #!/bin/bash
>
> mkdir /tmp/`date +\%Y\%m\%d`
> query="select datname from pg_database where not datistemplate and
> datallowconn;"
> for line in `psql -U postgres -At -c "$query" postgres`
> do
> pg_dump -U postgres "$line" | gzip > /tmp/`date
> +\%Y\%m\%d`/"$line"_FULL.sql.gz
> pg_dump -s -U postgres "$line" | gzip > /tmp/`date
> +\%Y\%m\%d`/"$line"_SCHEMA.sql.gz
> pg_dump -a -U postgres "$line" | gzip > /tmp/`date
> +\%Y\%m\%d`/"$line"_DATA.sql.gz
> done
>
> Obviously you can change the output location to something other that /tmp
> if you're not going to transfer it anywhere. Just make sure the path
> exists. If you are copying it away immediately after, make sure you delete
> it or they'll build up.
>
> If you want to schedule it, bung it in a shell script like
> backup_databases.sh and stick it in the root crontab.
>
> Regards
>
> Thom
>
From | Date | Subject | |
---|---|---|---|
Next Message | Thom Brown | 2010-05-12 16:07:30 | Re: Shell script to Backup/Dump Database |
Previous Message | Thom Brown | 2010-05-12 15:48:25 | Re: Shell script to Backup/Dump Database |