내 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
'sourcetip' 카테고리의 다른 글
윈도우즈 PowerShell에서 Node.js 환경 변수 전달 (0) | 2023.09.05 |
---|---|
Angular를 사용하여 401s를 전 세계적으로 처리 (0) | 2023.09.05 |
AWS SES SMTP 사용 - 오류 554 메시지 거부:이메일 주소가 확인되지 않았습니다.다음 ID가 지역 체크인에 실패했습니다. (0) | 2023.09.05 |
항목 또는 하위 항목이 태그와 일치하는 경우 항목 선택 (0) | 2023.09.05 |
아이폰 SDK 4와 함께 Xcode 3.2.3을 설치하면 "Base SDK 누락"이 발생하고 다른 SDK가 표시되지 않습니다. (0) | 2023.09.05 |