본문 바로가기

MySQL/MySQL Setup

MySQL Source 설치 - OS 세팅

MySQL DBA로 생활한지 벌써 2년이 다되어 가네요..ㅎ

그런데 정작 MySQL에 관련된건 잘 안썼다는..ㅎ 이놈의 귀챠니즘이 뭔지..ㅎ

 

이사도 했고 모니터도 하나 더 샀으니까 이제 제대로 다시 하도록 하겠쯈당!

 

저는 Config를 설정하지 않은 yum설치인 경우 /var/run이나 /usr/local이나.. 

제가 원하지 않은 경로에 설치되는게 싫고 관리하기도 어렵기 때문에 소스설치를 하는 편입니다.

이번 글에서는 제목에서 처럼 MySQL 소스 설치하는 것을 쓰도록 하겠습니다.

 

기본적인 환경을 말해야겠죠?

 

OS : CentOS release 5.6(x86_64)

DB : MySQL 5.5.30

compile tool : cmake 2.8.3

 

정도 되겠네요 ㅎ  Mysql은 C언어로 구성이 되어 있기때문에 소스설치일 경우 컴파일을 해서 설치를 해야합니다.

 

OS 세팅먼저 해보도록 하겠습니다.

 

/etc/security/limits.conf는 시스템의 자원을 얼마나 제한하고 쓸 수 있는지를 말하며 사용자별로 지정해 줄 수 있습니다.

nproc의 경우 한 사용자당 사용 가능한 프로세스 개수 지정입니다.

nofile의 경우 동시에 파일을 열 수 있는 개수 지정입니다.

soft의 경우 soft하게 시스템 자원을 제한합니다.

hard의 경우 엄격하게 시스ㅔㅁ 자원을 제한합니다. hard limit는 root만 변경할 수 있습니다.

 

[root@MyDB root]# vi /etc/security/limits.conf

*               hard    nproc   65536

*               soft    nofile  65536

*               hard    nofile  65536

 

위에서 보이는 *은 모든 사용자입니다. 보통 *이지만 mysql user로 제한을 할 수도 있습니다.

 

/.bash_profile 설정은 super user인 root가 접속했을때 기본적인 path나 스크립트 등 기본정보를 지정해줍니다.

 

위에 있는 /etc/security/limits.conf의 경우에도 ulimit 명령어를 통해서 쓸 수 있습니다. 하지만 파일로 지정하는 것이 좋기에 저렇게 선언을 한거구요.

 

soft nofile은 -Sn, hard nofile은 -Hn, hard nproc는 -Hu입니다.

 

아래에 나오는 /root/.bash_profile로 하는 이유는 root 계정에 대해서만 제한을 하겠다는 것인데요.

ulimit -n 은 nofile 설정. 위에서 지정했으니 굳이 할 필요는 없겠죠?ㅎ

ulimit -u 는 유저프로세스의 최대값 정의입니다. 이 모든 값들은 각자의 세팅에 맞게끔 하시면됩니다.

 

[root@MyDB root]# vi /root/.bash_profile

~~

ulimit -n 65535

ulimit -u 65535

~~

 

/etc/sysctl.conf 는 시스템에서 일반적으로 관리하길 원하는 값들이 들어 있습니다. 

[root@MyDB root]# vi /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 15

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_timestamps = 1

fs.file-max = 65535

vm.swappiness = 0

 

 

제가 설정할 부분들이 보이죠? ㅎ

.(dot)으로 구분되어 있는 것들은 /proc의 경로를 나타내는데요.

net.ipv4.tcp_fin_timeout의 경우는 /proc/net/ipv4/tcp_fin_timeout의 파일 value를 바꾸어 주는 것입니다.

window로 따지면 regedit값이라고 해야겠죠 ㅎ 파일에 저장을 하지않으면 reboot 할 경우 날아가기 떄문에 파일로 저장을 시켜서 항상 유지되게끔 해주어야 합니다.

 

좀 더 자세한 사항은 여기에서 보시면 됩니다.

http://ipsysctl-tutorial.frozentux.net/chunkyhtml/index.html

https://wiki.kldp.org/KoreanDoc/html/Kernel-KLDP/network.html

https://wiki.kldp.org/wiki.php/Adv-Routing-HOWTO

 

 

tcp_fin_timeout은 단어 그대로 TCP 통신 종료후 대기 시간입니다. 보통 리눅스의 경우 60초로 설정되어 있지만 길다고 생각하기 때문에 15초로 줄이도록 하겠습니다.

 

tcp_max_syn_backlog의 경우 공격대비용 또는 처리량이 많은 경우 값을 늘려줍니다. syn이라는 것은 아시는 분은 알겠지만 TCP(Transmission Control Protocol)가 신뢰성을 증명하기 위해 쓰이는 flag중 하나입니다. 세그먼트가 날아가면서 맨처음에 날아가는것이 Syn flag이기 때문에 공격시 많이 이용하고 그에 대한 대비를 해야합니다.

 

tcp_timestamps 써야한다 말아야 한다 하기에 애매하지만 저는 쓰는걸로!ㅎ 패킷 RTT(Round Trip Time- 왕복시간)을 좀 더 정확히 알고자 활성화 시키는 걸로 하겠습니다.

 

file-max kernel에서 쓰이는 파일의 최대 개수를 정하는 파라미터입니다.

 

 

swappiness 얼마나 많이 swap을 이용할 것인지를 정하는 것입니다. 보통 60이 default로 되어 있고 10자체도 상당히 낮은 값입니다. 높으면 높을수록 main memory가 100% 사용이 아니더라도 swap을 쓰겠다는 것을 의미합니다. 저는 0!

swap을 거의 안쓰겠다는 값이겠죠 ㅎ

 

쓰다보니 또 길어지네요..ㅎ 우선 OS 세팅은 여기까지!

길어지니까 끊어서 쓰도록 하겠습니다 ㅎ

 

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

MySQL Source 설치 - Compile 및 설치  (0) 2015.10.11