一次惊心动魄的ASM磁盘头损坏故障处理过程带来的深思
Oracle数据库,为了防止数据丢失以及构建高可用环境给出了多种架构方式。例如,为了防止Oracle实例级别的单点故障提供了RAC技术(
数据通常比喻为企业的血液和生命,数据安全一直是大家非常重视的话题。
Oracle数据库,为了防止数据丢失以及构建高可用环境给出了多种架构方式。例如,为了防止Oracle实例级别的单点故障提供了RAC技术(Real Application Clusters,真正的应用集群),RAC以Share Everything的架构方式使多个主机实例可以共享一套存储上的数据,从而避免了由于个别实例出现故障导致数据库不可用;RAC技术仅仅给出了实例层面的高可用解决方案,为了防止存储层面的单点故障,Oracle又提出了Data Guard(数据卫士)技术,无论是逻辑Data Guard还是物理Data Guard都从存储层面解决了单点故障,同时也是灾备技术的最佳选择。基于RAC和Data Guard技术,Oracle进一步又推出了MAA架构方式,即主站点是RAC架构方式,备用站点也是RAC架构方式,主备站点之间通过Data Guard技术使用redo传输变化的数据,确保备站点与主站点之间达到实时或者准实时的数据一致。
除此之外,Oracle还提供了各种备份恢复工具,比如物理备份恢复工具RMAN、逻辑备份恢复工具EXP/IMP EXPDP/IMPDP。基于这些工具便可以定制一套有效的备份恢复策略,以便防止数据丢失。
以上技术手段都是确保数据不丢失的必要条件,绝非充分条件!这些技术固然重要,但是与之相比,更加重要的是“人”的因素。再优秀的技术,如果没有人来定期做健康检查并排查潜在问题的话,这些都是“浮云”。这里给大家分享一个最近刚刚为客户处理完的一个Case。起到警示的作用。
【数据库环境描述】:
数据库类型: 某政府核心生产系统
影响范围: 全国性
数据量: 8T
主机类型: IBM 570
数据库版本: 10.2.0.4.0
ASM版本: 10.2.0.4.0
数据库架构方式:两节点RAC架构方式;存储使用ASM技术,并且ASM磁盘头没有备份;未部署Data Guard灾备站点;归档模式,,使用RMAN做全库及增量备份。
【故障现象】:
在手工为表空间添加数据文件的时候,触发ASM磁盘头损坏,ASM的alert日志中记录了如下信息:
Sat Jun 9 01:45:51 2012
WARNING: cache read a corrupted block gn=1 dsk=39 blk=18 from disk 39
NOTE: a corrupted block was dumped to the trace file
ERROR: cache failed to read dsk=39 blk=18 from disk(s): 39
ORA-15196: invalid ASM block header [kfc.c:8033] [check_kfbh] [2147483687] [18] [2154781313 != 2634714205]
System State dumped to trace file /home/oracle/admin/+ASM/bdump/+asm1_arb0_602136.trc
NOTE: cache initiating offline of disk 39 group 1
WARNING: offlining disk 39.3734428818 (BDC_DATA_0039) with mask 0x3
NOTE: PST update: grp = 1, dsk = 39, mode = 0x6
【艰难的数据恢复过程】:
第一次尝试:直接恢复ASM磁盘头数据
尝试使用Oracle KFED(Kernel Files Editor)工具修改ASM磁盘头,如果这种方式能够顺利的恢复ASM磁盘头的话,将是一种完美的结局,然而事与愿违,此时的ASM磁盘头损坏非一般类型的损坏(故障原因中给出分析),使用KFED无法完成恢复。第一次梦魇不期而遇。
第二次尝试:使用RMAN进行数据恢复
既然每天都做RMAN的备份,正常情况下便可以使用RMAN进行数据恢复。因此,找来设备上尝试数据恢复(提醒:千万不要在生产环境上尝试恢复,保留现场很重要!),8T的数据拷贝以及恢复时间都是不可想象的,经过漫长的17小时的恢复,梦魇再一次来袭,在尝试恢复的过程中突然发现,RAC的第二节点上的归档日志不完整,仅剩半个月之前的归档日志,这是不可饶恕的,这也就意味着,使用RMAN工具最多只能恢复到15天前的数据,最近半个月的数据将荡然无存。这便是典型的“无人值守”导致的灾难。
第三次尝试:尽最大努力挽回数据
由于RAC第二节点归档日志的丢失导致最多可以恢复到15天前的数据,但也不要放弃希望,尽一切努力进行数据恢复。再次尝试使用RMAN恢复数据到15天前。正如小说中常见的情景,此时,梦魇又一次降临到这套可怜的数据库!即便恢复到了15天前的数据,发现数据库依然无法正常open。尝试各种手段,启用隐含参数等方法,亦不奏效。使用各种手段强制open数据库后alert日志中频现ORA-00600错误,即使在逻辑导出数据的过程中,都在频繁的抛出 ORA-00600错误。最终以备份介质无效无法完美恢复而终止。
第四次终极处理方法:使用工具直接抽取ASM磁盘组中的数据
在客户几近崩溃的时候,最终选择了直接数据抽取方法进行恢复,直接抽取ASM磁盘组中的数据,构造出数据文件的全貌,又是一个10多小时的漫长数据抽取恢复时间。经过漫长的等待之后,经验证,数据完美恢复完毕,没有让客户丢失任何一条重要数据!
【故障原因】:
此次故障推测是由于底层磁盘的映射混乱导致的,比如主机重启后导致disk number变化,导致Oracle认为ASM磁盘组的某块盘是voting disk,进而错误的写入了心跳信息,覆盖了原来位置上的ASM元数据ALT,这样一旦有大规模的reblance操作需要改上述ALT时,ASM便出现了上述故障。这种故障是无法通过简单的KFED工具进行恢复的。
【数据安全故障总结】:
这个Case中的故障本身并不可怕,可怕的是这个过程中出现的各种险情,发人深思。我们经常提到“备份重于一切”、“有备无患”等DBA职业操守。我认为最佳的诠释应该再加一条:在可信的架构方式下,定期对备份介质进行有效性验证,及灾备环境DRP演练的前提下!
针对此次故障的前因后果,给出以下建议:
1.给出高可用解决方案;建议使用Data Guard技术做远程灾备;
2.RMAN物理备份以及逻辑备份介质,要定期做备份介质有效性验证;
3.“人”的因素,制定严格的备份恢复检查机制,对备份以及灾备环境进行日常检查;
4.前期的架构设计很重要;
5.……

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

전체 테이블 스캔은 MySQL에서 인덱스를 사용하는 것보다 빠를 수 있습니다. 특정 사례는 다음과 같습니다. 1) 데이터 볼륨은 작습니다. 2) 쿼리가 많은 양의 데이터를 반환 할 때; 3) 인덱스 열이 매우 선택적이지 않은 경우; 4) 복잡한 쿼리시. 쿼리 계획을 분석하고 인덱스 최적화, 과도한 인덱스를 피하고 정기적으로 테이블을 유지 관리하면 실제 응용 프로그램에서 최상의 선택을 할 수 있습니다.

