다른 서버에는 존재하지 않는 Prod의 데이터를 수정해야하는 경우가 있습니다. 이것은 버그뿐 아니라 클라이언트가 보낸 파일에서 잘못된 데이터를 가져 오거나 누군가가 시스템을 해킹하여 발생한 문제에서 가져온 데이터 일 수 있습니다. 또는 잘못된 데이터 입력으로 인한 문제로 인한 것입니다. 데이터베이스가 크거나 시간이 중요한 경우 최신 백업을 복원하고 dev에 수정해야 할 시간이 없을 수 있습니다.
첫 번째 방어 (및 Enterprise 데이터베이스가 없어서는 안되는 것)는 감사 테이블입니다. 이를 사용하여 잘못된 데이터 변경을 취소 할 수 있습니다. 또한 감사 된 데이터를 되돌리기 훨씬 전에 스크립트를 작성하여 데이터를 이전 상태로 되돌리고 다른 서버에서 테스트 할 수 있습니다. 그런 다음 유일한 위험은 되돌릴 올바른 레코드를 식별하는 것입니다.
다음으로 프로덕션에서 데이터를 변경하는 모든 스크립트에는 다음이 포함되어야합니다.
이들은 명시 적 트랜잭션이어야하며 TRY Catch 블록이 있어야합니다.
변경 사항을 확인한 후 롤백하는 데 사용할 수있는 테스트 모드가 있어야합니다. 변경 전에 올바른 선택문이 있어야하고 변경이 올바른지 확인하기 위해 변경 후 한 번 실행해야합니다. 스크립트는 처리 된 행 수를 표시해야합니다. 우리는이 사전 설정 중 일부를 템플릿으로 완성하여 조각이 완료되도록합니다. 변경 사항을위한 템플리트는 수정 사항을 작성하는 데 시간을 절약하는 데 도움이됩니다.
변경하거나 업데이트 할 데이터가 많은 경우 각 배치마다 커밋을 사용하여 배치로 실행할 스크립트 작성을 고려하십시오. 백만 개의 레코드를 수정하는 동안 전체 시스템을 잠그고 싶지 않습니다. 수정해야 할 대량의 데이터가있는 경우 dba 또는 성능 조정에 익숙한 사람이 실행 전에 스크립트를 검토하고 가능하면 근무 외 시간 동안 실행해야합니다.
다음으로 프로덕션 환경에서 변경하는 모든 스크립트를 코드 검토하고 소스 제어에 포함시킵니다. 예외없이.
마지막으로 개발자는이 스크립트를 실행하지 않아야합니다. dbas 또는 구성 관리 그룹에서 실행해야합니다. 그 중 어느 것도 가지고 있지 않다면, 기술 책임자 또는 그 이상인 사람들 만이 제품을 실행할 수있는 권리가 있어야합니다. 제품을 실행하는 사람이 적을수록 문제를 쉽게 추적 할 수 있습니다. 스크립트는 간단하게 실행되고 강조 부분이없고 한 번에 한 단계 씩 실행되도록 작성해야합니다. where 절을 강조 표시하는 것을 잊었을 때 사람들이 종종 곤경에 빠지게하는 것은 중요한 일입니다.