메뉴 건너뛰기

2016.12.23 18:22

테이블 체크, 백업

조회 수 7478 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
* mysql sell 상에서 Ctrl+a를 누르면 문장의 맨 앞으로, Ctrl+e를 누르면 문장의 맨 뒤로,
화살표 키(↑)를 누르면 전에 사용했던 명령들을 볼 수 있어 재사용할 수 있다.

* shell>mysql --tee=mysql_qry.txt -u root -p : mysql 서버 안에서 행한 모든 것이 mysql_qry.txt 파일로저장

* shell>mysql -E -u root -p : 쿼리 결과를 수직으로 출력. -E 옵션없이 시작한 후, mysql shell 상에서
수직으로 출력하려면 끝에 \G를 붙이면된다.

* perror : mysql에서 에러 원인 확인 shell>perror 145 (145번 에러 내용 표시)

*reload : flush-privileges 명령과 같다.

*shutdown : mysql 서버를 중지 시킨다.

MYISAMCHK를 이용한 테이블 체크 및 복구

select 나 desc 쿼리를 통해 테이블 정보가 보이지 않을 경우 테이블이 깨진것이다.

myisamchk 를 사용하기 전 주의할 점 : ① mysql 서버를 중지시키고 사용해야 한다.
② mysql 서버를 중지 시키면 안될경우, 특정 테이블에만
lock을 걸고 사용해야한다.
③ myisamchk 유틸리티를 사용하기 전에 백업을 하는것이 좋다.

테이블 체크 : shell>myisamchk 테이블명(경로지정해줘야함)

테이블 체크 옵션 : -m 빠르고, 99.99% 에러를 찾는다.

테이블 복구 : shell>myisamchk --recover 테이블명

테이블 복구 옵션 : -er 옵션을 사용해 보고, 안될 경우 -fo 옵션 사용.

shell>myisamchk -fo 테이블명

CHECK TABLE 문과 REPAIR TABLE 문 이용한 테이블 체크 및 복구

테이블 체크 : mysql>check table 테이블명;

테이블 복구 : mysql>repair table 테이블명;

*테스트를 위해 고의로 테이블을 깨지게 할려면 mysql 서버를 중지시키고 data디렉토리에서
"테이블명.MYD" 파일을 메모장으로 열어서 일부 수정해주면된다.


백업

1. data 디렉토리를 백업하는 방법

shell>tar cvfz mysql_data.tar.gz /usr/local/mysql/data

2. mysqldump 유틸리티 사용

shell>mysqldump -u root -p -A > all.sql (모든 데이터베이스를 백업)
shell>mysqldump -u root -p test > db.sql (test DB만 백업)
shell>mysqldump -u root -p --databases test test2 > dbs.sql (test 와 test2 데이터베이스를 백업)
shell>mysqldump -u root -p test board > table.sql (test DB 안에 board란 테이블만 백업)

* 일정 시간마다 자동백업 : shell 프로그래밍을 작성하여 cron에 등록시켜 줌.

ex)dumpx란 shell 프로그래밍을 작성해보자 (/tmp 디렉토리 아래 기록)

#vi dumpx
#!/bin/sh

#########################################
# MySQL 백업 script #
#########################################

# 날짜 지정-파일명-저장 디렉토리 설정
DATE=`/bin/date +%d-%b-%Y-%H-%M-%S`
FILEPREFIX="MySQL-Backup-$DATE"
TEMPDIR="/tmp"

#
# HOSTNAME=`/bin/hostname`
#

# root와 비밀번호
USERNAME="root"
PASSWORD="123456"
# --all-databases일 경우 전체 DB 백업
DATABASE="test"

# 메일 정보 - 백업 성공시 메일 보내기
RECIPIENT="friendvirus@naver.com"
NICEDATE=`/bin/date +%b-%d-%Y`
SUBJECT="MySQL 백업 성공 -$NICEDATE"

# backup
# /usr/local/mysql/bin/mysqldump 절대 경로를 모두 써주는 것이 좋다.
/usr/local/mysql/bin/mysqldump -u$USERNAME -p$PASSWORD $DATABASE > $TEMPDIR/$FILEPREFIX.
sql | tar -cf $TEMPDIR/$FILEPREFIX.tar.gz -z $TEMPDIR/$FILEPREFIX.sql | rm -f
$TEMPDIR/$FILEPREFIX.sql


:wq!

shell>chmod 711 dumpx
shell>./dumpx

*매일 새벽 05시 35분에 dumpx스크립트를 실행하는 것을 cron에 등록해 보자.

shell>crontab -e
35 05 * * * /usr/local/mysql/bin/dumpx

:wq!

주의>DATE에서 사용된 기호 (`)는 ~ 에있는 기호이다. 작음따옴표(')아님.

복구 : shell>mysql -u root -p test < table.sql shell>mysql -u root -p < db.sql

List of Articles
번호 제목 날짜 조회 수
126 한글정렬 order by 2019.02.19 2424
125 하나의 쿼리로 여러 테이블의 데이터 삭제 file 2020.07.28 887
124 필드 변경, 추가, 삭제 2016.12.23 6085
123 특정 테이블만 replication 하거나 제외하는 방법 2018.07.18 2790
122 특정 COLUMN을 제외하고 SELECT/INSERT하는 방법 2017.11.16 8854
121 테이블, 컬럼 charset 변경 2021.03.26 186
120 테이블, 레코드 복사 2021.03.26 162
119 테이블 파티셔닝 2017.12.22 4940
118 테이블 타입(Heap, MyIsam, InnoDB...) 변경하기 2017.04.12 5272
» 테이블 체크, 백업 2016.12.23 7478
116 테이블 복사, 테이블 비우기 2016.12.23 5781
115 컬럼에 포함된 특정문자열을 검색해서 그 문자로 또 다른 테이블검색하기 2016.08.30 6606
114 컬럼내 특정 문자를 다른문자로 변경하고자 할때 2014.02.27 6012
113 중복데이터 하나만 빼고 삭제 2019.01.11 3161
112 전체 텍스트 검색과 파티션 file 2017.12.22 3868
111 전체 텍스트 검색과 파티션 file 2017.12.22 3941
110 일반적인 오류를 해결하는 유용한 정보들 file 2020.11.23 3840
109 이벤트 스케줄러 등록하기 file 2020.06.29 303
108 월의 마지막 일수를 반환하는 함수입니다 2015.12.19 5996
107 외부접근 권한 주기 file 2016.12.23 5949
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved