2018년 5월 3일

Building MySQL from Source

목적 및 이슈

  • Mysql 5.1.77 과 PHP 프로그램이 운영되고 있음.
  • 자바 기반의 새로운 프로그램을 배포해야함.
  • 기존 mysql 버전 호환성의 문제로 새로운 버전의 Mysql서버 를 설치해야 함. (이미 설치되어 운영중인 Mysql 를 유지하면서 새로운 mysql 을 설치)

  • OS : CentOS 7.1.1503 (Core)
  • 설치된 mysql : 5.1.77
  • 추가로 설치할 mysql : 5.7.22


Mysql 설치 

먼저 소스파일을 다운로드 한다.  MySQL Community Server 5.7 다운로드  




여러 소스중에서 mysql-5.7.22.tar.gz 을 다운로드 함.

https://sourceforge.net/projects/boost/files/boost/1.59.0/ 사이트를 방문하여 boost_1_59_0.tar.gz 파일을 다운로드 한다.

서버에서 root계정으로 다운로드한 파일들의 압출을 푼다. 여기에서는 /source 경로에 다운로드하였다.

tar -xzvf mysql-5.7.22.tar.gz
tar -xzvf boost_1_59_0.tar.gz


mysql-5.7.22 폴더에서 cmake명령을 사용하여 소스를 컴파일 한다.  cmake 옵션 보기


cd mysql-5.7.22
cmake   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.22
             -DDOWNLOAD_BOOST=1
             -DWITH_BOOST=/source/boost_1_59_0
             -DENABLED_LOCAL_INFILE=1
             -DWITH_INNOBASE_STORAGE_ENGINE=1
             -DWITH_EXTRA_CHARSETS=all
             -DDEFAULT_CHARSET=utf8
             -DDEFAULT_COLLATION=utf8_general_ci 
             -Dwith_ZLIB=system
             -DENABLE_DTRACE=0
             -DMYSQL_TCP_PORT=3307 
             -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.22/data/mysql.sock
             -DSYSCONFDIR=/usr/local/mysql-5.7.22/conf 


  • 컴파일된 소스는 /usr/local/mysql-5.7.22 에 설치
  • 포트는 3307을 사용 

컴파일을 정말 많은 시간이 소요된다. 컴파일이 완료되며 다음의 명령을 입력하여 설치를 계속한다.

make
make install 

이제 설치가 완료되었다.

인스턴스 생성하기 
먼저 /usr/local/mysql-5.7.22/conf 위치에 my.cnf 파일을 생성한다. 참조한 자료들을 보면 생성되는 것을 기술되어 있으나 실제는 설정파일이 생성되지 않는다. 이런 이유에서 직접 만들어 주여야 한다.
이 파일은 아래와 같이 설정한다. (참고)

[mysqld]
old_passwords=0
datadir=/usr/local/mysql-5.7.22/data
socket=/usr/local/mysql-5.7.22/data/mysql.sock
user=mysql
character-set-server = utf8
collation-server = utf8_general_ci
explicit_defaults_for_timestamp
skip-name-resolve

[mysql]

[mysqld_safe]
log-error=/var/log/mysqld_57.log
pid-file=/usr/local/mysql-5.7.22/data/mysql.pid
datadir=/usr/local/mysql-5.7.22/data
socket=/usr/local/mysql-5.7.22/data/mysql.sock
user=mysql
port=3307
skip-name-resolve
character-set-server = utf8
collation-server = utf8_general_ci

[client]


 이제 다음과 같이 다음의 명령으로 데이터베이스를 구성한다.

/usr/local/mysql-5.7.22/bin/mysqld_safe --defaults-file=/usr/local/mysql-5.7.22/conf/my.cnf --initialize 

구성이 완료되면 다음 명령을 입력하여 필요한 플러그인 파일들을 생성하도록 한다.

/usr/local/mysql-5.7.22/bin/mysql_upgrade 


 이전버전과는 다르게 root 계정에 대한 비밀번호 없는 접근이 차단된다. 비밀번호는 최초에 랜덤하게 생성되며 다음 명령으로 확인할 수 있다.


cat /root/.mysql_secret 



참고 사이트 

댓글 없음:

댓글 쓰기