프로덕션 환경에서 발생한 최악의 데이터베이스 사고는 무엇인가요?

예를 들면 다음과 같습니다: 예: where 절을 추가하는 것을 잊어버려 고객 테이블의 모든 행을 업데이트합니다.

  1. 이 사실을 깨닫고 동료나 고객에게 보고하는 과정은 어땠나요?
  2. 어떤 교훈을 얻었나요?

내 잘못 "최악의 생쥐라.

truncate table Customers
truncate table Transactions

내가 일부러 내, 내가 대체 뭘 MSSQL 서버의 로그인되었습니다 선택해제합니다 로컬 복사본인 t&quo , * 익숙한 &quot 빼았아놓구 우트릭스 싶었다. 두 번째 삭제할 수 있었을 때 보다 훨씬 더 오래 끌고 갔던 것을 절반 정도가 내 주인은 내가 방금 비시빌리 슬픔으로창백해지고 주문했다. 견과류 들어간 후, 약 반 미노타우에 lionbridge 사이트를 모니터합니다 시작했다 "고 당시 우리 사이트의 이메일 아래에있어.

교훈? 열 살 이상 DB 연결을 유지할 수 없는 절대적 필요하다.

4am 인도되니 불과 백업하도록 얻은 데이터를 리스토어하는 backups 너무! 내 주인은 내가 느낀 뒤 이런 날 저녁 식사.

해설 (2)

내가 일하는 작은 there& 전자상거래 업체 중 2, # 39 의 개발자와 기술입니까 DBA 나 개발자. # 39 m, 일반적으로 i& 않는 습관이 업데이팅이 운영 데이터 저장 프로시저 we& 경우 즉석에서 우리는 그들을 통해 살펴본 소스 제어 및 배포, ve 변경일 # 39 는 공식적으로 %s/dbase/ext_table. 일상적인 설정되었습니다.

애니웨이 아니라 사용자가 필요로 하는 나에게 온 우리의 업데이트하려면 수행됨 배치처리 업데이트하더라도 연락처 데이터베이스, 다양한 시설을 갖추고 있다. 그래서 작성했습니까 쿼리하지 아웃해야 lionbridge 의 테스트 환경, 같은 일이

update facilities set address1 = '123 Fake Street'
    where facilityid in (1, 2, 3)

뭐 그런. 그 실행했음 테스트, 3 행 업데이트하십시오. It 에 대한 우리의 클리보드로 복사됩니다, 붙여넣거나 터미널 서비스 운영 sql 로 실행할 수 있는 것을 https://xxx. 실행했음 해버린다는거, 공포 및 업데이트되도록 100000 행뿐만 5 초 걸렸다. 내가 아닌 첫 번째 줄은 두 번째, 그리고 wasn& 복사됨 짐작이지만요. # 39, t, kbd&gt CTRL&lt, /kbd&gt, as I &lt 쏠리고 있다. + <;;;;;; CTRL&lt kbd&gt V&lt /kbd&gt &lt kbd&gt /kbd&gt. & # 39 /kbd>;;;; d + &lt kbd&gt E&lt.

아마 이 사람이 내 DBA, 오래된 그리스 젠틀맨 트럼프리스트 I& # 39, ve 별로 충족되었습니다 않았다. 다행히도 하나님이 모든 페이지에 있는 백업 및 it didn& # 39 만 t break, 다행히 필드는 상행담관염이라고 표시하기 위한 목적 (및 청구처 / 배송).

39 는 교훈, 복사, 붙여넣기 하고, 아마도 다른 어떤 you& 신경을 써야 한다.

해설 (0)

뭔가 효과에 대한: &gt. ',' = null 메일별 업데이트하십시오 프로치스트리메 설정되었습니다 젠티메 = null

모든 운영 데이터베이스, 데이터베이스에 대한 재전송 뉴스레터에는 메일별.

해설 (0)

주니어 DBA가 하려고 했던 일입니다:

delete from [table] where [condition]

대신 타이핑을 했습니다:

delete [table] where [condition]

이는 유효한 T-Sql이지만 기본적으로 where [조건] 비트를 완전히 무시하고(적어도 당시에는 MSSQL 2000/97에서 그랬지만 어느 것이었는지 기억이 나지 않습니다) 전체 테이블을 지웁니다.

재미있었어요 :-/

해설 (1)

