Database/Mysql2016. 6. 13. 16:26

Mysql Table 대소문자 구분하지 않도록 설정하기


vi /etc/my.cnf


[mysqld] 항목에 


lower_case_table_names = 1  추가 후


mysql 재시작



'Database > Mysql' 카테고리의 다른 글

Mysql 튜닝 참고자료  (0) 2015.12.16
mysql binlog 옵션  (0) 2014.12.08
Mysql 함수  (0) 2012.05.08
MYSQL 명령어  (0) 2012.01.17
Posted by 소울하트
시스템/Linux2016. 4. 28. 17:49

Sendmail 설정



vi /etc/mail/sendmail.mc


===== 변경전(원본) =====

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

...

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl



위 라인을 아래와 같이 수정 


===== 변경 후 =====

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

...

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

 


m4 tool을 이용하여 sendmail.cf 파일을 재생성해 준다.


m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf



vi /etc/mail/sendmail.cf 


#Dj$w.Foo.COM


위 항목을 아래와 같이 수정한다. 저 상태로 두면 localhost.localdomain.com 으로 메일이 발송되므로 수신측 차단됨


Dj[도메인명]


저장 후 sendmail 서비스를 재시작 한다.


# vi /etc/mail/local-host-names

[domain name]  RELAY

 

해당 파일에 추가한 도메인으로 메일이 오면 서버내의 로컬계정의 메일박스로 메일이 수신됨

 

외부에서 서버의 sendmail을 통하여 메일 발송시 아무나 보낼 수 없도록 설정


# vi /etc/mail/access

[domain name] [option]

 

- Option

RELAY - host 에서 지정된 메일 허용

REJECT - host 에서 지정된 메일 거부

DISCARD - 메일을 받은후에 폐기, 발신자는 메일이 발신된것으로 알게됨

OK - host 에서 지정된 메일의 모든것을 허용


access 파일을 수정 후 적용하기 위해서 아래의 명령어를 실행해야 함


# makemap hash /etc/mail/access < /etc/mail/access

 

서버에 존재하지 않은 계정으로 온 메일을 서버내의 로컬계정의 메일박스로 전달해준다.


# vi /etc/mail/virtusertable

[mail address] [user name]






dovecot 설치 & 설정


http://dovecot.org/ 

위 사이트에서 알맞은 버전의 소스를 다운받는다.

# wget http://dovecot.org/releases/1.1/dovecot-1.1.2.tar.gz
# tar xvfz dovecot-1.1.2.tar.gz
# cd dovecot-1.1.2
# ./configure --prefix=/usr/local/dovecot --localstatedir=/var --with-pam --with-gssapi --with-mysql
# make
# make install
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /usr/libexec/dovecot -s /sbin/nologin dovecot

아래와 같은 내용으로 설정파일을 작성(imap 만 사용할 경우)

# vi /usr/local/dovecot/etc/dovecot.conf

protocols = imap
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
}
auth default {
mechanisms = plain
passdb passwd {
}
passdb shadow {
}
userdb passwd {
}
user = root
}
plugin {
}
mail_privileged_group = mail


아래와 같이 서비스 실행 파일을 만든다.


# vi /etc/rc.d/init.d/dovecot



#!/bin/bash

#

#   /etc/rc.d/init.d/dovecot

#

# Starts the dovecot daemon

#

# chkconfig: - 65 35

# description: Dovecot Imap Server

# processname: dovecot

# Source function library.

. /etc/init.d/functions


test -x /usr/local/dovecot/sbin/dovecot || exit 0


RETVAL=0

prog="Dovecot Imap"


start() {

        echo -n $"Starting $prog: "

    daemon /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot

    echo

}


stop() {

    echo -n $"Stopping $prog: "

    killproc /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot

    echo

}


#

#   See how we were called.

#

