메뉴 건너뛰기

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
번호 제목 날짜 조회 수
106 mariaDB 백업 쉘 스크립트 2019.03.05 1219
105 MyISAM 스토리지 엔진에서 테이블의 최대 저장 row 개수 2018.07.18 1558
104 MYSQL any&all&in&예제& WHERE 절 문제4 file 2021.03.27 111
103 MySQL DB 에 한글 utf8 문자열 INSERT 오류 해결 방법 file 2018.07.18 2039
102 MYSQL FULLTEXT INDEX & PARTION 검색기능향상&파티션 file 2021.03.27 131
101 MYSQL Groupby & having 예제 문제 6 file 2021.03.27 118
100 MYSQL IN&BETWEEN&NULL&예제&FROM절 문제3 file 2021.03.27 104
99 MySQL INSERT 성능 향상 2016.12.22 11523
98 MySQL JOIN 걸어서 UPDATE 하기 2017.04.12 5352
97 Mysql Join 해부(Left, Right, Outer, Inner Join file 2018.10.02 1276
96 Mysql Join 해부(Left, Right, Outer, Inner Join) file 2017.11.28 5340
95 MYSQL order by 예제&문제 7 file 2021.03.27 126
94 MySQL ORDER BY 조건별 필드 및 ASC DESC 2019.01.08 4431
93 MySQL replication SQL 문 실행 오류 해결 방법 2018.07.18 1608
92 MySQL Replication 설정(Master-Slave, Maste 2014.02.27 6782
91 MySQL root 패스워드 분실시 2017.04.12 5252
90 MYSQL select 명령문의 조합 &union 예제&문제 8 file 2021.03.27 138
89 MySQL Shard 데이터 재분배 file 2017.11.28 4951
88 mysql table 값 변경 mariadb 테이블 값 변경 2023.01.12 83
87 MySQL Table 복구 - Got error 127 from storage engine 2018.07.24 4367
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved