본문 바로가기

전체 글388

InnoDB에서 Auto_Increment 문제에 대해서 정확히 알자. Overview MySQL에서는 시퀀스 개념이 없지만, 테이블 단위로 움직이는 Auto_Increment라는 강력한 기능이 있습니다. Auto_Increment 속성은 숫자 형 Primary Key를 생성하는 데 많이 사용됩니다. 특히나 InnoDB 경우에는 Primary Key 사이즈가 전체 인덱스 사이즈에 직접적인 영향을 미치기 때문에, 저도 테이블 설계에 많이 권고하는 사항이기도 합니다. 그러나 InnoDB에서 Auto_Increment가 동작하는 방식을 정확하게 알지 못하고 사용하면, 대형 장애 상황으로도 치닫을 수 있습니다. 오늘은 간단한 사례를 바탕으로 관련 내용을 공유할까 합니다. ^^ Auto_Increment In InnoDB Auto_Increment는 스토리지 엔진 별로 다르게 동작합.. 2014. 7. 1.
UNION과 UNION ALL 의 차이 및 주의 사항 ANSI SQL에서 제안하는 집합 연산 "UNION", "INTERSECT", "MINUS" 중에서 MySQL에서는 UNION 집합 연산만 제공하고 있다. (하지만 MySQL에서 INTERSECT나 MINUS를 다른 형태의 쿼리로 풀어서 사용할 수 있다.) 이 글에서는 UNION 에 대해서 좀 더 자세히 알아 보고자 한다. UNION 집합 연산은 다시 아래와 같이 두가지 종류로 나누어진다. - UNION ALL - UNION DISTINCT 우리가 일반적으로 사용하는 방식인 아무런 추가 키워드 없이 UNION 만 사용하는 것은 UNION DISTINCT 를 줄여서 사용하고 있는 것이다. UNION ALL과 UNION DISTINCT를 레코드가 많은 결과에 대해서 적용해본 사람은 아마도 둘의 처리 방식에 .. 2014. 5. 22.
MYSQL binary log 관리하기 * 바이너리 로그를 남길 날짜 지정 mysql> set global expire_logs_days=14; Query OK, 0 rows affected (0.00 sec) * 바이너리 로그를 남길 날짜 확인 mysql> show variables like "expire%"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 14 | +------------------+-------+ 1 row in set (0.00 sec) * 바이너리 로그를 남길 날짜 적용 mysql> flush logs; Query OK, 0 rows affected (1.62 sec) * 바이너.. 2014. 5. 9.
mysql binary log를 이용한 복구 DB작업전 반드시 data를 백업 후 작업을 진행하자.# cp -arp /usr/local/mysql/data /usr/local/mysql/data_bak_100406 mysql data 폴더를 보면mysql-bin.000001mysql-bin.000002mysql-bin.000003mysql-bin.000004, ...... 등의 파일이 있다. mysql 을 설치하고 부터 실행하는 모든 명령어들(create, update, delete, alter 등) 이 기록에 남는데이러한 기록을 이용하여 현재까지의 DB를 재작성 할 수 있다. 문제발생 시간을 확인하여 그 전 시간까지만 복구를 하면 된다. 1. mysql 바이너리 로그 파일 확보 # mkdir /usr/local/src/mysql_bin_repai.. 2014. 5. 9.
해킹방지를 위한 fail2ban 설치 개발중에 있던 서버에 burteforce기법으로 해커들이 루트계정을 따서 침투한뒤 네트워크 트래픽을 발생시키는 사건이 발생했다이문제를 해결하기위해 이런저런 방법들을 찾아보다가 몇번이상 계정접근이 실패하면 접근한 IP를 막아버리는 툴이있어서 적용해봤다. 1. fail2ban 다운로드(http://www.fail2ban.org/wiki/index.php/Downloads) 2. 압축풀고 설치#tar xvf fail2ban-0.8.12.tar.gz#cd fail2ban-0.8.12#python setup.py install 3. fail2ban 환경설정/etc/fail2ban/jail.confignoreip : 체크대상에서 제외할 IPbantime : 접근실패횟수가 넘어간 IP에 대해 정해진 시간만큼 접근을 .. 2014. 5. 9.
MySQL 암호화 방법 MySQL을 이용하는 대부분의 사이트에서 사용자의 정보를 암호화 하는데 MD5(SHA1)를 사용합니다. 하지만 MD5(SHA1)는 암호화가 아닌 해시 값 입니다. 해시 알고리즘 MD5(SHA1)에 의한 문자열입니다. 사용자 개인정보를 취급하는데 있어 DB전체 데이터를 분실한다고 했을때 많은 손실을 받을 수 있습니다. 물론 한개의 비밀번호를 알아내는데 약간의 시간이 필요하지만 그렇다고 해서 못알아내는 것은 아닙니다. 완벽한 보안이 아닌 그나마 차선책으로라도 암호화를 해 저장을 한다면 이러한 방식은 어떻까 합니다. MySQL 내부의 암호화 방식인 AES/DES를 사용해보는것입니다. AES(Advenced Encryption Standard) 는 미국 정부 표준으로 지정이된 블록암호화 알고리즘입니다 PHP 에.. 2013. 6. 12.
리눅스 기본설정 TIP - top, free, vmstat, openssh, motd, ulimit Open source를 모토로 제작된 리눅스는 관리자의 노력 여하에 따라아주 많은 부분을 관리자의 개인 성향, 용도에 맞게 설정이 가능합니다.오늘은 그 중에 아주 기본적인 하드웨어 모니터링 및 기초적인 tune up 등을 다뤄보기로 하겠습니다. 1. 성능분석 A. CPU 점검-uptime 첫번째 Load average의 3개 수치 1, 5, 15분 동안 활성화 되었던 프로세스들 부하의 평균수치 -top 시스템에서 실행되고 있는 프로세스들의 실시간 정보를 확인할 수 있으며시스템의 전반적인 상황을 한눈에 볼 수 있다., 첫번째 행 Top 유틸리티 이름시스템의 현재 시간시스템이 부팅된 후에 운영시간현재 로그인 수최근 1분,5분,15분 각각의 시스템 평균부하율(평균적으로 실행된 프로세스의 수를 의미) 두번째 행.. 2013. 5. 11.
리눅스 open files 설정 - ulimit ulimit 는 하나의 유저(쉘,프로세스)에 대허서 할당할 자원량의 한계를 정하는 것으로서 다중 프로그램/사용자를 기본으로하는 리눅스 시스템에서 과부하를 막아주는(한프로세스가 미쳐도 다른것에 영향이 덜가도록) 방패가 되어 주는 유용한 설정이다. ulimit -Ha / ulimit -Sa(하드 설정 전체 보기 / 소프트 설정 전체 보기)=>하드는 해당쉘의 최대값을 뜻한다 하면 되고, 소프트는 현재 설정을 말한다 생각하면 된다. 1. open files 최대 개수 확인 먼저 ulimit -a 으로 open files 개수를 확인한다. ulimit -aH는 hard limit, -aS는 sort limit를 확인. csh 쉘을 사용하면 limit 명령으로 살펴볼 수 있다. $ ulimit -a core fil.. 2013. 5. 11.
따님을 저에게 주십시요~~~~ 따님을 저에게 주십시~~~요~~~~~~~ 장인어른 왈 : 자네 말은 할 줄 아는가?? ㅋㅋ 2013. 4. 26.
경주 봄 나들이 - 불국사, 보문단지, 석굴암, 첨성대, 경주박물관, 포석정, 떡갈비 추운 겨울도 지났고, 봄이 오니 싱숭생숭한 마음을 달래고자 봄 나들이를 계획했네요. 목적지는 경주.... 왜 경주냐면요? 아이들이 학교에 들어가니 역사적으로 대단대단한 경주에 들려 신라시대의 유적지를 돌아보는 것도 좋을 것 같고, 남쪽이라 다른 곳보다 따뜻할 것 같아서지요. 금요일에 아이 아빠가 퇴근한 후에 바로 경주로 출발~~~ 밤에 출발해서인지 고속도로에 차가 많지 않았고, 아이들은 오랫만의 나들이로 들떠서 뒷자리가 조용하지 않네요. 덕평 휴게소에서 저녁을 간단히 챙겨먹고 적절히 간식도 챙겨서 다시 중앙고속도로에 올랐어요. 앞으로 3~4시간은 족히 달려야 하기에 여유롭게 마음을 갖고 음악에 심취해 있었는데, 어느새 뒷자리가 조용해 졌네요. 아이들도 이미 익숙한 듯 뒷자석에 나란히 누워 잠들어 버린거죠.. 2013. 4. 25.
SSD를 쓰면 DBMS가 빨라질까? NHN Business Platform DBMS개발랩 이기열SSD는 HDD보다 처리 속도가 빠릅니다. 그렇다면 DBMS의 저장 매체를 HDD에서 SSD로 바꾸면 DBMS의 속도도 빨라질까요? DBMS의 데이터 버퍼링이 효율적으로 동작하지 않으면 SSD로 바꾸더라도 기대한 만큼 속도가 빨라지지 않을 수 있습니다. 디스크 드라이브와 데이터 버퍼링 SSD(Solid State Disk)는 HDD(Hard Disk Drive)보다 읽기/쓰기 속도가 빠르다. 그래서 HDD를 SSD로 대체하면 운영체제를 비롯한 많은 프로그램의 실행 성능이 좋아진다. 그런데 DBMS에서는 저장 매체를 HDD에서 SSD로 바꾸어도 성능이 나아지지 않거나, 나아진다 해도 미미한 정도인 경우가 많다. 그 이유는 DBMS에서는 데이터 버퍼.. 2012. 11. 3.
웹브라우저의 동작 원리 NHN Ajax UI랩 장정환, 웹표준개발2팀 남덕현, 오픈퍼블리싱팀 정찬명이 글은 이스라엘 개발자 탈리 가르시엘(Tali Garsiel)이 html5rocks.com에 게시한 "How Browsers Work: Behind the scenes of modern web browsers"를 번역한 글입니다. 탈리 가르시엘은 몇 년간 브라우저 내부와 관련된 공개 자료를 확인하고, C++ 코드 수백만 줄 분량의 WebKit이나 Gecko 같은 오픈소스 렌더링 엔진의 소스 코드를 직접 분석하면서 어떻게 브라우저가 동작하는지 파악했습니다. 소개브라우저는 아마도 가장 많이 사용하는 소프트웨어일 것이다. 이 글을 통해 브라우저가 어떻게 동작하는지 설명하려고 한다. 이 글을 읽고 나면, 브라우저 주소 창에 naver... 2012. 11. 3.
/favicon.ico HTTP/1.1" 404 에러 없애는 방법 안녕하십니까금일은 apache 를 설치한뒤에 access.log 와 error.log 에 귀찮게도 자주 나오는 favicon.ico 에러를 안나오게 하는 방법에 대해 정리하겠습니다. 별로 안어려우니 따라해보시면 됩니다. (1) error.log 상에 favicon.ico 로그 안찍히게 하는 방법.* error.log 에러로그=> [Wed Aug 24 11:10:52 2011] [error] [client 10.225.23.118] File does not exist: /jboss/jboss-as-web-7.0.0.Final/standalone/deployments/test.war/favicon.ico * 설정파일 : httpd.conf* 설정방법은 아래와 같다. (error.log 아래에 붙이면 된다.).. 2012. 11. 3.
서버 메모리 관리에 도움글 # cat /proc/meminfo | grep -i swapcached SwapCached: 213 kB swap 은 메모리의 부족분을 hdd 로 때우는 겁니다. 이것을 사용한다는 것 자체가 메모리가 충분하지 않다는 거죠. swap 은 암만 많아봤자 메모리가 가득 차서 swap 을 쓰기 시작하면, 메모리 확보가 빨리 되지 않는 이상 그냥 다운이라 보면 됩니다. 즉, 가끔 저렇게 조회 했을 때 반드시 0 kB 가 되어야 합니다. # cat /proc/meminfo MemTotal: 4127052 kB # 전체 메모리 MemFree: 122168 kB # 남은 메모리 Buffers: 105472 kB # 버퍼된 메모리 Cached: 700480 kB # 캐시된 메모리 SwapCached: 0 kB # 스왑.. 2012. 11. 3.
Apache prefork 와 worker 방식 Apache Multi-Processing Modules(MPM, 다중처리모듈)의 Prefork 와 Worker 방식의 비교 ==> apache 서버가 클라이언트에게서 받아들인 요청을 처리하기 위해 "자식 process" 에게 분배하는 방식 Prefork 방식 - 하나의 자식 프로세스가 하나의 쓰레드를 갖는 구조로, 자식 프로세스는 1024까지 늘일 수 있다. - 한개의 자식 프로세스는 한 개의 연결을 담당한다. - 프로세스가 생성되는 구조이므로 당연히 worker보다는 많은 메모리를 사용함. - 프로세스간 메모리를 직접 공유하지 않으므로, 메모리 공간이 독립적이어서 안정적임 httpd.conf에서 httpd-mpm.conf 파일을 include 시켜야 한다. httpd-mpm.conf 파일에서 Star.. 2012. 10. 21.