39 는 약 7 년 전이든가 생성 후 DB 에 대한 변경 스크립트입니다 client& 야근해요. 전 그 때 내가 바뀌었을 뿐 아니라, SQL 난 이미 생성된 저장 프로시저 &quot 스크립트입니다 종속적입니다 objects&quot. 검사했어요 난 내 로컬 컴퓨터의 실행했음 정보기술 (it) 및 모든 일을 잘 하는 듯 보였다. 내가 it on the 실행했음 client& # 39 의 서버와 스크립트입니다 성공했습니다.

그럼 내가 로드됨 웹 사이트 및 사이트 비어 있습니다. 내 공포, 이 &quot 스크립트입니다 종속적입니다 objects"; 설정 '테이블' 을 가질 때 마다 내 테이블 저장 프로시저 드롭합니다 못했다.

내가 무슨 일이 있었는지 알 수 있도록 하고 있는 그 즉시 주관업체로 라는 개발 및 보스 백업하도록 최신값 DB 를 찾을 수 있다. 다른 결론을 내릴 수 없다는 것은 물어보소서 및 다자 devs pokemonsilver. 2 에서 그는 제자리에 사용하지 않고 데이터 백업 시스템을 회복할 수 있었다. # 39 의 website& 클라이언트뿐 손실됩니다 자신의 전체 컨텐츠 쉐퍼드도 근본 원인이 되었다. 그 결과, a $5000 크레딧보다 주어진 lionbridge 클라이언트입니다.

좋은 학습, 그리고 지금 나는 전송되었기 가져다줄래요 슈퍼주의 스크립트 및 실행에 대한 변경 사항이 백업하면 DBs 이번이 처음이다. # 39 m i& 농담도 나올 때마다 함께 있으며, 현재, 여전히 같은 회사에서 누군가는 항상 백업에 대한 유명한 &quot 드롭합니다 TABLE&quot, 또는 데이터베이스 스크립트에만 불러온다. 사건이다.

해설 (0)

난 커서 관리됨 업데이트하던 작성 후 단 한번도 종료되었습니다. 2m+ 행일 한 표. 이 때까지 그냥 에스컬레이션됨 및 에스컬레이션된 잠급니다 이 전체, 8GB RAM (, 2002년) 실제로 방전시키십시오 확인란 중단 (블루 스크린 등).

해설 (0)
update Customers set ModifyUser = 'Terrapin'

하지만 나는 그런 것을 할 수 있는 테이블을 5000+ 고객, where 절 - 내 이름은 모든 기록을 귈이예요.

교훈: 트랜잭션 커밋합니다 사용 및 롤백에서!

해설 (0)

우린 딱 걸렸네 노드입니다 협력하였습니다 해결하기 위해 노력하고 oralce 클러스터입니다.

그래서 우리는 이 문제가 있는 것은, 스토리지 관리 모듈에서는 제거 및 복사 버튼을 클릭하면 구성내역 끝날거요 재설치하려면 생각이 다른 노드입니다.

흠, 제거, 그렇게 쾌활하게 재거됨 클러스터와의 발려짐 바뀌어 아웃해야 버튼를 전체 스토리지 관리 모듈에서는 모든 노드입니다 에서 시스템.

이로 인해 모든 노드입니다 생산 클러스터 충돌합니다. # 39 한 뒤, 그들은 모두 노드입니다 스토리지 매니저/인텔® wouldn&, t come up!

39 에 대한 흥미로운 here& 대답하도다 backups. 가장 오래된 backups 프레젠테이션이든 회전되지 파악하고 있는 오래된 파일 데이터베이스에서 오프사이트에서, 진실이며당신이 이름은? 그 때 잡을라는데 설정 구성 파일 시스템이 설치되어.

그래서 하나님이 할 사람들이 사용하는 테이프, 몇 시간 뒤 오프사이트로 전송하십시오 배송 및 실행 설명하였노라 재설치했습니다 있었습니다. 이제 우리가 계속 로컬 복제본입니다 설치 및 구성 파일을!

해설 (0)

내가 기억하고 있는 모든 통제가 실행했음 don& # 39, t 근데 저한텐 교훈 - sql 문을 한 수 있다면 그렇게 할 수 있는 트랜잭션 (빅 두려워 로그 파일!).

이 방법으로 생산된 수 있다면, 진행하십시오 구식이다.

  1. 유지 보수 사용합니다.
  2. 백업
  3. 수행하기 변경 4 확인.
  4. 리스토어할 무슨 일 있으면 문제인가

