레이블이 backup인 게시물을 표시합니다. 모든 게시물 표시
레이블이 backup인 게시물을 표시합니다. 모든 게시물 표시

2012-11-03

DB/MySQL] mysql 유지보수 MYD,MYI,FRM


[[[ SQL 자료의 이전과 dump ]]]
table dump (특정 테이블을 sql 문으로 저장하기)
./mysqldump -u ID -p DBname tablename > tablename.sql
-------------------------------------------------------------------------
특정 table 설치
./mysql -u ID -p DBname < table.sql

--------------------------------------------------------------------------
특정 테이블 지우기
./mysql -u DBname -p
./use DB
./drop table tablename;

---------------------------------------------------------------------------
DB 을 모두 sql Dump 백업
./mysqldump -u ID -p DBname > ***.sql
./mysql -u ID -p DB < ***.sql

***********************************************************
 [[[[[[[[[[[ 테이블의 유지 보수 ]]]]]]]]]]]]]]]]]]]]]]
전원중단,비정상종료,frm화일 삭제수정등에 의한 DB 이상
mysql 의 테이블 검사 및 오류를 수정하는 유틸리티
* myisamchk 를 사용시 mysql를 종료한다.
* 테이블은 3개 화일 : frm, MYI, MYD 파일을 검사한다.
   frm(테이블구조기록), MYI(테이블인덱스화일), MYD (데이터화일)
------------------------------------------------------------------------
myisamchk table명 (table 조회 검색)
myisamchk --recover --quick table명 (빠른복구)
myisamchk --recover table명 (복구)
myisamchk --safe-recover table명 (재오류시)

-------------------------------------------------------------------------
복 구되지 않는 경우
-테이블구조가 기록된 frm 파일이 삭제 또는 손상
-테이블 인덱스 파일은 MYI 삭제 손상된 경우
-MYD 는 데이터 파일

---------------------------------------------------------------------------
myisamchk -r table명
(테이블 파일의 빈공간등을 없에 최적화 시킨다.)
-a : 흩어진 인덱스를 모아 속도 향상
-S : 인덱스트리 소팅 검색 속도 향상
-R : 인덱스 기준 레코드 정렬 속도 향상
      myisamchk -R1 tablename
      * 1번 인덱스 기준 레코드 정렬

-----------------------------------------------------------------
[[[[[[ EXCEL 에 있는 자료 mysql로 이전하기 ]]]]]]]
1. 엑셀의 화일을 파일형식-텍스트(탭으로분리)로 선택 저장
    * sample.txt
  ex) 허정수  A  경기도
        이효진  B  구리시
2. FTP 로 전송후 LOAD DATA INFILE 명령으로 테이블 입력
    * 미리 테이블이 생성되어 있어야 한다.
    * 해당 txt 에 맞게 테이블을 만들어 주세요!
3.LOAD DATA INFILE 'sample.txt'  INTO TABLE sample
   LINES  TERMINATED BY '\r\n' ;
   * '\r\n' 줄구분차이 도스 윈도우
4. select * from sample;


----
복구하는 방법은 ...
mysql data 디렉토리에 그냥 같다가 놓는겁니다 ^^

.frm 파일은 테이블 구조가 저장되어 있는 파일입니다
.MYD 파일은 실제 데이터가 들어있는 파일입니다
.MYI 파일은 Index 정보가 들어가 있는 파일입니다


위 3개의 파일을 손상되지 않은 상태에서 가지고 계신다면
그냥 갖다가 놓는것 만으로 복구하실 수 있습니다
단, 퍼미션 조절은 해주셔야겠지요. 퍼미션 조절 안하시면 나중에 DB 파일을 읽어오지 못합니다

그리고 저 파일들을 .sql 형태로 변환하는 방법은 없습니다
적 어도 제가 알기론요..
다만
백업받으실때 .sql 형태로 백업받을 수는 있습니다

mysqldump -A -u root -p > mysql_bakup_all.sql

이렇게 하시면 모든 데이터베이스를 .sql 형태로 백업받게 됩니다
특 정 DB 만, 혹은 특정 Table 만 백업받는 방법은
Mysql 메뉴얼을 참조하시구요..
더 자세한 답변은 여기 계신 고수분들께서 해주실겁니다
그리고
database.sarang.net 사이트로 한번 들려보세요

2012-09-17

DBMS/MySQL] Mysql Dump 백업하기 스크립트


안녕하세요. mindline 입니다.

별건 아닌데... 제가 필요에 따라 만들어 쓰는 스크립트입니다.
혹시 도움이 될까 해서 올려 봅니다.

------------ 시작 -----------------

#!/bin/sh

backup_dir="/home/mysqlbackup"
dat=`date +%Y%m%d`

if [ ! -d "$backup_dir/$dat" ];
then
  mkdir $backup_dir/$dat
