|
@@ -0,0 +1,52 @@
|
|
1
|
+#!/bin/bash
|
|
2
|
+## only pgsql & mysql
|
|
3
|
+## the array database name
|
|
4
|
+DBDATA=( "base1" "base2" );
|
|
5
|
+## the array backup paths
|
|
6
|
+BACKPATH=( "/backup/db" "/backup/db" );
|
|
7
|
+## the array login for databases
|
|
8
|
+LOGINDB=( "dblogin1" "dblogin2" );
|
|
9
|
+## the array pass for databases
|
|
10
|
+PASSWDB=( "mypassdb1" "mypassdb2" );
|
|
11
|
+## the array type databases
|
|
12
|
+TYPEDB=( "pgsql" "mysql" )
|
|
13
|
+## log file
|
|
14
|
+LOG_FILE="/var/log/syslog.log";
|
|
15
|
+## messages
|
|
16
|
+MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
|
|
17
|
+MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
|
|
18
|
+## intermediate values
|
|
19
|
+dbname="none";
|
|
20
|
+#########################################################
|
|
21
|
+function backDB() {
|
|
22
|
+for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
|
23
|
+ do
|
|
24
|
+ rdate=$(date +%d%m%y);
|
|
25
|
+ dbname=${DBDATA[$dbinx]};
|
|
26
|
+ rpath=${BACKPATH[$dbinx]};
|
|
27
|
+ dbtype=${TYPEDB[$dbinx]};
|
|
28
|
+ dblogin=${LOGINDB[$dbinx]}
|
|
29
|
+ dbpass=${PASSWDB[$dbinx]}
|
|
30
|
+ if [ "$dbtype" = "pgsql" ];
|
|
31
|
+ then
|
|
32
|
+ sudo -u postgres pg_dump -C $dbname > $rpath/$dbname"_"$rdate.sql
|
|
33
|
+ tar -cJf $rpath/$dbname"_"$rdate.tar.xz $rpath/$dbname"_"$rdate.sql;
|
|
34
|
+ rm $rpath/$dbname"_"$rdate.sql;
|
|
35
|
+ echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
|
|
36
|
+ fi
|
|
37
|
+ if [ "$dbtype" = "mysql" ];
|
|
38
|
+ then
|
|
39
|
+ mysqldump -u $dblogin -p$dbpass $dbname| gzip > $rpath/$dbname"_"$rdate.sql.gz
|
|
40
|
+ echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
|
|
41
|
+ fi
|
|
42
|
+done
|
|
43
|
+}
|
|
44
|
+
|
|
45
|
+if [ ! -d $BACKPATH ];
|
|
46
|
+ then
|
|
47
|
+ mkdir -p $BACKPATH;
|
|
48
|
+fi
|
|
49
|
+
|
|
50
|
+backDB;
|
|
51
|
+
|
|
52
|
+exit 0
|