예쁜 쿨 있으나, 일반적으로는 작업 및 가능해 전달자로써 이 절차를 다른 사람에게 실행할지 머무는 동안 밤에 잠을 잘 때 shift 키를 you& # 39, re getting 너회의 믿는다 :-)

해설 (0)

I thought I 에서 일하던 테스트 DB (이 경우, t # 39 wasn& 분명히) # 39, & # 39, 내가 testing& 외면하였나니 하였다. I run 스크립트입니다 우리가 사용하는 모든 데이터를 다시 재설정하려면 테스트 데이터를 표준. 그렇지만 춘향아! 다행히도 이 곳에 있던 backups 들어온넘 데이터베이스의 이후에 그들은 내가 뭔가 잘못된 것이 우리가 할 수 있는 것이 아웃해야 쉽게 뒤로를 재연됩니다 원래 데이터베이스.

그러나 이 사건은 정말 한 수 가르쳐 아니하였으매 일했다구 회사 운영 및 테스트 환경을.

해설 (0)

I did 정확히요 너희는너희가 제안했다. 내가 모든 것을 잊었다 업데이트되도록 테이블에 행이 있기 때문에, 여기서 ID = 5&quot &quot 고객 문서를 유보됨 추가합니다. at the end. 그게 실수였다고.

하지만 제가 똑똑하고 paranoid. I knew I would 꺼지샘 백업하도록 하루. 난 이미 시작 transaction&quot 대해 ";). 난 후) 는 테이블에 점검됩니다 롤백에서 발표했다.

  • It wasn& t.* # 39.

교훈 생산 중: 그러나 그렇게 불구하고 MySQL 같은 테이블에 대한 수 많은 InnoDB 사용하기 시작했다. # 39 하나를 찾을 수 있어야 합니다 haven& 관리됨, t, t 존중하십시오 트랜잭션입니다 진실이며당신이 doesn& MyISAM 테이블 몇 있는 # 39 can& 롤백합니다 생일날이야 t # 39. # 39 는 MySQL, 어떠한 경우에도 발행 및 습관적으로 don& 의탁하도록 &quot 시작 transaction"; 때 아주 중요합니다. 심지어 최악의 didn& 아무것도 할 수 있으며, t # 39 (여기서 일어난 일을) 이 날 InnoDB 테이블과 금지되었는지 했을 것 "이라고 말했다.

내가 복원하십시오 백업하도록 식탁을 했다. 다행히도 우리는 거의 매일 밤 백업본, 데이터 변경, 테이블은 행뿐만 도왔으매 거의 즉각적인 몇 개 없다. 참고로, 우리는 우리 주위에 아무도 남아 있다는 것을 알고, 그들 모두 우리가 생각했던 비사양 innodb 테이블 변환되었습니다 지 오래다. 아무도 나한테 아웃해야 엔드입니다 맞혔어 어딨었는데 잡았다, 아무도 알 수 있습니다. 내 주인은 정확히 똑같은 일을 했어야 할 경우 그가 enter 를 입력하기 전에 너무 너무 일찍 where 절).

해설 (0)

저는 오라클 재실행 로그 파일을 이해하지 못해서(용어는? 오래 전 일입니다) 종이 티켓에서 수작업으로 다시 입력해야 하는 몇 주간의 거래 데이터를 잃어버렸습니다.

주말 동안 입력하는 동안 거래 입력 화면의 유용성에 대해 많은 것을 배웠고 그 후 극적으로 개선되었습니다.

해설 (0)

대부분의 사람들에게는 신앙이니라 they& # 39 는 최악의 시나리오를 운영본 데이터 손실, 데이터 복제, re not running 야간 백업인지 또는 DR 사이트로, 그들은 모든 것을 받을 자격이!

@ [키스] [1] 에 대해, # 39 에서 키워드 옵션임 아니다, T-SQL isn& 삭제하시겠습니까? 이러한 명령문입니다 movd 모두 똑같은 것.

[1]: https://stackoverflow.com/questions/12141/whats-your-worst-database-accident-happened-in-production # 12145

해설 (0)

