매일 데이터베이스를 백업하기 위해 cron 작업을 설정하려고 합니다. 이것이 내가 crontab 파일에 쓴 내용입니다:
25 18 * * * root mysqldump -u root -p myPassWord --all-databases | gzip > /var/backup/database_`date '+%m-%d-%Y'`.sql.gz
18시 25분에는 아무 일도 일어나지 않았기 때문에 내 /var/log/syslog
파일(서버는 Debian에 있음)을 확인한 결과 다음을 발견했습니다.
Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16252]: (root) CMD (/usr/local/ispconfig/server/server.sh 2>&1 > /dev/null | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done)
Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16253]: (getmail) CMD (/usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null)
Jan 24 18:25:01 ns311475 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<3xFlL2kNAAB/AAAB>
Jan 24 18:25:01 ns311475 dovecot: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<rhRlL2kNvwB/AAAB>
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: connect from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: lost connection after CONNECT from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: disconnect from localhost.localdomain[127.0.0.1]
첫 번째 줄을 이해하지 못합니다. 나머지는 질문을 이메일로 보내려고 하는 것 같지만 아무 것도 얻지 못합니다.
답변1
좋은 매뉴얼을 읽어보세요: man 5 crontab
: 거기에서 "%"가 cron에 특별한 의미를 가지고 있다는 것을 알 수 있을 것입니다.
이로 인해 의도한 명령이 중단됩니다.
그 외에 이것은 mySQL 백업을 시작하는 매우 나쁜 방법입니다.
- 루트 DB 비밀번호는 모든 로컬 사용자 또는 snmp 읽기 액세스 권한이 있는 모든 사용자가 볼 수 있는 프로세스 목록에 나타납니다.
- 명백한 이유 없이 쉘 내에서 서브쉘을 시작해서는 안 됩니다. 대신 "$(command)"를 사용하세요.
- gzip은 하나의 CPU만 사용합니다. 따라서 이 부분은 전체 백업 속도를 저하시킵니다.
당신은:
- 루트 데이터베이스 비밀번호를 루트 폴더에 있는 파일(.mysql - 파일의 정확한 구문과 이름이 기억나지 않음)에 입력하세요. 이 파일은 루트에서만 액세스할 수 있습니다. 그러면 mySQL 비밀번호를 사용하여 자동 루트 로그인이 활성화됩니다.
- 현재 수행 중인 작업을 /usr/local/sbin에 있는 스크립트에 넣습니다(아마도 루트 및 신뢰할 수 있는 그룹만 읽을 수 있음)
- cron을 통해 스크립트를 호출합니다.
- 스크립트의 모든 명령에 대해 전체 경로를 사용하십시오. 모든 "공통" 경로가 설정된 환경에서는 Cron이 실행되지 않을 수 있습니다.
- 사용하거나
pgzip
여유공간이 있으면 백업 완료 후 압축하세요.
답변2
데비안에는 MySQL 데이터의 덤프, 압축 및 회전을 처리하는 데 도움이 되는 패키지가 있습니다. 다음 명령을 사용하여 설치할 수 있습니다.
$ sudo apt-get 설치 automysqlbackup
그 후에는 매일, 매주, 매월 덤프가 배치됩니다./var/lib/automysqlbackup