2016-11-22 1 views
-1

데이터베이스 서버를 백업하기위한 sh 스크립트가 있습니다.sh 스크립트의 mysqldump가 작동하지 않습니다.

#!/bin/bash 
mysqldump -u <username> -p<password> --all-databases --single-transaction --opt > /home/backup/h_157_2-1.sql 
rsync -zrp --partial /home/backup/h_157_2-1.sql [email protected]<server-ip>:/home/backup/H_157_2/ 

명령 줄에서이 두 명령을 직접 실행하면 예상대로 작동하고 내용이있는 .sql 파일이 생성됩니다. 내가 스크립트를 실행할 때 파일에만이 포함되어 있습니다

Usage: mysqldump [OPTIONS] database [tables] 
OR  mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 
OR  mysqldump [OPTIONS] --all-databases [OPTIONS] 
For more options, use mysqldump --help 

이미 옵션의 순서를 변경하거나 --opt을 떠나려고하지만 결과는 여전히 그대로였다. 그러면 스크립트에서 명령이 작동하지 않을 수 있습니다.

+0

mysqldump 구문에 오류가 있습니다. 그 이유는 파일이 mysqldump 명령의 결과로 채워진 이유입니다. –

+0

@ElzoValugi 오류가 무엇입니까? 명령을 명령 행에 복사하고 실행하면 왜 작동합니까? – DocRattie

+0

'--all-databases' 대신'-A'을 시도하십시오. 그것은 나를 위해 일했다 –

답변

0

초기 문제를 해결할 수있는 방법을 찾지 못했습니다. 채팅에서 Elzo Valugi의 도움을 받더라도 그 결과는 여전히 동일합니다. mysqldump가 작동하는 커맨드 라인에서 실행되었습니다. 스크립트에서 Excecuted 나는 항상 같은 메시지를 얻었다. (초기 질문 참조).

문제를 해결하기 위해 모든 데이터베이스를 덤프하는 해결 방법을 만들었습니다. MySQL의 스토리지 디렉토리의 모든 directorys 통해이 I 루프와

#!/bin/sh 
for dir in /var/lib/mysql/*/; 
do 
    dir=${dir%*/} 
    mysqldump -u <user> -p<password> ${dir##*/} --single-transaction --opt > /home/backup/h_157_2_${dir##*/}.sql 
    rsync -zrp --partial /home/backup/h_157_2_${dir##*/}.sql [email protected]<server-ip>:/home/backup/H_157_2/ 
done; 

는 디렉터리 이름을 삭감하고 mysqldump를 위해 그것을 사용합니다. 이렇게하면 모든 데이터베이스가 자체 파일에 저장됩니다. 나는이 모든 것들을 하나에 결합하는 것으로 해결 될 수 있다고 생각하지만, 나의 필요에 따라 나는 다른 파일들과 잘 맞습니다.

관련 문제