이것은 장기간에 걸친 복잡한 레일 데이터베이스 마이그레이션의 일반적인 문제입니다.
는 여러 가지 방법이있어 :
(1) 데이터베이스 마이그레이션을 실행하기 전에 메시지와 함께 페이지, 예를 들어 "우리는 다음 30 분 동안 유지 보수를 위해 다운 '에 웹 트래픽을 리디렉션합니다. 이렇게하면 데이터베이스가 부분적으로 만 마이그레이션되어 응용 프로그램에 들어 오거나 실행되는 요청이 차단됩니다. 다운 타임으로 인해 이상적인 것은 아닙니다.
(2) 코드 배포 전에 데이터베이스 마이그레이션을 실행하고 데이터베이스가 역방향 및 역방향 호환이 가능하도록하십시오. 그런 다음 코드를 배포하여 새 스키마를 사용하십시오. "롤백"해야하는 경우 (다음 릴리스까지) 이전 스키마에도 쓸 수 있습니다. 그런 다음 나중에 다른 이주에서 컬럼을 제거하거나 이름을 YY 어 스키마를 정리합니다. 이를 "가동 중지 시간 제로 데이터베이스 이주"라고합니다.
(3) 두 개의 데이터베이스가있을 수 있으며 일단 새 데이터베이스가 준비되면 스위치를 수행 할 수 있습니다. 하지만 여기에서 문제는 응용 프로그램에서 빈번히 씁니다. 나중에 스크립트를 실행하여 동기화 할 수 있습니다.
롤백해야하는 경우에 대비하여 마이그레이션 전에 데이터베이스의 백업 덤프를 수행해야합니다. 예를 들어 컬럼을 제거하는 것과 같이 일부 DB 이주가 되돌릴 수 없기 때.입니다. 또는 영향을받는 테이블을 임시 테이블로 백업으로 복사 할 수 있습니다.
물론 비교적 조용한 기간에 마이그레이션을 수행하십시오.
solr의 경우 오류를 발생시키지 않고 증분 업데이트를 처리해야합니다.