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
 #!/bin/bash
1
 #!/bin/bash
2
 #
2
 #
3
 # license: GPL V2.0
3
 # license: GPL V2.0
4
-# version: 1.3.2
4
+# version: 1.3.3
5
 # script author: Koshuba V - stvixfree@gmail.com
5
 # script author: Koshuba V - stvixfree@gmail.com
6
 # 2022
6
 # 2022
7
 ## only pgsql & mysql
7
 ## only pgsql & mysql
8
 #
8
 #
9
+
9
 ## dependencies scripts
10
 ## dependencies scripts
10
 #<tools_script>
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
 #</tools_script>
14
 #</tools_script>
14
 
15
 
15
 ## only pgsql & mysql
16
 ## only pgsql & mysql
16
 ## the array database name
17
 ## the array database name
17
-DBDATA=( "base1" "base2" );
18
+DBDATA=( "dbname1" "dbname2" "dbname3" );
18
 ## the array backup paths
19
 ## the array backup paths
19
-BACKPATH=( "/backup/db" "/backup/db" );
20
+BACKPATH=( "/arhiv" "/arhiv" "/arhiv" );
20
 ## the array login for databases
21
 ## the array login for databases
21
-LOGINDB=( "dblogin1" "dblogin2" );
22
+LOGINDB=( "login1" "login2" "login3" );
22
 ## the array pass for databases
23
 ## the array pass for databases
23
-PASSWDB=( "mypassdb1" "mypassdb2" );
24
+PASSWDB=( "mypassdb1" "mypassdb2" "mypassdb3" );
24
 ## the array type databases
25
 ## the array type databases
25
-TYPEDB=( "pgsql" "mysql" )
26
+TYPEDB=( "pgsql" "pgsql" "mysql" )
26
 ## the array hosts
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
 ## log file
29
 ## log file
29
 LOG_FILE="/var/log/syslog.log";
30
 LOG_FILE="/var/log/syslog.log";
30
 #
31
 #
32
+## email admin
33
+adminmail="admindb@myhost.ru";
34
+#
31
 MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
35
 MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
32
 MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
36
 MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
33
 dbname="none";
37
 dbname="none";
@@ -56,12 +60,10 @@ done
56
 backDB;
60
 backDB;
57
 }
61
 }
58
 
62
 
59
-
60
-
61
 function backDB() {
63
 function backDB() {
62
 for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
64
 for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
63
     do
65
     do
64
-    rdate=$(date +%d%m%y);
66
+    rdate=$(date +%d-%m-%y_%H-%M);
65
     dbname=${DBDATA[$dbinx]};
67
     dbname=${DBDATA[$dbinx]};
66
     rpath=${BACKPATH[$dbinx]};
68
     rpath=${BACKPATH[$dbinx]};
67
     dbtype=${TYPEDB[$dbinx]};
69
     dbtype=${TYPEDB[$dbinx]};
@@ -75,11 +77,15 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
75
     	    then
77
     	    then
76
 	    mkdir -p $rpath/$dbname;
78
 	    mkdir -p $rpath/$dbname;
77
 	    fi
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
     fi
89
     fi
84
     if [ "$dbtype" = "mysql" ];
90
     if [ "$dbtype" = "mysql" ];
85
      then
91
      then
@@ -87,10 +93,14 @@ for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
87
     	    then
93
     	    then
88
 	    mkdir -p $rpath/$dbname;
94
 	    mkdir -p $rpath/$dbname;
89
 	    fi
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
     cd;
104
     cd;
95
 done
105
 done
96
 }
106
 }