* 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
화살표 키(↑)를 누르면 전에 사용했던 명령들을 볼 수 있어 재사용할 수 있다.
* 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