메뉴 건너뛰기

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
번호 제목 날짜 조회 수
86 [MySQL] 백업 및 복구 2017.04.12 5392
85 [mysql,mariaDB] 컬럼 암호화, 복호화 2020.11.25 775
84 UPDATE ~ CASE 문을 사용한 조건별 업데이트 file 2020.07.28 1396
83 Union 사용법. 여러 테이블의 같은 값을 한번 쿼리로 추출하기 2017.11.21 3918
82 SQL 고급 file 2017.12.22 6035
81 order by field 와 union, 원하는 대로 정렬 하기 2021.03.26 768
80 no exists, not in 을 이용한 조건에 만족하지 않는 것들 구하기, 둘의 차이점 2021.03.26 125
79 MySQL의 alter table 명령어 모음 2017.04.12 5105
78 MySQL에서 원격 IP 접속 허용하기 2017.04.12 5621
77 MySQL에서 사용자 권한 주기 (grant 명령어) 2017.04.12 5885
76 MySQL〃오라클의 nextval을 MySQL에서 사용하기 2018.07.24 3864
75 mysqlbinlog (mysql 백업, 로그남기기) 2021.03.26 201
74 MySQL/MariaDB 백업 & 복원 - mysqldump 2015.08.07 7384
73 mysql-bin(binary log)파일 정리 및 삭제 2023.01.12 117
72 mysql-bin 로그를 SQL 문으로 변환한는 방법 2018.07.18 1672
71 mysql(union,join) file 2017.11.16 3837
70 mysql(exists, not exists) file 2017.11.16 4090
69 MYSQL 프로시져 PROCEDURE file 2021.03.27 197
68 mysql 포트 바꾸기, 외부에서 접속하기 2021.03.26 5081
67 MySQL 파티션 개요 file 2017.12.22 4150
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved