루씬 인덱스복구

인덱스에 Delete,Update작업을 하다가 JVM이 Crash가 나버려, 중간에 segment 파일을 못찾는 사태가 발생하게 되었다. 인덱싱한 파일이 각컨텐츠영역만큼 분리된 상태여서 사이즈가 작은 것은 재인덱싱을 하여 교체하여 운영을 하였지만, 2천만건 이상의 문서가 들어있는 인덱스는 재인덱싱하는데 하루이상이 걸리는 것이여서 루씬메일링과 루크(luke – http://www.getopt.org/luke) 소스를 찾아 복구하는 루틴을 찾았다.

File indexDir = new File("path");
Directory directory = new NIOFSDirectory(indexDir);
CheckIndex checkindex = new CheckIndex(directory);
checkindex.setInfoStream(System.out);
CheckIndex.Status result = checkindex.checkIndex();
checkindex.fixIndex(result);
directory.close();

진짜복구인지는 fixIndex 루틴을 확인해보아야 알듯하다.

덧, 재인덱싱하는 시간만큼 서비스장애된채로 있을까봐 등에 식은땀이… 한시간동안의 장애가 정말 지옥이였다. 쿨럭;

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중