sourcetip

내 sqdump는 crontab에서 작동하지 않습니다.

fileupload 2023. 9. 5. 20:43
반응형

내 sqdump는 crontab에서 작동하지 않습니다.

mysql db를 백업하는 crontab(ubuntu 서버)에 cronjob을 추가하려고 합니다.

터미널에서 스크립트를 루트로 실행하면 잘 작동하지만 crontab에 삽입하면 아무 일도 일어나지 않습니다.분마다 실행하려고 했지만 /var/db_backups 폴더에 파일이 나타나지 않습니다.

(다른 cron 작업은 잘 작동합니다)

cron 작업은 다음과 같습니다.

* * * mysqdump -u root -pHERE MY PASSWORD --all-database | gzip > /var/db_backups/database_'date +%d%m%y'.sql.gz

무엇이 문제가 될 수 있습니까?

% 문자를 \로 이스케이프해야 합니다.

mysqldump -u 'username' -p'password' DBNAME > /home/eric/db_backup/liveDB_`date +\%Y\%m\%d_\%H\%M`.sql

동일하게 시도했지만 덤프가 0KB로 생성된 것을 발견했습니다.그래서 저는 시간을 절약할 수 있는 해결책에 대해 알게 되었습니다.

명령:

0 0 * * * mysqldump -u 'USERNAME' -p'PASSWORD' DATEBASE > /root/liveDB_`date +\%Y\%m\%d_\%H\%M\%S`.sql

참고: 1) 필요에 따라 시간 설정을 변경할 수 있습니다.나는 매일 위의 명령에 따라 설정했습니다.

작은따옴표(') 안에 사용자 이름, 비밀번호 및 데이터베이스를 입력해야 합니다.

위의 명령어를 크론탭에 적습니다.

이것이 누군가에게 도움이 되길 바랍니다.

cron 로그 확인(/var/log/syslog에 있어야 함) grep을 사용하여 로그를 필터링할 수 있습니다.

grepCRON /var/log/syslog

또한 로컬 메일 상자를 확인하여 크론 메일이 있는지 확인할 수 있습니다.

/var/mail/message

또한 crontab 파일에 다른 수신 메일을 설정할 수 있습니다.

MAILTO=your@mail.com

또는 사용자 지정 명령 mycommand를 만들 수 있습니다.옵션을 추가할 수 있습니다.실행 권한을 부여해야 합니다.

모든 백업을 저장하는 폴더를 두는 것이 좋습니다. 이 경우에는 쓰기 가능한 폴더 "백업"을 사용하여 먼저 "홈"에 생성하는 것이 좋습니다.

"usr/local/bin/mycommand"에 있는 내 명령:

#!/bin/bash
MY_USER="your_user"
MY_PASSWORD="your_pass"
MY_HOME="your_home"
case $1 in 
"backupall")
    cd $MY_HOME/backup
    mysqldump --opt --password=$MY_PASSWORD --user=$MY_USER  --all-databases > bckp_all_$(date +%d%m%y).sql
    tar -zcvf bckp_all_$(date +%d%m%y).tgz bckp_all_$(date +%d%m%y).sql
    rm bckp_all_$(date +%d%m%y).sql;;
*)  echo "Others";;
esac

Cron: 매월 첫째 날을 실행합니다.

0 0 1 * * /usr/local/bin/mycommand backupall

어느 정도 도움이 되었으면 좋겠습니다.

네, 저도 비슷한 문제가 있어서 고칠 수 있었습니다.

이 경우 스크립트에 mysqdump 명령을 삽입한 다음 mysqdump 명령을 실행하는 사용자의 프로필을 소스로 만들 수 있습니다.

. /home/bla/.bash_profile

그런 다음 mysqldump 명령의 절대 경로를 사용합니다.

/usr/local/mysql/bin/mysqldump -u root -pHERE THERE IS MY PASSWORD --all-databases | gzip > /var/db_backups/database_`date +%d%m%y`.sql.gz

로컬 호스트 mysql 백업: 01 * * * /usr/local/mysql/bin/mysqldump -uroot -ppassword --opt database > /path/to/directory/filename.sql

(-p와 암호 또는 -u와 사용자 이름 사이에는 공백이 없습니다. -u와 username - 루트를 올바른 데이터베이스 사용자 이름으로 대체하십시오.)

저한테는 효과가 있어요.-p와 암호 또는 -u와 사용자 이름 사이에 공백 없음

새 파일을 만들고 파일 위치에 덤프할 코드를 실행한 후 압축합니다. cron을 통해 스크립트 실행

Ubuntu에서 Percona Server(MySQL 포크)를 사용하고 있습니다.패키지(일반 MySQL 패키지일 가능성이 매우 높음)에는 다음과 같은 유지관리 계정이 제공됩니다.debian-sys-maint할 때 되고 자격 은 계정사기위설때인정다치생보니증인저됩에 됩니다./etc/mysql/debian.cnf.

그리고 이제 놀라운 것은:심볼릭 링크/root/.my.cnf가키기리를 /etc/mysql/debian.cnf또한 설치됩니다.

파일은 사용 시 자동으로 읽히는 옵션 파일입니다.mysql또는mysqldump기본적으로 로그인 자격 증명은 해당 파일과 명령줄에 두 번 부여됩니다.이것이 제가 가진 문제였습니다.

따라서 이 상태를 방지하기 위한 한 가지 해결책은 다음과 같은 옵션을 사용하는 것입니다.mysqldump그러면 옵션 파일을 읽을 수 없습니다.을 통해 증명을 할 수 있는 나 사용할 수 있습니다.ps백업이 실행되면 암호를 실제로 볼 수 있습니다.따라서 사용자 이름과 암호를 사용하여 고유한 옵션 파일을 생성하고 이 파일을 다음으로 전달하는 것이 가장 좋습니다.mysqldump경유하여

옵션 파일은 를 사용하여 생성하거나 편집기에서 간단히 생성할 수 있습니다.

중입니다.mysqldump경유로sudo에서 명행에로 지정root효과가 있습니다, 단지 그것 때문입니다.sudo일반적으로 변하지 않습니다.$HOME,그렇게.my.cnf찾을 수 없습니다.하면 .cronjob이 됩니다

변경 사항을 로드하려면 서비스를 다시 시작해야 할 수도 있습니다.

service cron restart

또는

/etc/init.d/cron restart

언급URL : https://stackoverflow.com/questions/19731148/mysqldump-doesnt-work-in-crontab

반응형