Обсуждение: pg_dump: aborting because of server version mismatch
Hi,
I am trying to create a daily backup cron script but it fails with an error as below:
Any pointers to resolve this will be greatly appreciated.
Thanks,
Mitesh Shah
(1) Error:
bash-3.2$ sh pg_backup_rotated_orig.sh
Making backup directory in /Users/miteshshah/Documents/2012-05-02-daily/
-e
Performing full backups
-e --------------------------------------------
Plain backup of mitesh
pg_dump: server version: 9.1.2; pg_dump version: 9.0.5
pg_dump: aborting because of server version mismatch
-e
All database backups complete!
(2.1) /Users/miteshshah/Desktop/pg_backup.config file:
#############################
## POSTGRESQL BACKUP CONFIG ##
##############################
# hostname to adhere to pg_hba policies.
HOSTNAME= <host>
# username to connect to database as.
USERNAME=<user>
# Database name
DATABASE=<database>
# This dir will be created if it doesn't exist. This must be writable by the user the script is
# running as.
BACKUP_DIR=<backup_dir>
# SCRIPTPATH
SCRIPTPATH=<path>
# Will produce a custom-format backup if set to "yes"
ENABLE_CUSTOM_BACKUPS=yes
# Will produce a gzipped plain-format backup if set to "yes"
ENABLE_PLAIN_BACKUPS=yes
#### SETTINGS FOR ROTATED BACKUPS ####
# Which day to take the weekly backup from (1-7 = Monday-Sunday)
DAY_OF_WEEK_TO_KEEP=5
# Number of days to keep daily backups
DAYS_TO_KEEP=7
# How many weeks to keep weekly backups
WEEKS_TO_KEEP=5
######################################
(2.2) /Users/miteshshah/Desktop/pg_backup_rotated_orig.sh
#!/bin/bash
###########################
####### LOAD CONFIG #######
###########################
source /Users/miteshshah/Desktop/pg_backup.config
###########################
#### START THE BACKUPS ####
###########################
function perform_backups()
{
SUFFIX=$1
FINAL_BACKUP_DIR=$BACKUP_DIR"`date +\%Y-\%m-\%d`$SUFFIX/"
echo "Making backup directory in $FINAL_BACKUP_DIR"
if ! mkdir -p $FINAL_BACKUP_DIR; then
echo "Cannot create backup directory in $FINAL_BACKUP_DIR. Go and fix it!"
exit 1;
fi;
###########################
###### FULL BACKUPS #######
###########################
echo -e "\n\nPerforming full backups"
echo -e "--------------------------------------------\n"
if [ $ENABLE_PLAIN_BACKUPS = "yes" ]
then
echo "Plain backup of $DATABASE"
if ! pg_dump -Fp -h "$HOSTNAME" -U "$USERNAME" "$DATABASE" | gzip > $FINAL_BACKUP_DIR"$DATABASE".sql.gz.in_progress; then
echo "[!!ERROR!!] Failed to produce plain backup database $DATABASE"
else
mv $FINAL_BACKUP_DIR"$DATABASE".sql.gz.in_progress $FINAL_BACKUP_DIR"$DATABASE".sql.gz
fi
fi
if [ $ENABLE_CUSTOM_BACKUPS = "yes" ]
then
echo "Custom backup of $DATABASE"
if ! pg_dump -Fc -h "$HOSTNAME" -U "$USERNAME" "$DATABASE" -f $FINAL_BACKUP_DIR"$DATABASE".custom.in_progress; then
echo "[!!ERROR!!] Failed to produce custom backup database $DATABASE"
else
mv $FINAL_BACKUP_DIR"$DATABASE".custom.in_progress $FINAL_BACKUP_DIR"$DATABASE".custom
fi
fi
echo -e "\nAll database backups complete!"
}
# DAILY BACKUPS
# Delete daily backups 7 days old or more
find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*-daily" -exec rm -rf '{}' ';'
Mitesh Shah <mitesh.shah@stripes39.com> wrote: > *pg_dump: server version: 9.1.2; pg_dump version: 9.0.5* > *pg_dump: aborting because of server version mismatch* This is not a bug. Use a version of pg_dump which is at least as new as the server. The older version of pg_dump is unlikely to be able to recognize everything in the newer server, -Kevin
There used to be a switch in pg_dump that would disable the version, you can even see that's in the man page. However, it is not reccommended and the most recent versions have fully deprecated the switch. Technically speaking that means that you can even use an older version of pg_dump and it wouldn't generate any errors although I wouldn't want to test it out on important stuff. Robert Bernier On Wednesday, May 02, 2012 02:53:53 pm Kevin Grittner wrote: > Mitesh Shah <mitesh.shah@stripes39.com> wrote: > > *pg_dump: server version: 9.1.2; pg_dump version: 9.0.5* > > *pg_dump: aborting because of server version mismatch* > > This is not a bug. Use a version of pg_dump which is at least as > new as the server. The older version of pg_dump is unlikely to be > able to recognize everything in the newer server, > > -Kevin
On 05/02/2012 12:55 PM, Mitesh Shah wrote: > Hi, > I am trying to create a daily backup cron script but it fails with an > error as below: > > Any pointers to resolve this will be greatly appreciated. > > Thanks, > Mitesh Shah > mitesh.shah@stripes39.com <mailto:mitesh.shah@stripes39.com> > > *(1) Error:* > bash-3.2$ sh pg_backup_rotated_orig.sh > Making backup directory in /Users/miteshshah/Documents/2012-05-02-daily/ > -e > > Performing full backups > -e -------------------------------------------- > > Plain backup of mitesh > *pg_dump: server version: 9.1.2; pg_dump version: 9.0.5* The problem is you are using an older version of pg_dump to dump a newer database. That will not work. Possible solution: You are running via cron. Cron has its own environment. Unless you are explicit in your pathing you can get surprising results, see above. Find the path to the 9.1.2 version of pg_dump and use that absolute path in your script. > *pg_dump: aborting because of server version mismatch* > -e > All database backups complete! > -- Adrian Klaver adrian.klaver@gmail.com