내게 있는 모든 공간을 소비하는 것은 최악의 심아이엔큐 상태입니까 운영 서버가 있는 HD. 난 그래서 지켜보리니 사용하여 데이터베이스 로그 파일 및 SQL Server 는 결정한 것을 볼 때 약 10 Gb 그래서 난 항상 트런스 (i want to do what i do 로그 파일. I did a 분리하십시오 로그 파일 삭제 후 다시 부착합니다. 그럼 저는 사실을 제대로 닫히지 않는 경우 로그 파일을 실행하십시오 작동하지 않습니다. 그래서 end up with a mdf 파일 및 로그 파일 없음. 감사하게도 어디서 구할 수 있는 길을 따라 데이터베이스를 복원하십시오 마이크로소프트 사이트 갔는데 다른 데이터베이스 복구 및 이동.

해설 (0)

라이브 데이터베이스를 삭제하고 삭제했습니다.

교훈: SQL에 대해 잘 알고 있어야 하며, 무언가를 건드리기 전에 반드시 백업해야 합니다.

해설 (1)

고객 표 때문에, 모든 행을 업데이트하던 &gt 깜박하셨다고 where 절 추가합니다.

그건 바로 i did. 내가 가진 모든 사용자의 비밀번호 열이 업데이트되도록 샘플 구체화하십시오 내가 가진 입력되었는지 드래그합니다 콘솔이군요. 나는 이 부분을 액세스하면 전송되었기 최악의 운영 서버 및 일부 쿼리합니다 어렸을 때 내가 체크아웃하기 이런게야. 그럼 내 늙은 노인 인도하심이라만일 되돌려집니다 백업 및 필드 일부 전화를 했던 일부 고객이 정말 강한 불만을 제기했다. 당연하지 there is another time when i did list. 삭제하시겠습니까 문 - t # 39, 심지어 내가 don& 논의하기를 원하는; -)

해설 (0)

테이블 T_DAT_STORE 잘라냅니다 &gt.

사실 나는 당시 테이블에 t_dat_store 部门是否有人员 작업하십시오. 저는 개발 데이터베이스 연결되어 있었다. 다행히 우리는 사용되고 있는 일일 백업량을 hasn& # 39, t, 이 데이터 그날이라뇨 때까지 6 시간 안에 다시 복권될 수 있었다.

그 이후로 정기적으로 백업을 위해 모든 것을 내가 먼저 개정합니다 잘라냅니다 리스토어하는 확인할 수 있으며, 그로 인하여 내가 잘하고 경미함 표만 해당 백업 (Backup isn& # 39, t done by my 部门是否有人员)

해설 (0)

39, t 이 didn& 다는일은, 그냥 내가 우리 고객이 클린업합니다 엉망하지 누가 일어날 수 있었다.

자신들이 좋은 핫스왑 디스크 어레이 - SQL server 에서 실행되는 상태를 완벽하게 조명이 지정된 디스크 드라이브를 RAID5 지수이다. 빨강, 녹색 = 优秀 = 나쁜.

빨간색, 녹색 드라이브 'genius' 에서 켜졌음 자신들 중의 한 수 있던 리즈한테 가져오기할 및 재장착합니다 (Red) 는 잘 한 아웃해야 나쁜거라 드라이브 (녹색) 를 사용할 수 있습니다. # 39 이 꽤 잘 관리, raid set fy05 - t didn& 낮추기 위해 선택하는 다소 판독값 (Red) 와 우나발리이블 (녹색) 몇 분 동안. 이후 실현 실수와 바꾸어 드라이브뿐만 뒤로를 데이터 블록을 모두 기록된 이 시간 동안 동기화가 손실됩니다 제이베리시 디스크로 되었다). 한 중견 스키마에는 먹어서나 메타 데이터 및 reconstruct 24 직선입니다 몇 시간 뒤 그들은 백업 및 복구 프로그램을 읽을 수 있습니다.

이 이야기는 니클라우디오네베르 개념을 사용하여 유지관리하지 backups RAID5, 항상 세심한 누굴 했다.

내가 왜 만날 수 있어 고객의 운영 시스템에 대한 중대한 실책을 한 번만 명령을 실행할 때 내가 행한 것을 알게 된 것은 너무나도 긴 세계 정보기술 (it) 및 @@@취소됨 전에 큐피드라는 종료.

이 이야기는 도덕적 다음과 같습니다. 항상 뭔가 테스트 결과가 예상과 트랜잭션까지 변경하기 전에 새로 시작 후 및 그래야 커밋합니다 트랜잭션입니다.

일반적으로 많은 종류의 rm - rf / 유형 오류뿐만 관찰을 통해 막을 수 있는 모든 명령을 제대로 정의중 외래 키 제약 및 너회의 스키마에는 라브레드 & # 39 무 (無) 멀리 cascade& # 39;;

해설 (0)