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

2012-10-06

DBMS/MYSQL]_하드디스크_이상으로_디비_용량이_초과_시



할당된 하드디스크 이상으로 디비 용량이 초과 되었을때 처치 방법.1. /usr/local/mysql/var 의 로그 파일로 용량을 줄일 수 있다.
- localhost-bin.index 파일을 보면 현재의 로그 파일에 대한 정보가 있다.
- 그 로그파일은 DB의 UPDATE 내역이 기록하는 파일이다. Replication(일종의 백업)을 위해 생성된다.
- localhost-bin.index 에서 확인한 파일을 제외하고 다른 파일은 지워도 된다.
- 한가지 더 확인하자면 marster-slave 에서 show slave status 인가하는 명령으로 현재의 master 의 로그파일을 확인할수 있으니 나머지는 지워도 된다.
- /etc/my.cnf 에서 log-bin 옵션을 주석처리 해주면 로그 파일이 생성되지 않는다.

2. 하드디스크를 설치 하는 방법으로 용량 충당
- MySQL은 데이터를 디렉토리에 보관한다. 다른 파티션으로 이동할 경우 데이타 디렉토리를 이동하면 된다.
1. 기존의 데이타 디렉토리로 이동한다.
$ cd /usr/local/mysql/var
2. 기존의 데이터 파일들을 묶어서 새로운 디렉토리로 옮긴다.
$ tar cvf /usr2/local/mysql/var/backup.tar * 3. 새로운 디렉토리로 이동한다.
$ cd /usr2/local/mysql/var
4. 새로운 디렉토리에 기존의 데이타들의 압축을 푼다.
$ tar xvf backup.tar
5. 새로운 디렉토리의 권한을 mysql 사용자만 접근할 수 있도록 해 주어야 한다.
$ chmod 700 /usr2/local/mysql/var
$ chown mysql.mysql /usr2/local/mysql/var

6. MySQL 데몬을 실행시키는데 이때 --datadir=/usr2/local/mysql/var 옵션을 주어 새로운 데이터 디렉토리를 지정해 주어야 합니다.
이와 같은 방법으로 MySQL의 데이터 디렉토리를 다른 곳으로 옮길 수 있다.

- 뭐 간단하게 말해서 기존에 데이터 있던 데이터들을 압축해서 다른곳에 옮겨놓고 그디렉토리는 새로운 하드로 마운트 시키시고 다시 풀어놓으시면 된다.

3. 하드용량 초과로 트렌젝션중 파일이 손상되었을때 치료- myisamchk --safe-recover 테이블명.myi

2012-09-12

FreeBSD]새로운 디스크 설치


OpenBSD에서의 사항이니 FreeBSD에서도 거의 비슷하게 적용되겠지요??? ^^

===========================================
Title : OpenBSD에서의 하드드라이브 추가.
작성자 : l1nefeed(김기홍)
일자 : 2002.5월 24일. 할일없는 낮. -_-;
mailto : l1nefeed@codesum.org
===========================================


openbsd에서 새로운 하드드라이브를 추가하는 방법은 의외로 간단하다.
하지만 어렵게 느끼시는 분들도 계시길래, OpenBSD Crew! 의 이름으로 문서를 작성한다.

이 문서는 전적으로 BSD license를 적용한다.

자. 시작해 보자.

일단 새로운 하드드라이브를 컴퓨터에 부착하고 재부팅 했다고 가정한다.

dmesg | grep wd[0-9] 라고 쉘에 입력하면



$ dmesg | grep wd[0-9]

wd0 at pciide0 channel 0 drive 0: <QUANTUM FIREBALLlct08 13>
wd0: 16-sector PIO, LBA, 12416MB, 16383 cyl, 16 head, 63 sec, 25429824 sectors
wd1 at pciide0 channel 0 drive 1: <ST51080A>
wd1: 32-sector PIO, LBA, 1033MB, 2100 cyl, 16 head, 63 sec, 2116800 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2
wd1(pciide0:0:1): using PIO mode 4, DMA mode 2
dkcsum: wd0 matched BIOS disk 80
dkcsum: wd1 matched BIOS disk 81
root on wd0a
rootdev=0x0 rrootdev=0x300 rawdev=0x302

$



이와같이 wd0 과 wd1이 잡힌것을 볼수 있다. (하드드라이브의 종류에 따라 wd 로 잡히지 않을수도 있다.)

그럼 이제 새로 추가한 하드드라이브를 이식할 준비가 다되었다.
일단 이렇게 쳐보자.



# fdisk -i wd1



뭐라뭐라 뜨면서 MBR을 수정하겠냐 어쩌겠냐 라고 물어볼것이다.
당연히 y 다. 기존에 깔려있던 OS의 MBR을 가지고 있을 필요가 없다.
-i 옵션은 해당 disk의 MBR을 초기화 시켜주는 옵션이다.


그다음은 이제 해당 disk의 label을 정해주는 일이다.


잠시 알고 넘어갈 것은, freebsd를 써본 사용자라면 익숙한 내용이다.

bsd는 자신이 쓸 전체 파티션을 하나 잡는다. 그리고 그안에 파티션을 다시 나누어 OpenBSD에서 마운트하는 각 마운트 지점에 해당하는 파티션을 또 나눈다.
즉 커다란 하나의 파티션 안에 /home, /var, / 등의 파티션을 나눠 사용한다.
이 파티션을 레이블(label)이라고 부른다.
그래서 disklabel을 이용, 파티션을 재편집 해준다.

일단 여기선 wd1을 전체 사용하는걸로 생각하고 쓰겠다.

이제 이렇게 쳐 보자.


# disklabel -e wd1



