PostgreSQL datubāzes kopēšana
Must prepare before: PostgreSQL datu bāze |
Binārs vai vienkāršs teksta fails
pg_restore var veidot gan tīra teksta SQL pieprasījumu failu, gan bināru failu, kurā ievietojamie dati ir iekļauti kā bināri apgabali. Binārā faila kopiju var izveidot un atjaunot ātrāk, bet to var izdarīt tikai vienas postgres versijas ietvaros un vienas datu bāzes ietvaros, jo binārajā kopijā nav iekļauti visi metadati).
Tīra (teksta) SQL vaicājumu faila izveide un atjaunošana notiek lēnāk, bet to var izmantot dažādās postgres datu bāzu versijās un pārvietot datus, veidojot bāzi no nulles.
Teksta rezerves kopija
Izveide
Datu bāzes kopiju izveido, ar kā postgres lietotājs izpildot komandu:
pg_dump -F p -b -v -f openbravo.sql openbravo
exit
Atjaunošana
Kā postgres lietotājs ielādē rezerves kopijas datus datu bāzē:
psql -q openbravo < openbravo.sql
exit
Bināra rezerves kopija
Izveide
Datu bāzes kopiju izveido, ar kā postgres lietotājs izpildot komandu:
pg_dump -F c -b -v -f openbravo.dmp openbravo
exit
Atjaunošana
Kā postgres lietotājs ielādē rezerves kopijas datus datu bāzē:
pg_restore -d openbravo -l openbravo.dmp
exit
Automātiska rezerves kopijas veidošana
- Mapē /home/bin izveido failu postgres_backup.
Failā ieraksta sekojošu saturu:
#!/bin/bash
user="postgres"
backup_dir="/home/backup"
date=`date -I`
prefix="pgsql"
# List of databases, delimited by spaces
DBS="openbravo"
if [[ ! -d $backup_dir ]]; then
mkdir $backup_dir
chown root:postgres $backup_dir
chmod 770 $backup_dir
fi
cd $backup_dir
find $backup_dir/ -name "$prefix.**.tgz" -mtime +7 | xargs rm -f
printf "**** PostgreSQL backup ****\t\tstarted\t\t`date`\n">>log
for cdb in $DBS
do
printf " - PostgreSQL backup for $cdb -\t\t\t`date`\n">>log
su - $user -c "pg_dump -F p -b -f "$backup_dir/$prefix.$cdb.$date.sql" $cdb 2>>$backup_dir/err_log"
done
tar -zcvf $prefix.`date -I`.tgz $prefix.**.sql
rm $prefix.**.sql
printf "**** PostgreSQL backup ****\t\t finished\t`date`\n">>logPadara failu izpildāmu, un, tā kā failā ir norādīta root parole, nodrošināmies, ka citi šī faila saturu nevar redzēt:
chown root:root postgres_backup
chmod 770 postgres_backupNomaina rezerves kopiju mapes tiesības, lai postgres lietotājam varētu tajā rakstīt:
chown root:postgres /home/backup
chmod 770 /home/backup- Pēc noklusēšanas Postgres datubāzes faili atrodas /var/lib/postgresql/8.3/main/base mapē kur katrai bāzei ir sava apakšmape.
Ja datu bāzu apjoms kļūst liels, šo apakšmapes kopēšanu failu līmenī var izslēgt norādot papildus parametru -P /var/lib/postgresql/8.3/main/base ... u.t.t. dar komandai dar_home_full un dar_home_diff skriptos. Ieplāno Postgres datu bāzu kopēšanu. "Tīrā" komandrindas logā kā root ievada komandu:
crontab -eEsošās rindas papildina ar parauga pēdējo rindu (veidot kopiju katru dienu pēc plkst. 24:00):
# m h dom mon dow command
0 1 * * * /home/bin/postgres_backup- Saglabā plānotāja uzdevumus ar komandām Ctrl+o Enter un +Ctrl+x
Pārliecinās, ka plānotājs uzdevumi ir ierakstīti ar komandu:
crontab -l
Saites
- http://www.postgresql.org/docs/8.1/static/backup.html
- http://www.postgresonline.com/journal/index.php?/archives/17-PostgreSQL-8.3-Cheat-Sheet-Overview.html
Created by Valdis Vītoliņš on 2009-09-29 16:05
Last modified by Valdis Vītoliņš on 2021-04-13 14:30