1 голос
 
1270 просмотров
8.09.2016 / 00:12  aNNiMON

Бекап БД MySQL на ftp

Необходимо по крону организовать бекап всех баз данных и выгрузить на ftp. Желательно с ротацией: удалять бекапы старше N дней.
ОС Debian.
Ответы
 
1 голос
 
# 8.09.2016 / 12:12  aNNiMON
Koenig, помогло. Вот сделал выгрузку с автоудалением устаревших бекапов.

  1. #!/bin/bash
  2.  
  3. STOREDAYS=7
  4. FILENAME=$(date +%Y-%m-%d_%H-%M).sql.gz
  5. MYSQL_USER=root
  6. MYSQL_PASS=XXX
  7.  
  8. mysqldump --opt --user $MYSQL_USER --password=$MYSQL_PASS --ignore-table=mysql.event --all-databases | gzip -9 > $FILENAME
  9.  
  10.  
  11.  
  12. FTP_HOST=ftp.server.com
  13. FTP_USER=ftpuser
  14. FTP_PASS=XXX
  15.  
  16. ftpcmd=`ftp -in $FTP_HOST << EOF1
  17. user $FTP_USER $FTP_PASS
  18. binary
  19. cd backups
  20. put $FILENAME
  21. ls
  22. quit
  23. EOF1
  24. `
  25. files=( $ftpcmd )
  26.  
  27. rm -f $FILENAME
  28. TT=`date --date="$STOREDAYS days ago" +%s`
  29.  
  30. for ((FNO=0; FNO<${#files[@]}; FNO+=9));do
  31.   fdate="${files[`expr $FNO+5`]} ${files[`expr $FNO+6`]} ${files[`expr $FNO+7`]}"
  32.   sdate=`date --date="$fdate" +%s`
  33.   if [ $sdate -lt $TT ];
  34.   then
  35.     echo "Removing ${files[`expr $FNO+8`]}"
  36.     ftp -i -n $FTP_HOST << EOF2
  37.     user $FTP_USER $FTP_PASS
  38.     binary
  39.     cd backups
  40.     delete ${files[`expr $FNO+8`]}
  41.     bye
  42. EOF2
  43.   fi
  44. done
 
1 голос
 
# 8.09.2016 / 02:10  Koenig
не тестил

  1. #!/bin/sh
  2.  
  3. DATE=`date +"%d%m%Y"`
  4. DBSERVER=127.0.0.1
  5. DATABASE=XXX
  6. USER=XXX
  7. PASS=XXX
  8. SQLFILE=$DATABASE-${DATE}.sql
  9.  
  10. mysqldump --opt --user=${USER} --password=${PASS} ${DATABASE} > ${SQLFILE}
  11. gzip $SQLFILE
  12.  
  13. FTPHOST=ftp.server.com
  14. FTPUSER=ftpuser
  15. FTPPASS=password
  16. PATH=/path/to/file/
  17.  
  18. ftp -inv $FTPHOST << EOF
  19. user $FTPUSER $FTPPASS
  20. cd $PATH
  21. put $SQLFILE
  22. bye
  23. EOF
Изм. Koenig от 8.09.2016 / 02:11
 
1 голос
 
# 8.09.2016 / 01:40  Koenig
заюзать mysqldump
Всего: 3

Реклама

Мы в соцсетях

tw tg yt gt