옵션에서 감 잡았겠지만, wd1의 disklabel을 수정하라는 말이다.


참고로... disklabel -E wd1 을 하면 좀더 쉽게 label을 수정할수 있다.
즉 M(메가바이트) 나 G(기가바이트) 단위로 설정할수 있다는 말이다.
하지만 일단은 -e 에 대해 설명하겠다.


그럼 vi와 같은 간단한 text edit형식의 edit 란이 보이게 된다.



type: IDE
...bla...
sectors/track: 63
total sectors: 6185088
...bla...
16 partitions:

#        size   offset    fstype   [fsize bsize   cpg]
  c:  6185088        0    unused        0     0         # (Cyl.    0 - 6135)
  d:  1405080       63    4.2BSD     1024  8192    16   # (Cyl.    0*- 1393*)
  e:  4779945  1405143    4.2BSD     1024  8192    16   # (Cyl. 1393*- 6135)



자 이와 유사한 것이 보이는가..? 그럼 이제 수정할 준비가 다 되었다.


여기서 우리가 사용해야할 유틸리티가 있다. 바로 bc라는 계산기 이다. -_-;;
아직 자동화 라던지.. 보기 쉽게 보여주는 그런 툴은 openbsd에선 별로 볼수 없을것이다. -_-

이것이 openbsd의 단점이기도 하겠지만, 또한 매력 이기도 하다. -_-

아. 암산으로도 가능한 사람은 굳이 bc를 사용하지 않아도 되겠다.. -_-;;

우리가 계산해야 할 부분은 size와 offset의 사이즈를 계산해 내는것이다.
생각보다 간단하다. 미리 겁먹지 말자. -_-/

설치할때 보면 알겠지만, c: label은 그 하드디스크의 전체양을 보여주는 character device 다.

즉 지우고 싶어도 지워지지가 않는다. -_-;;

우리는 c: label에 있는 size 와 offset 을  토대로 label을 수정하면 된다.
일단 d: 와 e: label을 지운다. 지우는 명령은 vi와 동일하다.

그리고 나서 a: label을 추가 하겠다. 여기서는 전체 디스크를 사용한다는 가정하에서 말하는 것이다.

계산은 아주 간단하다. c: 에선 offset 이 0 이다. 하지만 새로운 label을 만들기 위해선 항상 앞쪽에 63 cyl 만큼 비워놔야 한다.

OpenBSD에서는 offset을 scetors/track 으로 정한다.
대부분의 하드디스크는 63 이 나올것이다.

그리고 저 값은 disklabel 을 실행할때 알아서 계산하여 뿌려주기 때문에 별 걱정할 필요는 없다.

그럼 전체 사이즈 6185088 에서 offset 63 만큼을 빼면 얼마일까..?
자 bc를 사용해서 계산 해 보라. -_-



답은 6185025 이다.



그럼 다 됐다. 새로 작성된 disklabel 이다.



#        size   offset    fstype   [fsize bsize   cpg]
  a:  6185025        63   4.2BSD     1024  8192    16
  c:  6185088        0    unused        0     0         # (Cyl.    0 - 6135)





위와 같이 되는가? 그럼 다 됐다.
:wq로 저장하고 나오면 된다.



자 여기서 openbsd의 숨겨진 편리함이 드러난다.
만약 사용자가 offset값을 잘못 설정하거나 size와 offset의 합이 c: 에 정의된 전체 크기와 맞지 않을시 종료했을땐 에러가 뜨면서 다시 수정하겠냐고 묻는 프롬프트가 뜬다. y 라고 치면 이전 화면으로 돌아가 다시 편집할수 있다.

얼마나 스마트 한가. -_-;/



아래는 필자의 데스크탑에 달린 wd1의 disklabel 이다.



# /dev/rwd1c:

type: ESDI
disk: ESDI/IDE disk
label: ST51080A
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 2100
total sectors: 2116800
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0



16 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:  2116737       63    4.2BSD     1024  8192    16   # (Cyl.    0*- 2099)
  c:  2116800        0    unused        0     0         # (Cyl.    0 - 2099)



(위에서 필자가 설명한 sectors/track 의 값이 63으로 나와있는것을 알수 있다. 자신의 하드디스크를 확인해 볼려면 disklabel /dev/wd0 이라고 쳐보자. 뿌려줄 것이다.)

자 이제 막바지 이다. 저장하고 빠져 나왔으면 file system을 새로 만들어 주면 끝이다.

openbsd는 default로 ffs를 사용한다.


이렇게 쳐 보자.



# newfs wd1a



왜 wd1a라고 하는지는 말안해도 알꺼라 믿는다. -_-;;
그러고 나면 파일시스템이 만들어 지면서 만드는 동안의 과정이 display 된다.
이 과정이 끝나고 나면 wd1는 이제 정상적으로 쓸수가 있다.

/etc/fstab을 편집하자. 별 다른 내용은 적을거 없고.. 그정도는 독자가 충분히 할수 있을꺼라 생각하여 자세히 적지 않겠다.


아래는 필자의 /etc/fstab이다.


$ cat /etc/fstab

/dev/wd0a / ffs rw,softdep 1 1
/dev/wd0d /var ffs rw,softdep 1 2
/dev/wd0e /home ffs rw,softdep 1 2
/dev/wd0f /usr ffs rw,softdep 1 2
/dev/wd1a /ebooks ffs rw,softdep 1 2

$



자 여기까지 추가해 줬으면 이제 다 끝났다. /dev/wd1a를 mount하여 사용하면 된다.
아니면 재부팅 해도 된다.



졸필의 글을 여기까지 읽어준 독자에게 진심으로 감사 드린다.