case "$1" in

  start)

    start

    ;;

  stop)

    stop

    ;;

  reload|restart)

    stop

    start

    RETVAL=$?

    ;;

  condrestart)

    if [ -f /var/lock/subsys/dovecot ]; then

        stop

        start

    fi

    ;;

  status)

    status /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    ;;

  *)

    echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"

    exit 1

esac


exit $RETVAL



# chmod 700 /etc/init.d/dovecot
# chkconfig dovecot on

# /etc/init.d/dovecot start


Posted by 소울하트
시스템/Linux2016. 3. 29. 16:50

. # yum -y install yum-priorities

 

2. 자기 시스템에 맞게 위의 rpm을 다운받는다. 다운주소  http://pkgs.repoforge.org/rpmforge-release/ 

여기서는CentOS 6 i386버전으로 설명한다.

 

--CentOS 4 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el4.rf.i386.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el4.rf.x86_64.rpm

----------------------------------------------------------------------------------------------------

 

--CentOS 5 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

----------------------------------------------------------------------------------------------------

 

--CentOS 6 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
----------------------------------------------------------------------------------------------------

# rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.i686.rpm


3. # yum -y install kernel-headers kernel-devel

 

4. # yum --enablerepo=rpmforge install fuse fuse-ntfs-3g dkms dkms-fuse


5. # fdisk -l
------------------------------------------------------------------
/dev/sda1 22193 38914 1341243543 7 HPFS/NTFS
------------------------------------------------------------------
추가로 장착한 하드의 용량과 파일타입 그리고 장치명을 확인한다. 여기서는 예로 장치명이 /dev/sda1 이다.
그리고 /mnt/windows 디렉토리에 마운트 할것이다.

 

6. # ntfs-3g /dev/sda1 /mnt/windows 

 

또는 # mount -t ntfs-3g /dev/sda1 /mnt/windows

      

 

7. # vi /etc/fstab         : 부팅시 자동으로 마운트 올리기

-------------------------------------------------------------

/dev/sda1 /mnt/windows ntfs-3g defaults 0 0

-------------------------------------------------------------

 

출처 : http://blog.naver.com/nforce7050/140141157931


Posted by 소울하트
Database/Mysql2015. 12. 16. 09:36

초보도 알아야 할 MySQL 튜닝 18 가지

1.반드시 컴파일 하라! 10-30% 속도 향상 !

  소스를 가지고 컴파일 하세요. MySQL 메뉴얼에 따르면 10-30% 속도가 빠르다고 합니다. 
  RPM 이나 바이너리 설치를 하지 마세요 !


1-2.최신 버전을 사용하라

  최신 버전이 좋은 점은 자동 튜닝 하는 것 입니다.
  버그를 수정 하구요. 되도록 이면 최신 버전을 사용하세요 !!
  현재 3.23.49 입니다.


2. HEAP 테이블이 가장 빠르다!

  일반적으로 가장 많이 쓰이는 테이블 타입은 MyISAM 타입 입니다.
  MyISAM 타입은 무자게 빠르며, 대용량에도 강합니다. 그러나 트랜잭션은 지원되지 않습니다.
  이노디비(InnoDB) 는 트랜잭션이 지원 됩니다. 쇼핑몰에서는 반드시 사용해야 합니다 ^^

  HEAP 테이블 타입은 가장 빠르며, 단점은 메모리에 있기 때문에, MySQL에 중지 될 경우 모두 날아 갑니다. 
  검색을 하고 재검색을 다시 하는 경우, 임시 검색 테이블을 만들어 놓는 것도 좋은 방법입니다.

  HEAP 테이블 메뉴얼 !
   http://www.mysql.com/doc/H/E/HEAP.html 

  HEAP 테이블 만들기 !
  mysql>CREATE TABLE email_addresses TYPE=HEAP (
     ->email char(55) NOT NULL,
     ->name char(30) NOT NULL,
     ->PRIMARY KEY(email) );


3.mysql 서버 top 보기

  mysql 서버의 메모리 상황을 보여 주는 프로그램 입니다.
  리눅스나 유닉스의 top 기능을 mysql 에서 가능하게 한것 입니다.

  top 정보는 튜닝의 기본 이기 땜시 자주 자주 보아야 합니다. ^^
   http://public.yahoo.com/~jzawodn/mytop/ 

  PHP 소스 자료실에 파일 다운 로드 하시면 됩니다.


4.mysql_connect Vs mysql_pconnect 

  서버 메모리가 최소 2G 이상일 경우 mysql_pconnect 를 추천 함다 !
  연결을 계속 하지 않기 땜시 빠릅니다. !

  그러나 메모리가 2G 이하 일 경우는 mysql_connect 사용하세요 !


5.int,smallint,tinyint 데이터형 ! 

  int 는 굉장히 큰수 입니다. 4바이트를 차지 하구요.
  tinyint 는 몇백 까지만 됩니다. 1바이트 구요.

  쓸데 없이 int 를 사용하지 마세용 !!
  4바이트와 1바이트는 4배 차이 입니다.조그만것 1개 1개가 모여 서버 부하를 일으 킵니다.!!

  데이터 량이 얼마만큼 들어가는지 체크 하고 데이터형을 선택 하세요 ^^
  만약 쓸데없는 데이터 형이다 싶으면 alter table 로 데이터 형을 바꾸세요 !


6.인덱스의 사용 

  인덱스는 반드시 필요한 곳에만 넣으세요 !
  인덱스를 줄 경우 하드 용량을 더 차지 하기 때문에 속도를 떨어 뜨릴 수 있습니다.

  모든 칼럼에 인덱스를 주는 것은 절대 추천 하지 않습니다.
  1개의 테이블에 주키외에 2-3 개 이상의 인덱스는 주지 마세요!

  주키는 당근 인덱스 입니다. ^^

  CREATE TABLE albums (
     id     INTEGER    NOT NULL AUTO_INCREMENT PRIMARY KEY,
     title   VARCHAR(80)NOT NULL,
   
     INDEX title_idx (title)
  );

  ☞Alter Table 로 인덱스 추가 
  ALTER TABLE albums ADD INDEX title_idx (title)  

  결합 인덱스의 경우 너무 많은 인덱스를 사용할 경우 CPU 오버헤드나 하드 오버헤드를 불러 일으 킵니다.
  적당히 사용하세요 ^^

   http://www.mysql.com/doc/I/n/Indexes.html 
   http://www.mysql.com/doc/M/u/Multiple-column_indexes.html 
   http://www.mysql.com/doc/O/R/ORDER_BY_optimisation.html 


6-1. 바보 같은 인덱스의 사용 ? 

  인덱스는 %$search% 가 먹지 않습니다.
  그런디 게시판 제목(Subject) 에 인덱스 걸어 놓고 , 검색을 %$search% 이렇게 하면 될까요?
  인덱스 거나 안거나 똑같습니다. !!

  $search% 이렇게 사용하세요. 그런디.. $search% 사용하면 제목 처음 단어 밖에 검색이 안됩니다.
  그렇다면 ? 다른 검색 방법은 ?


7.UDF의 사용 

  MySQL은 스토어드 프로시져 같은 개념이 존재 하지 않습니다.
  그대신 C 언어로 만든 함수를 사용할 수 있습니다.

  조금더 빠른 쿼리를 원한다면 UDF 를 사용해보세요 !

  UDF 함수 보기 
   http://empyrean.lib.ndsu.nodak.edu/~nem/mysql/udf/ 

   http://www.mysql.com/doc/A/d/Adding_functions.html 

  스토어드 프로시져가 먼뎅?
  스토어드 프로시져는 쉽게 말해 MS-SQL 함수 입니다.
  오라클에도 아마 있을검당..^^

  그러니까 게시판에서 내용을 넘길때나 불러 올때
  mysql 쿼리가 3-4 번 정도 이루어 집니다. 또는 ms- sql 쿼리가 이루어지죵..
  3-4 번 정도 쿼리가 되면..그만큼 디비 접속이 잦아 지기 때문에..
  속도가 느려 집니다.

  많게는 10번 정도의 insert into 와 update 가 이루어집니다.

  그래서 ms - sql 자체 내에 인서트 함수 나 목록 보기 함수를 만들어 놓습니다.
  글구 1번의 ms-sql 접속만 해서 인서트 함수를 불러서 처리하는 것입니다.

  그렇기 때문에 2-3 번의 쿼리가 절약 되서 빠르다는 것이죵..ㅋㅋㅋ
  또는 10번의 쿼리 할것을 MS-SQL 스토어드 프로시져를 1번만 호출 함으로 해서 디비 접속이 절약이 되죵..ㅌㅌ


  UDF 를 꼭 사용해야 하는가?

  안해도 됩니다.만... 사용하면 좋은점 많습니다. 새로운 함수를 추가 할 수 있으므로 ^^
  MS-SQL의 스토어드 프로시져 기능 비스므리 하게 사용할 수 도 있구요...

  UDF 나 MS-SQL 스토어드 프로시져의 사용법을 익히기 보다는 캐슁을 연구하세용 ^^
  동적인 PHP 를 정적인 HTML 로 만드는 방법을요...
  또는 UDF 에서 MS-SQL 스토어드 프로시져 처럼 사용이 가능 합니다. 그 부분을 연구하세요.

  www.zdnet.co.kr 이나 www.zdnet.com 가시면 기사 파일이 1000,29920,2892.html 파일 이란것을 보게 됩니다.
  어키 구현된것일까요? zdnet 게네 들은 강좌를 원래 부터 HTML 로 만들어서 올리는 것일까용??
  HTML 로 만드는 부분도 많이 생각 해야 합니다. 강좌가 1만개 라면, 1만개의 파일이 생성 됩니다.
  zdnet 의 경우는 조회수가 10만-20만을 넘는 초대형 사이트 이기 때문에 HTML 로 만드는 것이 퍼포먼스가 좋습니다.

  UDF 배워 두면..남주지 않습니다. 


8.조인보다는 쿼리를 나누어라! 

  조인(Join)하는 것보다 쿼리를 2개로 나누는 것이 속도가 빠릅니다.
  조인을 생각 하기 이전에 쿼리를 나누는 것을 생각 하세요 ^^

  어쩔 수 없는 경우는 당근 조인 해야죠.

  글고 서브쿼리는 아직 지원 안됩니다.
  Ms-SQL이나 오라클에서 서브쿼리 보다는 서브쿼리를 하지 않는 방향의 데이터 정규화를 하세요 ^^

  조인 보다 서브쿼리가 느리다.
  서브 쿼리 보다는 조인을 사용하세요 ^^


9.full text index와 search 

  3.23.23 부터 mysql 에서는 full text index 를 지원 합니다.  자세한 사항은 아래 ! 

   http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Fulltext_Search 
   http://www.mysql.com/doc/F/u/Fulltext_Fine-tuning.html 


10. SELECT * FROM sometable 

  SELECT * FROM sometable 에서 * 모든을 사용하는 것은 무식한 방법 입니다.
  모든 칼럼을 불러오는 경우는 드물거든요.

  SELECT code,tadate,see FROM sometable

  사용할 것만 불러 오세요 ^^


11.데이터베이스 정규화 

  테이블을 아무렇게나 만들면 안됩니다.
  데이터베이스 정규화 원칙에 의거, 테이블을 나눌것은 나누고 만드시는 것이 좋습니다.
  제1 정규화, 제2 정규화 정도는 사용하셔야 합니다.

  게시판을 만들때 아직도 테이블 1개에 만드시나요? 
  온라인 폴 만들때 , 테이블 1개에 만드시나요?


12.REPLACE INTO문 사용하기 

  REPLACE INTO albums VALUES (6, "tood.net")   
  insert 문대신에 replace 문을 사용해보세요.
  메뉴얼 보시고 연구하세요 ^^

  주키일 경우 사용하시면 됩니다.



