Browse Source

fix remote get base postgresql 05.04.22:05.28

root 2 years ago
parent
commit
25dbb1af6a
1 changed files with 31 additions and 21 deletions
  1. 31 21
      src/back_db.sh

+ 31 - 21
src/back_db.sh

@@ -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
 }