|
@@ -1,33 +1,37 @@
|
1
|
1
|
#!/bin/bash
|
2
|
2
|
#
|
3
|
3
|
# license: GPL V2.0
|
4
|
|
-# version: 1.3.2
|
|
4
|
+# version: 1.3.3
|
5
|
5
|
# script author: Koshuba V - stvixfree@gmail.com
|
6
|
6
|
# 2022
|
7
|
7
|
## only pgsql & mysql
|
8
|
8
|
#
|
|
9
|
+
|
9
|
10
|
## dependencies scripts
|
10
|
11
|
#<tools_script>
|
11
|
|
-pkgdep=("postgresql-client" "mariadb-client"); # packages
|
12
|
|
-get_tools=( "pg_dump" "mysqldump" ); # tools for script
|
|
12
|
+pkgdep=( "postgresql-client" "mariadb-client" "pigz" ); # packages
|
|
13
|
+get_tools=( "pg_dump" "mysqldump" "pigz" ); # tools for script
|
13
|
14
|
#</tools_script>
|
14
|
15
|
|
15
|
16
|
## only pgsql & mysql
|
16
|
17
|
## the array database name
|
17
|
|
-DBDATA=( "base1" "base2" );
|
|
18
|
+DBDATA=( "dbname1" "dbname2" "dbname3" );
|
18
|
19
|
## the array backup paths
|
19
|
|
-BACKPATH=( "/backup/db" "/backup/db" );
|
|
20
|
+BACKPATH=( "/arhiv" "/arhiv" "/arhiv" );
|
20
|
21
|
## the array login for databases
|
21
|
|
-LOGINDB=( "dblogin1" "dblogin2" );
|
|
22
|
+LOGINDB=( "login1" "login2" "login3" );
|
22
|
23
|
## the array pass for databases
|
23
|
|
-PASSWDB=( "mypassdb1" "mypassdb2" );
|
|
24
|
+PASSWDB=( "mypassdb1" "mypassdb2" "mypassdb3" );
|
24
|
25
|
## the array type databases
|
25
|
|
-TYPEDB=( "pgsql" "mysql" )
|
|
26
|
+TYPEDB=( "pgsql" "pgsql" "mysql" )
|
26
|
27
|
## the array hosts
|
27
|
|
-HOSTDB=( "10.1.0.2" "10.1.0.7" )
|
|
28
|
+HOSTDB=( "127.0.0.1" "127.0.0.1" "10.0.3.1" )
|
28
|
29
|
## log file
|
29
|
30
|
LOG_FILE="/var/log/syslog.log";
|
30
|
31
|
#
|
|
32
|
+## email admin
|
|
33
|
+adminmail="admindb@myhost.ru";
|
|
34
|
+#
|
31
|
35
|
MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
|
32
|
36
|
MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
|
33
|
37
|
dbname="none";
|
|
@@ -56,12 +60,10 @@ done
|
56
|
60
|
backDB;
|
57
|
61
|
}
|
58
|
62
|
|
59
|
|
-
|
60
|
|
-
|
61
|
63
|
function backDB() {
|
62
|
64
|
for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
63
|
65
|
do
|
64
|
|
- rdate=$(date +%d%m%y);
|
|
66
|
+ rdate=$(date +%d-%m-%y_%H-%M);
|
65
|
67
|
dbname=${DBDATA[$dbinx]};
|
66
|
68
|
rpath=${BACKPATH[$dbinx]};
|
67
|
69
|
dbtype=${TYPEDB[$dbinx]};
|
|
@@ -75,11 +77,15 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
75
|
77
|
then
|
76
|
78
|
mkdir -p $rpath/$dbname;
|
77
|
79
|
fi
|
78
|
|
- sudo pg_dump -h$dbhost -u$dblogin -p$dbpass $dbname > $rpath/$dbname/$dbname"_"$rdate.sql
|
79
|
|
- tar -cJf $rpath/$dbname/$dbname"_"$rdate.tar.xz $rpath/$dbname/$dbname"_"$rdate.sql;
|
80
|
|
- rm $rpath/$dbname/$dbname"_"$rdate.sql
|
81
|
|
- echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
|
82
|
|
- date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" admin@spikcom.ru
|
|
80
|
+ getdb=postgresql://$dblogin:$dbpass@$dbhost:5432/$dbname
|
|
81
|
+ if sudo pg_dump $getdb|pigz -p2 -c9> $rpath/$dbname/$dbname"_"$rdate.gz
|
|
82
|
+ then
|
|
83
|
+ echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
|
|
84
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_OK" $adminmail
|
|
85
|
+ else
|
|
86
|
+ echo "$(date) -- backup pgbase $MESS_FAIL">>$LOG_FILE
|
|
87
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup pgbase $MESS_FAIL" $adminmail
|
|
88
|
+ fi
|
83
|
89
|
fi
|
84
|
90
|
if [ "$dbtype" = "mysql" ];
|
85
|
91
|
then
|
|
@@ -87,10 +93,14 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
|
87
|
93
|
then
|
88
|
94
|
mkdir -p $rpath/$dbname;
|
89
|
95
|
fi
|
90
|
|
- sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz
|
91
|
|
- echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
|
92
|
|
- date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" admin@spikcom.ru
|
93
|
|
- fi
|
|
96
|
+ if sudo mysqldump -v -h$dbhost -u$dblogin -p$dbpass $dbname | pigz -p2 -c9 > $rpath/$dbname/$dbname"_"$rdate.sql.gz
|
|
97
|
+ then
|
|
98
|
+ echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
|
|
99
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_OK" $adminmail
|
|
100
|
+ else
|
|
101
|
+ echo "$(date) -- backup mysqlbase $MESS_FAIL">>$LOG_FILE
|
|
102
|
+ date|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$(date) -- backup mysqlbase $MESS_FAIL" $adminmail
|
|
103
|
+ fi fi
|
94
|
104
|
cd;
|
95
|
105
|
done
|
96
|
106
|
}
|