2015년 9월 30일 수요일

MySQL 데이터베이스에서 삭제된 Table 복구하기

이런 경우 일반적인 바이너리로그를 이용한 복구 방법인 "mysqlbinlog 바이너리로그 > mysql -u 계정" 의 방식으로 복구를 시도 하게 되면 해당 문제가 발생한 쿼리까지 진행이 되기 때문에 복구가 불가능한 문제가 있을 수 있다.

다행히 해당 사례의 경우 DB생성 당시부터의 로그가 모두 보관되어 있었다. 이에 다른 MySQL 서버를 이용해서 복구가 가능하다.

전체 바이너리 로그를 위의 방법으로 복구 한 후에 해당 문제가 발생한 시점이 포함된 로그를 이용해서 아래와 같이 문제 발생 시점의 이전까지만 복구를 진행해서 해당 테이블의 데이터를 복구 할 수 있다.

# mysqlbinlog -d DB이름 -start-datetime=xxxx-xx-xx xx:xx:xx -stop-datetime=xxxx-xx-xx xx:xx:xx > mysql -u 계정

위와 같은 방법으로 DB의 특정 시간대의 로그만을 이용해서 복구를 진행 할 수 있다.

Reentrancy Attack: 블록체인 스마트 컨트랙트의 치명적인 취약점

블록체인 기술이 전 세계적으로 주목받으면서 스마트 컨트랙트(Smart Contract)의 사용이 급격히 증가하고 있습니다. 하지만 그만큼 보안 취약점도 함께 늘어나고 있는데, 그 중에서도 Reentrancy Attack(재진입 공격)은 매우 치명적이고...