back_db.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. if [ ! -d $BACKPATH ];
  45. then
  46. mkdir -p $BACKPATH;
  47. fi
  48. backDB;
  49. exit 0