fi

cd /var/lib/mysql

for dbdir in *
do
  if [ -d $dbdir ];
  then
    mkdir $backup_dir/$dat/$dbdir
    cd $dbdir

    for table in *MYI
    do
      tname=`basename $table .MYI`
      mysqldump -p비밀번호 -uroot $dbdir $tname > $backup_dir/$dat/$dbdir/$tname.dump
    done

    cd ..
    sleep 1
  fi
done



#pastdat=`date --date '7 days ago' +%Y%m%d`
#rm -rf $backup_dir/$pastdat

---------------- 끝 ------------------------

대략 요령껏 디렉토리 경로등은 변경하세여. ^^;

매일 크론에 등록해 놓구 쓰면 되겠져...

제일 밑에 두줄은 계속 쌓이기만 하면 하드가 Full 될테니...
7일일 전의 디렉토리는 지우라는 명령어 입니다.

( rm -rf 조심하세여. 현재 주석 처리 입니다. ^^ )


대략 이렇게 됩니다.
20031127/dbname1/tablename1.dump
20031127/dbname1/tablename2.dump
20031127/dbname2/tablename1.dump
20031127/dbname2/tablename2.dump

:-)


그럼.

2012-09-12

FreeBSD] 시스템 백업에 관한 얘기.



우선 쉘 스크립트를 작성하실 수 있어야 합니다.
(몰라도 가능하지만 모르면 그만큼 원하는 형태로 백업 받기 어려움)
또한 tar, rsync, cp, date, mysqldump (mysql DB라면), export(오라클이라면), mt, dump(테잎 백업) 등의 명령과 정기적으로 명령을 자동으로 실해시켜주는 cron 에 대해서도 아셔야 합니다.

두 가지 예만 들어들일테니 참고하시고 응용해보세요.
(테스트는 해보지 않고 쓰니 직접 확인해보세요.)


1. /etc 등 주요 설정과 관련된 디렉토리를 백업한다고 할 때


코드:

#!/bin/bash
#
# 파일명 : /root/bin/backup.sh
#
# /etc 전체를 백업디렉토리에 etc-년월일-시간.tar.gz 이름으로 백업한다.


DATE=`date +%Y%m%d-%H`
BACKUP_DIR="/backup/system"


# etc 백업

tar cvf $BACKUP_DIR/etc-$DATE.tar /etc
gzip $BACKUP_DIR/etc-$DATE.tar





중요한 것은 /backup 이나 /backup/system 디렉토리는 모두 퍼미션이 700으로 하셔야 합니다.

그래야 다른 일반 사용자들이 백업해둔 파일에 접근할 수 없는 것이죠.


코드:

# chmod 700 /backup
# chmod 700 /backup/system

# chmod 700 backup.sh
# ./backup.sh (이렇게 했을 때 /backup/system/ 에 백업됐는지 확인하시면 됩니다.)




2. 아래는 rsync를 이용해서 퍼미션과 소유자를 그대로 유지한 상태로 디렉토리를 통채로 복사하는 예입니다.



코드:


#!/bin/bash
#
# 파일명 : /root/bin/backup_dir.sh
#
# /home, /abcd 전체를 /backup/ 아래로 복사한다.


BACKUP_DIR="/backup"
DIR_LIST="/home /abcd"


for i in $DIR_LIST
do
   /usr/bin/rsync -avxH $i $BACKUP_DIR$i
done





코드:

# chmod 700 backup_dir.sh




rsync는 디렉토리안에 파일이 많으면 목록 인식하는데 시간이 걸린다는 것 참고하세요.

뭐 저런식으로 됐다면 crontab 에 넣어주면 백업을 해주겠죠.

아래는 매주 일요일 새벽 2:31과 2:51분에 backup.sh, backup_dir.sh이 실행되도록 하는 예입니다.



# crontab -e



코드:


31 2 * * 0 /root/bin/backup.sh > /dev/null 2>&1
51 2 * * 0 /root/bin/backup_dir.sh > /dev/null 2>&1





지금까지 하나의 예입니다.
모든 것을 다 알려주면 역시 님에게는 전혀 도움이 안되며, 서버 관리를 하시면 스스로 방법을 찾아내고, 문제를 해결하실 수 있어야 합니다.
이번 기회에 쉘 스크립트에 대해 배워보세요.



* 참고글
- [기초] 작업 자동화, cron 설정 http://coffeenix.net/board_view.php?cata_code=0&bd_code=97 (좋은진호)
- Bash를 이용한 쉘 스크립팅 완전 가이드 http://coffeenix.net/go.php?site_code=181&go=/doc/HOWTOs/html/Adv-Bash-Scr-HOWTO/ (번역:차현진)
- 시스템 백업 카테고리 http://coffeenix.net/?cata_code=54