https://puleugo.tistory.com/167
https://puleugo.tistory.com/168
mysqldump -uroot -p --all-databases > db이름.sql
mysqldump -uroot -p -A > db이름.sql
안뇽하세요~ 오늘은 mysql 전체 백업을 하는 방법을 알아보겠습니당...
mysql을 소스 설치가 아닌 RPM으로 설치한 Redhant 7.3이 깔린 Mysql을 기준으로 설명합니당..
음...일단 이 방법은 Root 권한이 있는 분들..즉, 서버 관리를 하시는 분들에게 유용할것 같네요...
우선 두가지 방법이 있는데여..
첫번째방법, - mysql 폴더를 전체 카피 한다.
cp -arv /var/lib/mysql /home/mogibu/mysql
/var/lib/mysql 안에 있는 내용들을 전부다 /home/cream/public_html/mysq 로 카피를 하라는
명령 입니다. cp 옵션에 -arv 에 대해서 설명을 하자면,
a : 원본 파일 또는 디렉토리의 속성과 시간 등을 그대로 복사.
r : 디렉토리를 복사할 경우 디렉토리에 포함된 모든 파일, 디렉토리까지 복사한다.
v : 복사되는 내용을 그대로 화면에 출력한다.
이런 내용입니당..
복사한 파일들을 잘 보관하신 후에 새로 설치하신 서버라던지 아니면 DB가 망가져서 다시 복구 하실때
/var/lib/mysql 폴더 안에 있는 내용을 지우신 후에 다시 넣어주고 mysql을 재시작 하시면 됩니다.
mysql을 소스 설치가 아닌 RPM으로 설치한 Redhant 7.3이 깔린 Mysql을 기준으로 설명합니당..
음...일단 이 방법은 Root 권한이 있는 분들..즉, 서버 관리를 하시는 분들에게 유용할것 같네요...
우선 두가지 방법이 있는데여..
첫번째방법, - mysql 폴더를 전체 카피 한다.
cp -arv /var/lib/mysql /home/mogibu/mysql
/var/lib/mysql 안에 있는 내용들을 전부다 /home/cream/public_html/mysq 로 카피를 하라는
명령 입니다. cp 옵션에 -arv 에 대해서 설명을 하자면,
a : 원본 파일 또는 디렉토리의 속성과 시간 등을 그대로 복사.
r : 디렉토리를 복사할 경우 디렉토리에 포함된 모든 파일, 디렉토리까지 복사한다.
v : 복사되는 내용을 그대로 화면에 출력한다.
이런 내용입니당..
복사한 파일들을 잘 보관하신 후에 새로 설치하신 서버라던지 아니면 DB가 망가져서 다시 복구 하실때
/var/lib/mysql 폴더 안에 있는 내용을 지우신 후에 다시 넣어주고 mysql을 재시작 하시면 됩니다.
InnoDB 파일 복원
-InnoDB는 MyISAM처럼 단순하고 간단하게 파일을 이용한 복구를 하기 어려운데, 이는 InnoDB의 구조 때문이다.
출처 : https://www.percona.com/blog/2010/04/26/xtradb-innodb-internals-in-drawing/
-굉장히 복잡한데, 결론적으로는 .frm, .ibd 파일만으로 복구하기 위해서는
.ibd 파일의 Tablespace ID가 ibdata1의 메타데이터에 있는 Tablespace ID과 100% 일치함을 보장할 수 있을 때만이다.
이 외의 경우 파일 단위 백업 복원 시 오류가 발생할 수 밖에 없는 구조를 가지고 있다.
-하지만 InnoDB 파일 복구를 검색해서 찾아다니는 사람의 대부분은 .frm, .ibd 파일로 복구 하다가 오류가 나는 경우일 것이다.
InnoDB 파일 단위 복구 중 오류 났을 때 해결법
(출처: https://sysdocu.tistory.com/1246 )
ERROR 1932 (42S02): Table [테이블명] doesn't exist in engine
- 서비스 종료
- ibd, frm 파일들을 data 경로에서 다른 경로로 이동 (복사 아님)
- 서비스 다시 시작 후 이동한 테이블 삭제된 상태 확인
- 제거된 테이블 다시 생성 (생성 query)
- 테이블 스페이스 제거: Alter table [테이블명] discard tablespace;
- 이동된 테이블 파일(ibd, frm)을 다시 data 경로로 복사
- 테이블 스페이스 복원: alter table [테이블명] import tablespace;
하지만, 위 방법으로는 테이블 크기가 조금이라도 크면 Lost connection to MySQL server during query 에러 발생과 함께 서비스가 종료되는데,
그럴 땐 아래와 같이 한다.
- 백업된 DB와 동일한 이름의 DB(gradius) 생성
- 서비스 종료
- 백업된 gradius 데이터 파일(frm, idb)과 ibdata1(data 밑에 있음)을 함께 이관
- 서비스 시작
서비스 시작 시 DB 자동 복구가 실행된다.
'IT' 카테고리의 다른 글
M600 /var/lib/mysql (0) | 2024.05.06 |
---|---|
odroid HC2 /var/lib/mysql (0) | 2024.05.06 |
mysqld.sock 에러 (0) | 2024.05.06 |
워드프레스 이전 (0) | 2024.05.06 |
mysql 시작,종료 (0) | 2024.05.06 |