원격 mysql에서 자동 백업

원격 mysql에서 자동 백업

저는 온라인 웹사이트 콘텐츠를 저장하는 mysql 데이터베이스를 매일 백업하고 있으며 이 6개 명령을 하나로 자동화하고 싶습니다.

나는 간단한 해결책을 시도했습니다. 명령 목록을 Bash 스크립트에 넣는 것뿐입니다. 스크립트가 원격 호스트에 들어가면 중지되기 때문에 실패합니다.

도움을 주시면 감사하겠습니다.

내 실패한 (bash 스크립트) 시도는 다음과 같습니다.

#! /bin/bash

  echo "Connecting to the remote host ...";
  ssh -p myport [email protected] ;
  echo "Making the backup on the remote host ...";
  mysqldump --databases --user=mysqluser --password=mypassword mydatabase > backup_copy.sql ;
  echo "Compressing the sql backup ...";
  gzip backup_copy.sql;
  echo "Leaving the remote host ...";
  exit;
  echo "Copying the backup from the remote host ...";
  scp -P myport [email protected]:backup_copy.sql.gz /my/location/to/store/backups ;
  echo "Task finished";

답변1

#!/bin/bash

# database credentials
DATABASEHOST="host"
DATABASEUSER="user"
DATABASEPASSWORD="password"
DATABASESCHEMA="database"
DATABASEENV="backup"

# Local directory of mysqldump file
LOCALDIR=/home/user/db-bkp

# Temporary directory for compressed file
TEMPDIR=/home/user/tmp

# Remote Directory for backups.
REMOTEDIR=/home/user/db-bkp

# Backup host to login to
BACKUPHOST="otherhost"
#--- end config

echo $(date +%H:%M)
echo "Creating the MySQL dump" 
mysqldump --host="$DATABASEHOST" --user="$DATABASEUSER" --password="$DATABASEPASSWORD" --single-transaction "$DATABASESCHEMA" > "$LOCALDIR"/"$(date +%Y%m%d)_bkp_$DATABASESCHEMA.sql"

#echo "Generating md5sum"
md5sum "$LOCALDIR"/* > "$LOCALDIR"/checklist.chk

#echo "Compressing the dump and checklist"
tar -cvzf "$TEMPDIR"/$(date +%Y%m%d)"_"$DATABASEENV"_"$DATABASESCHEMA".tar.gz" "$LOCALDIR"/*

#echo "Sending the compressed file to d2"
## scp "$TEMPDIR"/"$DATABASESCHEMA".tar.gz "$BACKUPHOST":"$REMOTEDIR"

#echo "Removing generated files"
#rm "$LOCALDIR"/checklist.chk > /dev/null 2>&1

#rm "$LOCALDIR"/"$(date +%Y%m%d)_bkp_$DATABASESCHEMA.sql" > /dev/null 2>&1

#rm "$TEMPDIR"/"$DATABASESCHEMA".tar.gz > /dev/null 2>&1

rm "$LOCALDIR"/"$(date +%Y%m%d)_bkp_$DATABASESCHEMA.sql"
echo $(date +%H:%M)

호스트, 사용자, 비밀번호, 데이터베이스, LOCALDIR, BACLUPHOST, REMOTEDIR을 자신의 매개변수로 교체하세요.

관련 정보