가장 많이 본 글

2013년 8월 7일 수요일

inno db 데이터 분할 방법

http://give-me-a-rest.tistory.com/43




sudo vi /etc/mysql/my.cnf
[mysqld]
innodb_file_per_table = 1

위의 설정을 통해 각 DB의 테이블별로 파일을 분할할 수도 있음 

개별 데이터 베이스의 크기가 크지 않다면 ibdata를 분할할 필요는 거의 없음

그러나 개별 DB 중 덩치가 매우 큰놈이 있다면 테이블별로 분할하지 말고 innodb 전체 데이터 크기를 계속

분할증식시키는 방법으로 하는것이 바람직함 (그렇지 않으며 성능 문제가 발생할 수 있음!)



linux file size 확인

파일 용량 확인하기

root@delphiXE:~# du -h 파일이름

디렉토리 용량 확인하기

root@delphiXE:~# du -hs 폴더이름

디렉토리 내 하위폴더 1개까지 각각 용량보기

root@delphiXE:~# du -hs 폴더이름/*

디렉토리 여러개 용량 확인하기

Linux 에서 OracleJDK 사용하기

보통의 우분투 배포판에서 Java는 OpenJDK 또는 OpenJRE 를 이용하여 실행된다.

그러나 일부 기능에서 OracleJDK가 성능이 더 좋다는 평가때문에 OracleJDK를 찾는 사람이
많은데 다음 웹 페이지에서 OracleJDK 를 사용할 수 있는 저장소와 설치 방법이 나와있으니
필요한 사람은 가서 보기 바란다.


http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html



oracle java repository 추가
    sudo add-apt-repository ppa:webupd8team/java

repo update
    sudo apt-get update 

oracle java 설치
    sudo apt-get install oracle-java7-installer

mysql .sql import 방법

개별 DB
mysql -u 계정이름 -p 데이터베이스명 < sql파일.sql

전체 DB

mysql Character set 변경

우분투 13.04 기준


다음 탭에 다음 한 줄만 입력해주면 모든 mysql character 및 collation 이 utf8로 변경됨


[mysqld]

character-set-server = utf8

Linux Server 배드블럭 검사 및 치료

얼마전 내 우분투 13.04 서버에 배드블럭이 10000개 이상 생겨버렸다.

하드가 완전히 망가졌나 싶어서 하드를 교체하려 하였으나 의문이 생겼다.

의문점은 다음과 같았다.

1. 보통의 하드는 물리적 배드섹터가 1,2개 생기면서 하드의 전체적인 안정성이 저하되고
    서서히 하드의 물리적 배드섹터가 증가하면서 끝엔 완전히 사용이 불가하게 된다.

2. 혹시나 얼마전 IDE 모드로 설치한 하드디스크를 AHCI 모드로 변경하여 내가 모르는
    어떠한 논리적 오류가 배드블럭을 생기게 하지 않았냐는 생각이 들었다.

3. 위와 같은 의문점으로 검사를 한 결과 내 하드디스크의 경우는 fstab 설정에 따라  하드디    스크 블럭이 Read-only 로 변경되면서 Write 가 불가능해 졌을뿐 배드블럭이 늘거나 줄지    않았고 전체적인 하드디스크 검사 및 제로필(Zero-fill) 작업 후 배드블럭이 완전히 사라지    고 이후 배드블럭이 늘지 않았다.



하드디스크의 배드섹터가 논리적인지 물리적인지 구분하는 방법은 현실적으로 불가능하다.

논리적 배드섹터의 경우 Zero-fill (하드디스크 모든 영역의 자기값을 0 으로 채움) 작업을
통해서 증상을 없앨 수 있다.



작업 방법은 다음과 같다.

1. 우선 리눅스 시스템의 Live CD 를 준비한다. (GUI 우분투 추천)
    되도록이면 사용이 간편한 우분투를 추천하고 USB 또는 USB 하드를 사용해야 한다.
    그렇지 않으면 Live CD로 부팅한 상태에서 추가적인 프로그램을 설치하여 사용하지
    못하고 비교적 사용이 불편한 것을 써야하기 때문이다.

