php79 / backup Goto Github PK
View Code? Open in Web Editor NEW리눅스 백업
Home Page: http://www.php79.com
License: MIT License
리눅스 백업
Home Page: http://www.php79.com
License: MIT License
로컬 풀 백업 기능에서 개선 요청 드립니다.
좋은 솔루션에 감사드립니다^^
안녕하세요. 좋은자료 공유해주셔서 요긴하게 사용하고있습니다.
다름이아니라 증분백업시에 원하는 날짜로의 복구는 어떻게해야할까요?
현재 파일 전체복구는
rsync -avr /backup/.snapshots/daily.0/localhost/data/* /data/
위 커맨드를 사용해서 이용하고있는데, 증분백업시 원하는날짜로의 복구는 어떻게 해야할지 이슈남깁니다.
문의할곳이 없어.. 이슈로 남깁니다.
[04/Oct/2016:04:05:01] /usr/bin/rsnapshot daily: ERROR: Lockfile /var/run/rsnapshot.pid exists and so does its process, can not continue
mysql 의 위치를 변경하게 되어서 위치 수정후 증분백업 실행하니 위와 같은 에러구문이 출력되네요.
무엇이 문제인지를 잘 모르겠습니다..
백업 에러 유무에 대한 정기 점검 시행시, 이미 해결된 과거 로그가 계속 노출됨
# grep ERROR /var/log/rsnapshot|tail
[2017-11-28T04:05:01] /usr/bin/rsnapshot daily: ERROR: rsnapshot can not continue. If you think an entry looks right, make
[2017-11-28T04:05:01] /usr/bin/rsnapshot daily: ERROR: sure you don't have spaces where only tabs should be.
[2017-11-29T04:05:01] /usr/bin/rsnapshot daily: ERROR: /etc/rsnapshot.conf on line 207:
rsnapshot 은 1회성이 아닌 대부분 영구적인 설정, 디렉토리 미존재, 원격 서버 미접속 오류이므로 최근 로그만 확인하면 됨.
따라서 logrotate 를 통해, 주단위로 로그 파일을 백업하도록 안내
echo '/var/log/rsnapshot {
rotate 52
weekly
compress
missingok
}' > /etc/logrotate.d/rsnapshot
lograte 적용 결과
# ls -lt /var/log/rsnapshot*
-rw-r--r--. 1 root root 29621 5월 2 07:24 /var/log/rsnapshot
-rw-r--r--. 1 root root 2703 4월 28 10:28 /var/log/rsnapshot-20180429.gz
-rw-r--r--. 1 root root 2197 4월 21 10:26 /var/log/rsnapshot-20180422.gz
-rw-r--r--. 1 root root 2696 4월 15 09:15 /var/log/rsnapshot-20180416.gz
-rw-r--r--. 1 root root 6604 4월 7 18:58 /var/log/rsnapshot-20180408.gz
php79: /home 디렉토리에서 제외할 디렉토리/파일 목록을 만들 경우, 아래처럼 4번째 인자값을 추가해주시면 됩니다.
backup /home/ localhost/ exclude_file=/backup/home.exclude
(탭으로 구분되어 있습니다.)
현재 위와 같이 vi /etc/rsnapshot.conf 설정값이 있는데요.
/backup/home.exclude 내에
/home/test/
지정해줘도 백업시 test 계정을 백업하고 있습니다.
테스트를 해봤는데 특별한 에러는 보이지 않습니다.
예전부터 잘 사용해왔는데. 백업하드 교체후에 백업은 잘 진행되는데 exclude_file 부분이 적용이 안되고 있네요.
[root@localhost backup]# rsnapshot -t daily
echo 649 > /var/run/rsnapshot.pid
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded
/home/ /backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/
/backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded
/var/spool/cron/ /backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded
/root/ /backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded
/var/lib/mysql/ /backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/daily.0/localhost/
mkdir -m 0755 -p /backup/.snapshots/tmp/
cd /backup/.snapshots/tmp/
/backup/.snapshots/php79-mysql-backup.sh
cd /backup/.snapshots/
sync_if_different("/backup/.snapshots/tmp/",
"/backup/.snapshots/daily.0/localhost/mysqldump/")
mkdir -m 0755 -p /backup/.snapshots/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded
--exclude-from=/backup/home.exclude /home/
/backup/.snapshots/daily.0/localhost/
touch /backup/.snapshots/daily.0/
mariadb replication 상태에서 master 백업시, slave 에서 복원을 위한 replication 정보 추가
--single-transaction 설정은 이미 포함되어 있음
백업된 sql 상단에 추가되는 내용
--
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000113', MASTER_LOG_POS=72282874;
--
-- GTID to start replication from
--
-- SET GLOBAL gtid_slave_pos='0-1-193208812';
ex)
--single-transaction --master-data=2
/backup/.snapshots/monthly.0/
백업이 존재하지 않음.
1개월이 지난 백업을 최근 3개월간 보관하는 월단위 백업의 누락.
grep monthly /var/log/cron
크론 데몬에서 월단위 백업의 실행 기록 조차 없음.
백업 스케쥴 등록 설정 파일의 마지막 라인의 공백이 없어, 크론 데몬에서 인식되지 않던 현상임.
https://github.com/php79/backup/blob/master/docs/local-incremental-backup.md#rsnapshot-백업-스케쥴-등록
문제가 있는 설정 확인
# tail -n2 /etc/cron.d/php79-rsnapshot
5 3 * * 1 root /usr/bin/rsnapshot weekly
5 2 1 * * root /usr/bin/rsnapshot monthly[root@localhost ~]#
monthly 뒤에 빈 라인없이 바로 붙어 나옴.
/etc/cron.d/php79-rsnapshot
파일 마지막에 빈라인만 추가하면, 다음 매달 1일부턴 월단위 백업이 정상적으로 이루어지게 됨.echo '' >> /etc/cron.d/php79-rsnapshot
# tail -n2 /etc/cron.d/php79-rsnapshot
5 3 * * 1 root /usr/bin/rsnapshot weekly
5 2 1 * * root /usr/bin/rsnapshot monthly
[root@localhost ~]#
[22/Jul/2016:04:05:01] /usr/bin/rsnapshot daily: started
[22/Jul/2016:04:05:01] echo 41664 > /var/run/rsnapshot.pid
[22/Jul/2016:04:05:01] mkdir -m 0755 -p /backup/.snapshots/daily.0/
[22/Jul/2016:04:05:01] /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home /backup/.snapshots/daily.0/localhost/
[22/Jul/2016:06:18:56] /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /usr/local/mysql/lib/mysql /backup/.snapshots/daily.0/localhost/
[22/Jul/2016:06:18:56] mkdir -m 0755 -p /backup/.snapshots/daily.0/localhost/backup/
[22/Jul/2016:06:18:58] mkdir -m 0755 -p /backup/.snapshots/tmp/
[22/Jul/2016:06:18:58] cd /backup/.snapshots/tmp/
[22/Jul/2016:06:18:58] /etc/cron.daily/php79-mysql-backup.sh
[22/Jul/2016:06:20:54] cd /backup/.snapshots/
[22/Jul/2016:06:20:54] sync_if_different("/backup/.snapshots/tmp/", "/backup/.snapshots/daily.0/localhost/backup/mysqldump")
[22/Jul/2016:06:20:54] /bin/rm -rf /backup/.snapshots/tmp/
[22/Jul/2016:06:20:54] touch /backup/.snapshots/daily.0/
[22/Jul/2016:06:20:54] rm -f /var/run/rsnapshot.pid
[22/Jul/2016:06:20:54] WARNING: /usr/bin/rsnapshot daily: completed, but with some warnings
예제처럼
/usr/bin/rsnapshot daily: completed successfully
해당 메세지와 다르게 warnings 메세지가 있어서요.
두번째로, home 디렉토리에서 제외할 디렉토리를 지정하려 하는데요.
만약 home 디렉토리 하위에 test1,test2,test3 디렉토리가 있는 상태에서 test2,test3 디렉토리를
제외하고 증분백업을 하려할려면 어떻게 해야 할까요?
conf 파일에서 아래와 같이 예제가 있는데 정확하게 이해를 못하겠네요.
php79: /home 디렉토리에서 제외할 디렉토리/파일 목록을 만들 경우, 아래처럼 4번째 인자값을 추가해주시면 됩니다.
backup /home/ localhost/ exclude_file=/backup/home.exclude
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.