최신 접두사 파일로 자동 데이터베이스 백업을 위한 cronjob

최신 접두사 파일로 자동 데이터베이스 백업을 위한 cronjob

저는 최신 Linux Mint를 사용하고 있습니다. 데이터베이스 백업을 위한 특별한 cronjob을 생성할 수 있는지 알고 싶습니다.

/etc/cronjob파일에는 다음 코드가 있습니다.

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh

내 것에는 /home/users/backup.sh다음이 있습니다.

mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql

대신, 우리가 가지고 있는 날짜를 기반으로 날짜와 같은 것을 동적으로 추가하고 full_myDB.sql싶습니다 .2014-04-04_full_myDB.sql

SQL 백업 파일이일주일 이상나는 cronjob이 할 수 있기를 바랍니다삭제자동으로.

답변1

GNU date(Linux Mint의 기본값)를 사용하면 다음을 수행할 수 있습니다.

mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql

1주일이 지난 파일을 삭제하려면:

find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +

일반적으로 제거하기 전에 제거할 내용을 확인하는 것이 현명하지만(적어도 스크립트를 테스트할 때) 이렇게 하려면 다음을 수행하면 됩니다.

find /home/users/backup_MyDB -type f -mtime +7

답변2

위의 정보를 사용하여 백업 속도를 저하시키는 매우 큰 테이블 중 하나를 실제로 자르는 또 다른 소규모 업데이트를 제공하고 싶었습니다.

이것이 다른 사람들에게 도움이 되기를 바랍니다.

위의 정보를 사용하여 다음 내용으로 mysqlbackup.sh라는 기본 쉘 스크립트를 만들었습니다.

#!/bin/sh
find /data/var/backups/mysql/dumps -type f -mtime +3 -exec rm {} +
mysql -e "truncate table sitename_prod.cache_table"
mysqldump sitename_prod > /data/var/backups/mysql/dumps/$(date +%F)_full_sitename_prod.sql

다음을 실행하세요.chmod +x mysqlbackup.sh

나는 또한 이것을 crontab -e에 넣었습니다.

# MYSQL Dump and retention for 3 days
30 22 * * * bash /root/bin/mysqldump.sh > /dev/null 2>&1

답변3

오래되었다는 것을 알고 있지만 위의 답변을 사용하고 파일 압축 지침을 추가했습니다. 다른 사람들도 이것이 유용하다고 생각하기를 바랍니다.

1) 약간의 조사 끝에 7-zip이 최고의 압축기인 것 같습니다. Linux 배포판이 이를 지원하는 경우 적절한 설치 프로그램을 사용할 수 있습니다.

sudo apt-get install p7zip-full

또는 더 편안하다면 tar.gz를 사용할 수 있습니다.

/home/users/backup.sh 2) 그런 다음 다음과 같은 내용 으로 스크립트를 만듭니다 .

#!/bin/sh
find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +
mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql
7z a /home/users/backup_MyDB/$(date +%F)_full_myDB.7z /home/users/backup_MyDB/*.sql
rm -f /home/users/backup_MyDB/*.sql

스크립트는 7일보다 오래된 파일을 찾아서 삭제한 다음 SQL 덤프를 수행하고 디렉터리에 있는 모든 .sql 파일을 7-zip으로 압축한 다음 디렉터리에 있는 모든 .sql을 삭제합니다(필요한 경우 선택적으로 mysql을 추가합니다). 이전 답변에서 언급한 대로 덤프 전 명령)

chmod +x /home/users/backup.sh3) 실행 가능하도록 만들었습니다 .

3.1) 스크립트가 예상대로 작동하는지 테스트해야 합니다.

4) 작업을 프로그래밍합니다.crontab -e

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh >> /dev/null 2>&1

그게 다야. 매일(일요일 제외) 오전 4시 30분에 MySQL 데이터베이스를 백업하고 백업을 압축합니다.

답변4

@Graeme의 답변에 추가하려면 cron 작업에서 '%' 문자를 이스케이프해야 할 수도 있으므로 다음과 같이 표시될 수 있다는 점에 주목할 가치가 있습니다.

 mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +\%F)_full_myDB.sql

관련 정보