한 서버에 MySQL 5.6 버전과 5.7 버전을 설치하는 방법

5.7을 이용해서 MySQL 연구를 하던 중에 5.7의 옵티마이저 동작 원리가 5.6과 달라진 부분이 많아서 5.6을 설치할 필요가 생겼습니다.

그런데 한 서버에 MySQL 5.6과 5.7 버전을 설치하는 것이 약간 까다롭네요.

PostgreSQL은 RPM을 이용해서 설치하더라도 설치 디렉토리, 접속 포트 등을 지정할 수 있었는데, MySQL은 RPM을 이용해서는 지정된 디렉토리 (/var/lib/mysql)에만 설치가 가능한 것 같습니다.

일부 문서를 보면 –relocate 옵션을 이용해서 디렉토리 지정이 가능하다고 되어있는데, 5.6, 5.7 버전은 relocate가 불가능합니다.

그래서 이참에 소스 컴파일로 두 개의 버전을 설치해보기로 했습니다. 그런데 이 또한 사전 설치 작업, 라이브러리 설치, socket 지정 등의 작업으로 인한 시행착오가 일부 있었습니다. 따라서 관련 내용을 공유하고자 포스팅합니다.

사전 설치 작업


소스 컴파일을 위해선 cmake와 Bison을 설치해야 합니다. 그리고 5.7은  Boost 라이브러리를 추가로 설치해야 합니다.

1) cmake 설치

다운로드 사이트: https://cmake.org/
다운로드 파일: cmake-3.8.0-Linux-x86_64.tar.gz

— 설치 단계

배포용 파일이므로 컴파일은 필요없고 디렉토리에 압축만 풀면됩니다.

# gunzip cmake-3.8.0-Linux-x86_64.tar.gz
# tar xvf cmake-3.8.0-Linux-x86_64.tar
# cp -rp cmake-3.8.0-Linux-x86_64 /usr/local/cmake

— .bash_profile PATH를 수정합니다.

PATH=$PATH:$HOME/bin:/usr/local/cmake/bin

# . .bash_profile

2) Bison 설치

다운로드 사이트: http://www.gnu.org/software/bison/
다운로드 파일: bison-3.0.tar.gz

— 설치 단계

# gunzip bison-3.0.tar.gz
# tar xvf bison-3.0.tar
# cd bison-3.0
# ./configure
# make
# make install

3) Boost 라이브러리 설치 (참고사이트: http://dslee1.blogspot.kr/2016/04/mysql-5711-cmake-error-at.html)

— 설치 단계

# cd /usr/local/src/
# wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
# tar xvfz boost_1_59_0.tar.gz

4) 유저 및 그룹 생성

# groupadd mysql56
# useradd -r -g mysql56 -s /bin/false mysql56

# groupadd mysql57
# useradd -r -g mysql57 -s /bin/false mysql57

5) 소스 다운로드

https://github.com/mysql/mysql-server/tree/5.6
https://github.com/mysql/mysql-server/tree/5.7

MySQL 5.6 설치


설치 단계는 다음과 같습니다.

1) 설치 단계

# unzip mysql-server-5.6.zip
# cd mysql-server-5.6
# mkdir bld
# cd bld
# cmake ..

— CmakeCache.txt 파일을 열어서 설치 디렉토리 위치를 변경합니다.

CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql56
MYSQL_DATADIR:PATH=/usr/local/mysql56/data
SYSCONFDIR:PATH=/usr/local/mysql56/etc

— 내용을 수정한 후에 make 및 make install을 수행합니다.

# make
# make install

2) 후속 작업

# chown -R mysql56:mysql56 /usr/local/mysql56
# /usr/local/mysql56/scripts/mysql_install_db –user=mysql56

3) 비밀번호 변경 (참고사이트: http://egloos.zum.com/spongebody/v/3530932)

5.6을 소스로 설치할 때 root 비번을 잘 모르는 경우가 있습니다. 이때는 다음과 같이 조치합니다.

# /usr/local/mysql56/bin/mysqld_safe –user=mysql56 –skip-grant-tables &
# mysql -u root mysql
mysql> update user set password=password(‘rootpassword’) where user = ‘root’;
mysql> flush privileges;

# killall mysqld
# /usr/local/mysql56/bin/mysqld_safe –user=mysql56 &

4) /usr/local/mysql56/my.cnf 파일 편집

저 같은 경우에는 5.6은 기본 포트인 3306으로, socket은 /tmp/mysql56.sock 으로 설정했습니다. 따라서 /usr/local/mysql56/my.cnf 파일을 다음과 같이 편집합니다.

[mysqld]
port = 3306
socket=/tmp/mysql56.sock
이하 생략

5) 접속 방법

소켓을 별도로 지정했으므로 -S 옵션을 이용해서 해당 소켓을 지정합니다.

# mysql -uroot -p -S /tmp/mysql56.sock

MySQL 5.7 설치


설치 단계는 다음과 같습니다.

1) 설치 단계

# unzip mysql-server-5.7.zip
# cd mysql-server-5.7
# mkdir bld
# cd bld
# cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/boost_1_59_0

— CmakeCache.txt 파일을 열어서 설치 디렉토리 위치를 변경합니다.

CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql57
MYSQL_DATADIR:PATH=/usr/local/mysql57/data
MYSQL_KEYRINGDIR:PATH=/usr/local/mysql57/keyring
SYSCONFDIR:PATH=/usr/local/mysql57/etc

— 내용을 수정한 후에 make 및 make install을 수행합니다.

# make
# make install

2) 후속 작업

아래 작업 시에 화면에 root 임시 비번이 출력됩니다. 해당 비번을 복사해둡니다.

chown -R mysql57:mysql57 /usr/local/mysql57
/usr/local/mysql57/bin/mysqld –initialize –user=mysql57
/usr/local/mysql57/bin/mysql_ssl_rsa_setup

3) /usr/local/mysql57/my.cnf 파일 편집 

[mysqld]
socket=/tmp/mysql57.sock
port=3307
이하 생략

4) MySQL 시작

# /usr/local/mysql57/bin/mysqld_safe –user=mysql57 &

5) 비밀번호 변경

# mysql -uroot -ptcDqMfDh:7h? -S /tmp/mysql57.sock
mysql> alter user ‘root’@’localhost’ identified by ‘rootpassword’;
mysql> flush privileges;

6) 접속

소켓을 별도로 지정했으므로 -S 옵션을 이용해서 해당 소켓을 지정합니다.

# mysql -uroot -p -S /tmp/mysql57.sock

이로써 한 서버에 2개의 MySQL 설치가 완료됐습니다.

저는 서버에서 테스트용으로 2개 버전을 설치한 것이라서 mysql 접속만 하면 되는데요.
만일 PHP를 이용하는 경우에는 기본적으로는 /tmp/mysql.sock을 이용하므로 socket 명을 변경한 경우에는 php.ini를 수정하는 등의 작업이 필요할 것 같습니다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s