예, MySQL은 Windows 7에 설치 될 수 있으며 Microsoft는 Windows 7 지원을 중단했지만 MySQL은 여전히 호환됩니다. 그러나 설치 프로세스 중에 다음 지점이 표시되어야합니다. Windows 용 MySQL 설치 프로그램을 다운로드하십시오. MySQL의 적절한 버전 (커뮤니티 또는 기업)을 선택하십시오. 설치 프로세스 중에 적절한 설치 디렉토리 및 문자를 선택하십시오. 루트 사용자 비밀번호를 설정하고 올바르게 유지하십시오. 테스트를 위해 데이터베이스에 연결하십시오. Windows 7의 호환성 및 보안 문제에 주목하고 지원되는 운영 체제로 업그레이드하는 것이 좋습니다.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL 및 MariaDB는 공존 할 수 있지만주의해서 구성해야합니다. 열쇠는 각 데이터베이스에 다른 포트 번호와 데이터 디렉토리를 할당하고 메모리 할당 및 캐시 크기와 같은 매개 변수를 조정하는 것입니다. 연결 풀링, 애플리케이션 구성 및 버전 차이도 고려해야하며 함정을 피하기 위해 신중하게 테스트하고 계획해야합니다. 두 개의 데이터베이스를 동시에 실행하면 리소스가 제한되는 상황에서 성능 문제가 발생할 수 있습니다.

Laraveleloquent 모델 검색 : 데이터베이스 데이터를 쉽게 얻을 수 있습니다. 이 기사는 데이터베이스에서 데이터를 효율적으로 얻는 데 도움이되는 다양한 웅변 모델 검색 기술을 자세히 소개합니다. 1. 모든 기록을 얻으십시오. 모든 () 메소드를 사용하여 데이터베이스 테이블에서 모든 레코드를 가져옵니다. 이것은 컬렉션을 반환합니다. Foreach 루프 또는 기타 수집 방법을 사용하여 데이터에 액세스 할 수 있습니다 : Foreach ($ postas $ post) {echo $ post->

데이터 통합 단순화 : AmazonRdsMysQL 및 Redshift의 Zero ETL 통합 효율적인 데이터 통합은 데이터 중심 구성의 핵심입니다. 전통적인 ETL (추출, 변환,로드) 프로세스는 특히 데이터베이스 (예 : AmazonRDSMySQL)를 데이터웨어 하우스 (예 : Redshift)와 통합 할 때 복잡하고 시간이 많이 걸립니다. 그러나 AWS는 이러한 상황을 완전히 변경 한 Zero ETL 통합 솔루션을 제공하여 RDSMYSQL에서 Redshift로 데이터 마이그레이션을위한 단순화 된 거의 실시간 솔루션을 제공합니다. 이 기사는 RDSMYSQL ZERL ETL 통합으로 Redshift와 함께 작동하여 데이터 엔지니어 및 개발자에게 제공하는 장점과 장점을 설명합니다.

MySQL 데이터베이스에서 사용자와 데이터베이스 간의 관계는 권한과 테이블로 정의됩니다. 사용자는 데이터베이스에 액세스 할 수있는 사용자 이름과 비밀번호가 있습니다. 권한은 보조금 명령을 통해 부여되며 테이블은 Create Table 명령에 의해 생성됩니다. 사용자와 데이터베이스 간의 관계를 설정하려면 데이터베이스를 작성하고 사용자를 생성 한 다음 권한을 부여해야합니다.

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.
