반응형

MySQL 설치를 보면 대부분 간단하게 yum 을 이용한 설치를 알려준다.


MySQL 엔지니어는 안해봤지만, Oracle Engineer를 한 경험상, UI를 통해 설치하는 경우도 대부분이긴 하지만,

단순히 Typicall 이 아닌 Manual 대로 진행하는 경우가 보통이다.

즉, 설정값 들을 수동으로 진행하는 경우가 대부분 이었다.


그래서 나는 단순 설치가 아닌 CMake를 이용한 source 설치를 

물론 책에도 이렇게 진행하는 방식을 알려준다...




MySQL 5.6.31 로 진행하였으며, mysql 홈페이지 가면 찾기가 조금 까다롭다.

해당 페이지를 참조하면서 설치 하였다.

http://jmkjb.tistory.com/entry/MySQL5621SetupSourceCompile


먼저 souce 파일을 다운받아 보자.


현재 테스트 서버는 CentOS 5.6 이다

[root@devDB:/root]#  rpm -qa | grep release

centos-release-5-6.el5.centos.1


http://dev.mysql.com/downloads/mysql/5.6.html#downloads 에서 다운받아 진행했다.

여기서 select platform 을 눌러보면 Source Code가 있는데 선택해서 맞는 OS 에 대해 다운 받으면 된다.

이지 참고를 하면 금방 찾을 수 있을 것이다.

이 후, 책을 참고 하여 진행 하였다.


다운 받은 파일을 압축을 풀어 압축 푼 폴더 내에서 build_target이라는 폴더를 생성한다.

mkdir -p /home/Setup/mysql-5.6.31/build_target


MySQL 5.5부터는 CMake를 이용한 Makefile를 생성 해야 한다.


다만 여기서 책과 다른 점은 SSL 이다. SSL 에 대한 정보는 다음과 같은데,

책에서는 0으로 설정했는데, bundled 로 나는 선택했다.


만약 여기서 에러가 생기면 해당 폴더(여기서는 /home/Setup/mysql-5.6.31/build_target) 를 다 삭제 후에 다시 진행해야한다.

또한 에러 찾기 위해서는 CMakeLists.txt 파일을 열어 찾아 보는 것을 추천한다. 나도 에런 코드 위치 찾아 보니 SSL 관련 된 내용이 있길레 변경을 한 후 진행하였다..


맨 마지막에 done 으로 뜨면 완료 된 것이다.

먼저, 자신이 설치할 위치에 디렉터리 권한 설정 및 가급적 폴더까지 생성하자.

mkdir -p /usr/local/rmysql/bin

mkdir -p /usr/local/rmysql/etc

mkdir -p /usr/local/rmysql/data

...


chown -R root /usr/local/rmysql

chown -R mysql /usr/local/rmysql/data

chown -R mysql /usr/local/rmysql/bin

chown -R mysql /usr/local/rmysql/etc

chgrp -R dba /usr/local/rmysql

...


*CMake 파일 생성 정보


$ cmake .. \

 '-DCMAKE_INSTALL_PREFIX=/usr/local/rmysql' \                //자기에 맞는 경로를 설정하자(mysql 엔진설치 위치)

 '-DWITH_COMMENT=Toto mysql standard x86_64' \

 '-DINSTALL_SBINDIR=/usr/local/rmysql/bin' \

 '-DINSTALL_BINDIR=/usr/local/rmysql/bin' \

 '-DINSTALL_LAYOUT=STANDALONE' \

 '-DMYSQL_DATADIR=/usr/local/rmysql/data' \               //데이터 위치

 '-DSYSCONFDIR=/usr/local/rmysql/etc' \

 '-DINSTALL_SCRIPDIR=/usr/local/rmysql/bin' \

 '-DWITH_INNOBASE_STORAGE_ENGINE=1' \

 '-DWITH_ARCHIVE_STORAGE_ENGINE=1' \

 '-DWITH_BLACKHOE_STORAGE_ENGINE=1' \

 '-DWITH_PERFSCHEMA_STORAGE_ENGIN=1' \

 '-DWITH_PARTITION_STORAGE_ENGINE=1' \

 '-DWITH_FEDERATED_STORAGE_ENGINE=1' \

 '-DENABLE_DEBUG_SYNC=0' \

 '-DENABLED_LOCAL_INFILE=1' \

 '-DENABLED_PROFILING=1' \

 '-DWITH_DEBUG=0' \

 '-DWITH_LIBWRAP=0' \

 '-DWITH_READLINE=1' \

 '-DWITH_SSL=bundled' \

 '-DCMAKE_BUILD_TYPE=RelWithDebInfo' \

 '-DCMAKE_C_FLAGS=-02' \

 '-DCMAKE_CXX_FLAGS=-02'



해당 속성 정보들은 아래와 같다

[펌] http://www.programkr.com/blog/MkjMxADMwYTz.html


  • 지정 설치 파일 설치 경로 때 자주 쓰는 옵션

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql   # 지정 설치 경로 (기본 바로/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql               # mysql 데이터 파일 경로
-DSYSCONFDIR=/etc                         # 프로필 경로
  • 컴파일 과정 중에 다른 저장소 엔진 사용하기

-DWITH_INNOBASE_STORAGE_ENGINE=1          # INNOBASE 저장소 엔진 사용하기
-DWITH_ARCHIVE_STORAGE_ENGINE=1           # 자주 사용하는 로그 및 집계 분석 한다, 지원하지 않는 인덱스
-DWITH_BLACKHOLE_STORAGE_ENGINE=1         # 블랙홀 저장소 엔진
  • 컴파일 과정에서 일부 저장소 엔진, 취소

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
예제 다음과 같다: 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
  • 컴파일 들어갈 과정에서 기능 활성화 명령 소개

-DWITH_READLINE=1       # 지원 대량 가져오기 mysql 데이터
-DWITH_SSL=system       # mysql 지원 ssl 회화 구현 기반 ssl 데이터 회답하다
-DWITH_ZLIB=system      # 압축 라이브러리
-DWITH_LIBWRAP=0        # WRAP 실현할 수 있는지 기반 접근 제어
  • 기타 기능 명령

-DMYSQL_TCP_PORT=3306                   # 기본 포트
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock       # 기본 소켓 파일 경로
-DENABLED_LOCAL_INFILE=1                # LOCAL_INFILE 기능 사용 여부
-DEXTRA_CHARSETS=all                    # 혹시 지원 추가 문자 집합
-DDEFAULT_CHARSET=utf8                  # 기본 인코딩 메커니즘
-DDEFAULT_COLLATION=utf8_general_ci     # 기본 언어 데이터 정렬
-DWITH_DEBUG=0                          # DEBUG 기능 설정
-DENABLE_PROFILING=1                    # 성능 처리 기능 사용 여부


이것까지 완료 되었다면, 이제 Install를 진행하자.


$ make && make install


이렇게 치면 다음과 같이 설치가 진행 되는 것을 확인할 수 있다.



옆에 %가 나와서 보기가 좋다.

에러가 난 적은 없지만..에러가 어떻게 하면 에러가 찾을 수 있을지는 나중으로........나도 찾아봐야 하기에;;;ㅠ


이제 DB를 생성해 보자.


vi /etc/RMy.cnf 라는 이름으로 생성해 보자.



반응형

+ Recent posts