MySQL 8 설치하기
MySQL 8 은 그동안의 버저닝을 버린 최초의 메이저 버전 업데이트라고 할 수 있다. 그만큼 기념할 만큼 큰 변화를 예고했던 버전이며 실제로 많은 변화가 있었다.
MySQL 8 의 설치는 5.7 과 크게 차이가 없다.
컴파일 옵션
1 2 3 4 5 6 7 8 9 10 11 12 |
apt install libssl-dev libncurses5-dev libaio-dev libnuma-dev libevent-dev cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-8.0.11 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_SYSTEMD=1 \ -WITH_EDITLINE=/usr \ -WITH_LIBEVENT=/usr \ -WITH_ZLIB=/usr \ -DWITH_BOOST=/usr/src/boost \ -DDOWNLOAD_BOOST=1 |
컴파일러 옵션중에 스토리지 엔진관련해서 변경사항이 있었다. InnoDB, MyISAM, MERGE, MEMORY, CSV 엔진은 이제 기본이 됐다. 명시적으로 지정할 필요가 없다. 엔진 옵션으로 ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED 등을 선택할 수 있다.
-DMUTEX_TYPE 옵션으로 InnoDB 에 대한 뮤텍스 타입을 지정하는 건데, 기본값으로 event 다. 이를 위해서 libevent 가 필요하며 이를 지정하기 위해서 -WITH_LIBEVENT 를 해주면 된다.
MySQL 8 에서는 대부분의 라이브러리들이 bundle, system 으로 선택을 할 수있다. 안정성을 위해서 bundle 을 이용하는 걸 권장하는 듯 하지만 system 이나 별도 컴파일 한 라이브러리 사용을 위해서 지정해 줄수도 있다.
좀 더 많은 컴파일 옵션은 “2.9.4 MySQL Source-Configuration Options” 을 참조 하면 된다.
소스를 받아 컴파일할때 주의할 점은 바로 컴파일을 위한 하드디스크 공간이다. 이전 버전 보다 컴파일을 위한 하드디스크 공간을 많이 상용한다.
1 2 |
Filesystem Size Used Avail Use% Mounted on /dev/vdb1 9.8G 6.6G 2.7G 72% /mnt |
무려 6.6G 정도의 용량이 사용된다.
설치된 바이너리 용량 대략 1.3G 정도다.
1 2 |
# du -sh mysql-8.0.11/ 1.3G mysql-8.0.11/ |
설치 후 작업.
설치시에 SYSTEMD 옵션을 주었다면 이제 Systemd 를 사용할 수 있으며 MySQL 8 은 이를 위한 파일을 생성해 준다. 이 파일은 설치디렉토리에 lib/systemd/system 디렉토리에 파일이 존재한다.
심볼릭 링크를 생성해 준다.
1 |
]# ln -s mysql-8.0.11 mysql |
계정 생성을 해줘야 하는데, 다음과 같이 해주면 된다.
1 2 |
/usr/sbin/groupadd -g 47 -o -r mysql /usr/sbin/useradd -M -g mysql -o -r -d /opt/mysql/logs -s /bin/false -c "MySQL Server" -u 47 mysql |
필요한 디렉토리 생성해 준다. pid, sock 파일을 위한 run 디렉토리와 logs 디렉토리를 생성해준다. 사실 여기서 logs 디렉토리는 사용되지는 않는다.
1 2 |
]# mkdir /opt/mysql/run ]# mkdir /opt/mysql/logs |
소유권을 변경해준다. MySQL이 제대로 동작하기 위해서는 설치 디렉토리에 대한 소유권을 제대로 설정해 줘야 한다.
1 2 3 |
]# chgrp -R mysql mysql-8.0.11 ]# cd mysql-8.0.11 ]# chown mysql run logs |
MySQL 라이브러리 시스템 인식.
1 2 |
echo "/opt/mysql/lib" > /etc/ld.so.conf.d/mysql.conf ldconfig |
데이터 디렉토리 초기화.
다음과 같이 데이터 디렉토리를 초기화 해준다.
1 2 3 |
cd /opt/mysql bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql # bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql |