http://centos.server-manual.com/centos5_repository.html

CentOS에서 대부분의 경우 버전업의 문제나 공식적으로 지원하는 패키지에는 없어서 추가적으로 필요한 패키지를 위하여 RPMForge EPEL Remi 를 추가하는 방법입니다.

우선 아래와 같이 yum-priorities 를 설치하여야 패키지간의 설치 우선 순위를 조정할수 있습니다.

[root@centos ~]# yum -y install yum-priorities
CentOS-Base.repo 수정
[root@centos ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
priority=1 ←추가
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
priority=1 ←추가
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
priority=1 ←추가
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
priority=1 ←추가
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority는 우선 순위입니다. 1 ~ 99까지이고 값이 낮을수록 우선 순위가 높습니다. (설정되지 않은 경우는 99)
RPMforge 저장소 설치
[root@centos ~]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@centos ~]# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm ←i386(32bit)의 경우
[root@centos ~]# rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm ←x86_64(64bit)의 경우
EPEL 저장소 설치
[root@centos ~]# rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-5
[root@centos ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm ←i386(32bit)의 경우
[root@centos ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm ←x86_64(64bit)의 경우
Remi 저장소 설치
[root@centos ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@centos ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm ←i386(32bit)의 경우
[root@centos ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm ←x86_64(64bit)의 경우
rpmforge.repo 수정
[root@centos ~]# vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1 ←enabled=1을 확인
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/extras
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/testing
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
epel.repo 수정
[root@centos ~]# vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1 ←enabled=1을 확인
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 5 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
rpmforge과 epel 우선 순위를 낮게 (priority 설정되지 않은 (99))하여 활성화 (enabled = 1)로 설정합니다.
remi.repo 수정
[root@centos ~]# vi /etc/yum.repos.d/remi.repo
[remi]
priority=1 ←추가
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0 ←enabled=0을 확인
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
remi 필요한 경우에만 사용하기 때문에 우선 순위를 높게 (priority = 1)하고 해제 (enabled = 0)로 설정합니다.


출처 - http://www.andy.pe.kr/wordpress/?p=713



'System > Linux' 카테고리의 다른 글

linux - gcc와 make  (0) 2012.07.16
centos - python 2.6.x 설치  (1) 2012.07.13
linux - 프로세스 디버깅  (0) 2012.07.09
Linux - iptables를 이용한 포트포워딩  (1) 2012.05.26
/etc/shadow  (0) 2012.05.25
Posted by linuxism
,


Q.

우선 제가 하고 있는 내용은 라우터로부터 Netflow data가 저희 시스템에 오면 이 데이터를 Mysql DB에 저장하는 것이 목적입니다.
그런데 실제 Mysql DB에 insert 되는 양이 분당 15만회정도가 발생하고 있으며 이로 인해서 Netflow data의 일부가 처리되지 못하고 패킷 드랍되고 있는것 같습니다. 
그래서 이를 해결할수 있는 방법이 없을까요?

다시 정리 하자면 라우터에서 Netflow data가 UDP 패킷에 실려서 저희 서버에 도착하면 Netflow2Mysql이라는 프로그램이 이것을 받아 mysql DB에 저장하게 되어있습니다.
문제는 라우터에서 서버까지의 UDP 패킷 드랍은 없었습니다.
그렇다면 Netflow2Mysql에서 DB로 insert 처리가 늦어지면서 Netflow2mysql 프로그램의 버퍼가 오버되면서 패킷을 처리 하지 못하고 드랍되는것 같습니다.


A.

DB가 바틀넥이면 
데이터 들을 임시 flat 파일로 저장하고 
flat 파일의 데이터를 DB로 넣는 작업은 
별도의 데먼이나 유틸로 진행하는 것이 어떨까 싶은데요.
atie님이 얘기하신 메세지큐미들웨어가 그런 구조를 말씀하신 건지 모르겠네요.

여러 모듈이 단방향 커뮤니케이션인 경우에는,
뒤쪽 모듈의 속도가 앞 모듈의 속도보다 빠르다는 보장이 없는 경우
뒤쪽 모듈의 옵티마이징만으로는 별 효과가 없습니다.
일반적으로 DB처리가 네트웍의 데이터 유입보다 빠를 것 같지는 않네요.

임시 flat 파일을 메모리로 대체해서 생각해볼 수도 있지만,
그 중간 구조는 파일이던 메모리던간에 
앞쪽 모듈이 상대적으로 빠른 경우에는
속도 차에 의해 거의 무한대로 늘어나는 경우도
있다고 가정해야 합니다.

모듈간의 flow control이 불가능 하다면 
무한대 크기 큐를 가정하는 것이 가장 낫지 않을까 싶습니다.
그나마 flat file이 그에 가장 근접하니까 가장 낫지 않을까 싶습니다. 그리고 flat file도 여러 하드 디스크에 분산해서 처리하면
IO의 효율상 아주 좋습니다.
그리고 IO를 아주 효율적으로 사용할 수 있도록 버퍼링등도
잘 고려하셔야 겠죠. 데이터 크기를 줄이는 것도 중요하구요.

그리고 뒤쪽 모듈의 옵티마이징은 이와 병행해서 진행해야 되겠죠.

얘기해놓고 보니 atie님의 얘기를 풀어쓴 꼴이 됏네요.^^;;


출처 - http://kldp.org/node/61655


'DB > Common' 카테고리의 다른 글

Sharding & Query Off Loading  (0) 2013.04.29
SELECT문 순서와 처리순서  (0) 2012.08.29
dbms - join  (0) 2012.07.06
sql - 서브(하위) 쿼리  (0) 2012.06.20
NoSQL 소개  (0) 2012.05.18
Posted by linuxism
,


텍스트 파일에 저장된 데이타를 데이터베이스 테이블에 insert하는 방법은; 검색해보면 이런 방법이 나올겁니다.

텍스트파일을 line by line으로 읽어서 for문으로 select문을 돌려서 하나씩 넣는 방법^^;

그런데; MySQL내에서 이런 처리를 위한 쿼리문이 존재합니다ㅎ;

그렇게 고생 안하셔도^^;

LOAD DATA INFILE '파일경로' INTO TABLE 테이블이름
FIELDS TERMINATED BY '필드구분자' LINES TERMINATED BY '라인구분자' (column1, column2.....);

그런데 보통 이렇게 다 않쓰셔도 되요; 뒤에 colum이라는 건 insert into tablename(clolumn1....) <-- 이때 괄호랑 똑같아서 생략하셔도 되요~ 필드구분자는... ','나 '\t'을 많이 쓰겠죠... 라인 구분자는 '\n'

LOAD DATA INFILE '파일경로' INTO TABLE 테이블이름 <-- 가장 간단하게는 이렇게만 쓰셔도 됩니다.


움.... 그런데 실제론...

LOAD DATA LOCAL INFILE '경로'
INTO TABLE smslog FIELDS TERMINATED BY '필드구분자';


이렇게 써주세요;ㅎ 서버가 내 PC가 아닐 경우에는 내 PC에 있는 데이타를 올릴 경우 local infile이라고 붙여야합니다.
(물론 서버에 csv나 txt가 있으면 빼줘야하지만요. 그런데..; 전 그런 경우가 별로 없더라구요;ㅋ 취향에 따라ㅎ)

보통 데이타파일이 이렇게 되어 있으니까;

data1, data2
data1-1, data2-1

참고로... 엑셀에서 데이타를 텍스트 파일로 잔뜩 저장시키고(csv나 뭐 그런것들요ㅎ) insert시키시면 편합니다ㅎㅎㅎㅎ

그리고... 반대로 텍스트 파일로 백업시키는 방법은...

SELECT ...  INTO OUTFILE 'file_name' FROM  tbl_name

입니다ㅎㅎㅎㅎ

아; 그리고 혹시 DB를 언어를 utf8로 설정하였어도 한글이 안들어가는 경우는...

텍스트파일이나 csv파일의 인코딩을 utf8로 설정해주시면 됩니다. 텍스트 에디터에 다른 이름으로 저장하면 그런 것들이 있으니까ㅎㅎㅎ 참고하시기 바랍니다(저도 사실 이것때문에 고생을;ㅋ)

찾아보니 자세한 설명은 여기 있더라구요~ㅎ 참고하세요ㅋㅋㅋ
http://radiocom.kunsan.ac.kr/lecture/mysql/prototype/prototype_load_data_infile.html


출처 - http://ocworld.tistory.com/92

'DB > MySQL' 카테고리의 다른 글

mysql - 튜닝 정보 및 주의 사항  (0) 2012.08.09
mysql - BLOB, TEXT 데이터 형식  (0) 2012.08.09
mysql - 행 번호 매기기  (1) 2012.06.23
Mysql DB 복호화 (password(), md5(), crypt())  (4) 2012.05.25
mysql에서 limit 사용  (0) 2012.05.02
Posted by linuxism
,