Revision 8921
Added by Jing Tao about 10 years ago
src/scripts/bash/restore-dumped-data-to-pg9.3.sh | ||
---|---|---|
1 |
#!/bin/sh |
|
2 |
|
|
3 |
#This script is used to move the data of a postgresql 8.4 instance to the |
|
4 |
#new installed postgresql 9.3 instance after the os was upgraded from ubuntu 10.04 to 14.04. |
|
5 |
#Basically it will decompress a metacat backup file which contains a dumped-all file and |
|
6 |
#resotre it in a postgresql 9.3 instance. |
|
7 |
#You need to pass the metacat backup file to this script. We assume the backup file |
|
8 |
#locating at /var/metacat/metacat-backup directory. |
|
9 |
#This script should be run as the root user. |
|
10 |
#Usage: nohup ./restore-dumped-data-to-pg9.3.sh metacat_backup_file_name & |
|
11 |
|
|
12 |
#Check the argument of the script. It only can have one - the metacat backup file name. |
|
13 |
|
|
14 |
METACAT_BACKUP_DIR=/var/metacat/metacat-backup |
|
15 |
SQL_FILE=metacat-postgres-backup.sql |
|
16 |
METACAT_BACKUP_FILE_SUFFIX=.tgz |
|
17 |
DB_BASE=/var/lib/postgresql |
|
18 |
OLD_DB_VERSION=8.4 |
|
19 |
ANOTHER_OLD_DB_VERSION=9.1 |
|
20 |
NEW_DB_VERSION=9.3 |
|
21 |
NEW_DB_CONFIG=/etc/postgresql/$NEW_DB_VERSION/main/postgresql.conf |
|
22 |
OLD_DB_DATA_DIR=$DB_BASE/$OLD_DB_VERSION |
|
23 |
OLD_DB_BACKUP_FILE=postgresql-$OLD_DB_VERSION.tar.gz |
|
24 |
POSTGRES_USER=postgres |
|
25 |
PORT=5432 |
|
26 |
echo "start to move database from $OLD_DB_VERSION to $NEW_DB_VERSION at" |
|
27 |
echo `date` |
|
28 |
|
|
29 |
echo "the length of argument is $#" |
|
30 |
#echo $@ |
|
31 |
if [ $# -ne 1 ]; then |
|
32 |
echo "This script should take one and only one parameter as the metacat backup file name."; |
|
33 |
exit 1; |
|
34 |
fi |
|
35 |
METACAT_BACKUP_FILE_NAME=$1 |
|
36 |
echo "the backup file name is $METACAT_BACKUP_FILE_NAME" |
|
37 |
DECOMPRESS_DIR_NAME=`echo "$METACAT_BACKUP_FILE_NAME" | cut -d'.' -f1` |
|
38 |
echo "the decmporessed dir is $DECOMPRESS_DIR_NAME" |
|
39 |
|
|
40 |
echo "back up the old db data at $OLD_DB_DATA_DIR" |
|
41 |
su - $POSTGRES_USER -c "tar -zcvf $DB_BASE/$OLD_DB_BACKUP_FILE $OLD_DB_DATA_DIR" |
|
42 |
|
|
43 |
echo "stop postgresql" |
|
44 |
/etc/init.d/postgresql stop |
|
45 |
|
|
46 |
echo "remove postgresql 8.4 and 9.1" |
|
47 |
apt-get remove postgresql-$OLD_DB_VERSION |
|
48 |
apt-get remove postgresql-$ANOTHER_OLD_DB_VERSION |
|
49 |
|
|
50 |
echo "modify the port to 5432 in the new db configuration file" |
|
51 |
sed -i.bak --regexp-extended "s/(port =).*/\1${PORT}/;" $NEW_DB_CONFIG |
|
52 |
|
|
53 |
echo "delete the data directory of 8.4" |
|
54 |
rm -rf $OLD_DB_DATA_DIR |
|
55 |
|
|
56 |
echo "decompress the metacat backup file" |
|
57 |
tar zxvf $METACAT_BACKUP_DIR/$METACAT_BACKUP_FILE_NAM -C $METACAT_BACKUP_DIR |
|
58 |
|
|
59 |
echo "restore database" |
|
60 |
su - POSTGRES_USER -c "psql -f $METACAT_BACKUP_DIR/$DECOMPRESS_DIR_NAME/$SQL_FILE postgres" |
|
61 |
|
|
62 |
echo "end to move database from $OLD_DB_VERSION to $NEW_DB_VERSION at" |
|
63 |
echo `date` |
|
0 | 64 |
Also available in: Unified diff
Add a script to move the db from 8.3 to 9.1 base on a dumped file.