데이터베이스 서버를 백업하는 sh 스크립트가 있습니다.
#!/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 root@<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
했지만 결과는 여전히 동일합니다. 그렇다면 스크립트에서 명령이 작동하지 않는 원인은 무엇입니까?
초기 문제를 해결할 방법을 찾지 못했습니다. 채팅에서 Elzo Valugi의 도움으로도 결과는 동일했습니다. 명령 줄에서 실행 된 mysqldump는 finde를 작동했습니다. 스크립트에서 실행하면 항상 같은 메시지를 받았습니다. (초기 질문 참조).
이를 해결하기 위해 모든 데이터베이스를 자체적으로 덤프하는 해결 방법을 만들었습니다.
#!/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 root@<server-ip>:/home/backup/H_157_2/
done;
이를 통해 mysql 스토리지 디렉토리의 모든 디렉토리를 반복하고 dir-name으로 잘라내어 mysqldump에 사용합니다. 이렇게하면 모든 데이터베이스가 자체 파일에 저장됩니다. 나는 이것을 모두 하나로 결합하여 해결할 수 있다고 생각하지만 내 필요에 따라 다른 파일을 사용해도 괜찮습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다