2. Live CD 를 리눅스 머신에 넣고 부팅한다.

3. Live CD 를 부팅하면 터미널을 실행한다.

4. 터미널에 다음 명령어를 입력하여 현재 리눅스 머신에 연결된 모든 저장장치를 표시한다.

    sudo fdisk -l (소문자 'L' 이다)

5. fdisk 를 통해 하드디스크의 정보가 다음과 같이 출력될 것이다.

Disk /dev/sda: 200.0 GB, 200049647616 bytes 
255 heads, 63 sectors/track, 24321 cylinders, total 390721968 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005b77d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   369948671   184973312   83  Linux
/dev/sda2       369950718   390721535    10385409    5  Extended
/dev/sda5       369950720   390721535    10385408   82  Linux swap / Solaris

노란색으로 배경색이 되어 있는게 디스크 자체의 정보이고
초록색으로 배경색이 되어 있는게 해당 디스크의 파티션이 어떻게 나뉘는가를
표시해준다.

여기서 주목해야 하는 것은
첫째줄에 있는 /dev/sdx (sdb,sdc 가 될 수도 있으므로) 이다.

하드디스크가 여러개라면 /dev/sda, /dev/sdb 등으로 여러개가 출력되므로

현재 문제가 있는 하드만 골라서 치료하려면 하드디스크가 어디에 Mount 되는지
알아야 한다.

문제가 생겼다면 어떤 하드에 문제가 있는지 터미널 또는 로그로 자세히 표시되므로
따로 적지는 않겠다.

6. 배드블럭 검사, 배드블럭 검사는 시간이 매우매우!! 오래 걸리는 작업이므로 시작하고
    밥먹고 볼일보고 게임해도 완료되지 않을 수도 있다. 끈기있게 기다리자.

    배드블럭을 검사하는 명령어는 다음과 같다.

    sudo badblocks -v /dev/sdx (/dev/sda, /dev/sdb, ... /dev/sdx)

7. 배드블럭을 검사를 기다리는 고달픈 시간이 지나면 배드블럭이 몇개나 발생했는지
    터미널로 출력될 것이다.

    이제 치료를 하도록 하자.

8. 내가 처음 서두에서 Live CD를 USB에다가 설치하라고 한 이유는 일부 e2fsck 와
   dcfldd 를 사용하려면 apt-get 을 이용하여 설치해야 하는데 CD의 경우 한 번 구워버리면
   안에 데이터를 변경할 수가 없기 때문에 두 가지 프로그램을 사용할 수 없기 때문이었다.

   이제 다음 명령어를 입력하여 e2fsck 와 dcfldd 를 설치하도록 하자.

   sudo apt-get install e2fsck dcfldd

   Q. e2fsck 는 이미 설치되어 있다고 하고 dcfldd는 찾을 수 없다고 뜨는데??

   A. e2fsck 는 대부분의 리눅스 배포판에 기본적으로 들어가 있어서 그런것이고 dcfldd는
       소프트웨어 업데이트 관리자에서 universe repository 를 사용 설정해줘야지 사용할 수        있다.

9. 두 가지를 설치했다면 이제 선택을 할 시간이다.

    1). 논리적 배드블럭으로 보이는 것이 노무노무 많이 생겨버렸다!

     - 하드에 있는 모든 필요한 정보를 다른 하드에 저장하고 dcfldd 를 이용하여
        Zero-fill 포맷을 해버리자

        사용방법 : sudo dcfldd if=/dev/zero of=/dev/sdx 
                               
                        여기서 of=/dev/sdx 는 'sdx'를 자신이 Zero-fill 포맷을 할 하드의 마운트 경로로 맞추어주면 된다.
 
    2). 논리적 배드블럭이 몇개 없네

     - e2fsck 를 이용하여 치료를 하면 된다.

        사용방법 : e2fsck -cfpv /dev/sdx 

                       여기서 /dev/sdx 는 자신이 고치고 싶은 하드의 마운트 경로로 맞추어주면 된다.