13. explain 사용하기 

  explain 를 사용하여 테이블의 키 값이 얼마나 잘 활용 되는지 알 수 있습니다.
  EXPLAIN SELECT, SHOW VARIABLES, SHOW STATUS, SHOW PROCESSLIST 

   http://www.mysql.com/doc/E/X/EXPLAIN.html 


17.BLOB과 TEXT는 분리하라

  BLOB과 TEXT 칼럼은 테이블을 분리 하는 것이 좋다. 다른 칼럼의 내용 보다 크기 때문이다 !

  OPTIMIZE TABLE 명령을 자주 사용해라 !
  Not null 로 지정 하는 것이 빠르다.
  varchar 보다 char 이 훨빠르다.


참고: 게시판의 특성  

  일반 게시판들 보세요. 여기 질문 게시판 만 봐도 알 수 있구요.

  읽기(select) 가 무자게 많습니다. 쓰기(insert into) 보다 30-40 배 정도 많죠.
  하룻동안 올라온 글이 30 개 라면, 하룻동안 글읽기 조회수 총 합은 최소 100 에서 900 까지 갑니다.
  물론 더 엄청날 수 있구요.

  그렇기 때문에 게시판 목록 보기와 글읽기는 HTML 파일로 만들어 놓는 것이 좋습니다.
  또는 MySQL 에서 튜닝 시에 insert 보다는 select 가 빨리 되도록 튜닝 하는 것이 좋구요 ^^



'Database > Mysql' 카테고리의 다른 글

Table 대소문자 구분하지 않도록 설정  (0) 2016.06.13
mysql binlog 옵션  (0) 2014.12.08
Mysql 함수  (0) 2012.05.08
MYSQL 명령어  (0) 2012.01.17
Posted by 소울하트
Mail2015. 6. 8. 16:42

sendmail.cf 자주사용하는 옵션 정리

vi /etc/mail/sendmail.cf


# maximum message size 
O MaxMessageSize=5024000 
---> 보내는 메시지를 5M로 제한(byte 단위)



## Local and Program Mailer specification ## 부분에서 
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, 
R=20/40, M=5024000, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u 
---> T=DNS/RFC822/X-Unix  앞부분에 M=5024000 부분을 추가(byte 단위)



# 동시 발송 가능 수 제한
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=20
---> 한번에 동시 발송 가능수를 20으로 제한한다. 0을 입력하면 제한없음


# 시스템의 로드에 따라 자동으로 작동 중지
# load average at which we refuse connections
O RefuseLA=12 
---> 시스템의 loadaverage가 12이상일때 자동으로 센드메일 작동 중지된다. 
     시스템의 loadaverage는 w 나 top, uptime 등의 명령으로 확인 가능함.


# 메일큐 보관기간
# Timeout of queue return
O Timeout.queuereturn=5d 
---> 상대방 호스트가 메일을 받을수 없을경우 메일을 큐에 보관하고 주기적으로 발송시도한다.
     계속 해서 발송이 되지 않을경우 5일 후에 메일을 반송한다.


# 메일전송 실패 했을경우 메일을 보낸사람에게 경고메일 발송
# Timeout of queue warning
O Timeout.queuewarn=4h
---> 큐에 쌓인 메일이 지정시간동안 발송되지 못할경우 메일을 보낸사람에게 경고 메일을 발송한다.
     default 값은 4시간


#메일큐 저장 레벨지정
# load average at which we just queue messages
O QueueLA=8

---> 시스템의 로드가 8이상일때는 mail queue에 보관했다가 발송함.

'Mail' 카테고리의 다른 글

sendmail 4.0.0, stat=Deferred: Connection refused by  (0) 2014.12.04
Mail 데이터 변환[.msg->.eml , .eml->.msg]  (0) 2012.03.08
Posted by 소울하트