약 3년 전에 저는 의료기관용 Ubuntu 서버를 설치했습니다. RAID 1(소프트웨어 RAID)용으로 HDD 2개를 설정했습니다.
오늘 그들은 갑자기 mySQL 데이터베이스 중 하나의 테이블에 대한 액세스를 잃었습니다.
이제 미러링된(백업) HDD에서 mySQL 데이터베이스를 복원하는 방법은 무엇입니까?
답변1
미러링은 단일 드라이브 오류에 대한 보호일 뿐입니다. 이는 백업을 대체하지 않습니다. RAID-1에서 데이터베이스에 액세스할 수 없는 경우 단일 디스크에서도 액세스할 수 없습니다.
유일한 방법은 전체 데이터베이스를 별도의 디스크 2개(사본 2개 포함)에 복사하고, ddrescue
개별 디스크의 SMART 데이터를 사용 및 분석하고, 필요한 경우 새 디스크를 설치하고, (새?) 디스크를 포맷하고 최신 백업을 복원하는 것입니다. 복사본 중 하나에서 원본 데이터를 추출하고 추출에서 가져올 수 있는 만큼의 데이터를 가져옵니다.smartctl
badblocks
너~ 할 것이다데이터 손실은 ddrescue
최소화되어야 하지만희망인덱스에만!
답변2
RAID는 변경 사항을 즉시 복사합니다.둘 다디스크. 예를 들어 rm
파일이 있으면 rm
두 디스크 모두에 저장됩니다. 아니면 뭔가가 고장나거나, 뭐든지 말이죠.
RAID-1은 디스크 오류로부터만 보호합니다. 하나의 디스크에 오류가 발생하면 어레이는 하나의 디스크만 덜 사용하여 거의 중단 없이 계속 작동합니다. 개념적으로 실제 "기본" 디스크와 "백업" 디스크는 없으며 두 개 이상의 디스크가 매우 안정적인 하나의 디스크 역할을 합니다.
cat /proc/mdstat
예를 들어 어레이 상태를 확인할 수 있습니다 . 어레이가 양호하고 MySQL이 손상되는 경우 MySQL에는 복구 도구가 있습니다. 무엇보다도 백업에서 복원할 수 있습니다.
답변3
백업 드라이브가 없습니다. RAID-1이 있는 경우 미러는 하나만 있습니다. 한 드라이브에 오류가 발생하더라도(이중 드라이브 배열에서) 두 번째 드라이브에 계속 액세스할 수 있어야 하며, 해당 드라이브에 오류가 발생하면(귀하의 경우인 것 같습니다) 백업에서 복원해야 합니다.
시스템 전원이 켜져 있으면 다음을 수행하여 RAID 상태를 확인할 수 있습니다.
cat /prod/mdstat
작동 중인 드라이브가 있는 경우 출력에 U가 표시됩니다(예: 대괄호 사이 [U_]
). 이 경우 RAID는 "단지" 성능이 저하되지만 이 경우에는 여전히 작동할 수 있습니다. RAID에 대한 이메일 알림을 이미 설정했다고 가정합니다.
드라이브 상태 확인 을 사용해야 합니다 smartctl
.
답변4
나는 지시를 따랐다.http://www.thegeekstuff.com/2011/12/mysqlcheck/ 그리고 테이블을 고쳤어요. 이제 응용 프로그램이 제대로 실행되고 있습니다.
모두 감사합니다.