[Ubuntu] Ubuntu-20.04 APM 소스 설치 - 2. MySQL

Ogu·2022년 4월 18일
0
post-thumbnail

🌵 필수 패키지 설치


📌 필요 패키지

1) CMake
2) GNU make 3.75 이상
3) GCC 7.1 이상
4) C++ 또는 C99 컴파일러
5) SSL library : libssl-dev 로 다운
6) Boost C++ libraries : libboost-all-dev 로 다운
7) ncurses library : apt-get install libncurses5-dev libncursesw5-dev 로 다운
8) Perl

앞서 아파치를 설치할 때 설치한 패키지들을 제외하고 cmake, libssl-dev, libboost-all-dev, libncurses5-dev libncursesw5-dev만 진행했다.

$ apt-get update
$ apt-get install cmake
$ apt-get install libssl-dev
$ apt-get install libboost-all-dev
$ apt-get install libncurses5-dev libncursesw5-dev

💊 설치 여부 확인 방법

	$ dpkg -l | grep [이름]

🌵 MYSQL 다운로드 및 설치


최신 버전 확인
https://dev.mysql.com/downloads/mysql/

📌 MySQL 8.0.28 소스설치 파일 다운로드 및 압축해제

$ cd /usr/local
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28.tar.gz
$ tar xvfz mysql-8.0.28.tar.gz

📌 MySQL 8.0.28 소스 설치

💊 make에서 너무 오랜 시간이 걸렸다..
메모리 오류도 엄청 나서 설치 4시간 이상, 메모리 오류 해결에만 1시간 이상이 걸렸다,,

$ cd mysql-8.0.25
$ rm -f CMakeCache.txt
$ mkdir dir_mysql(원하는 이름으로)
$ cd dir_mysql
$ cmake \
.. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/mysql/boost 
$ make
$ make test
$ make install


make 과정중 이러한 오류가 나타났다.
블로그들과 구글 검색 (collection2: fatal error: ld termitated with signal 9[죽었음])을 해보면 메모리 오류여서 용량을 늘려야 한다고 한다.

💊 메모리 오류 해결 과정 1

https://velog.io/@mooh2jj/%EC%9A%B0%EB%B6%84%ED%88%AC-APM-%EC%86%8C%EC%8A%A4%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0#mysql-%EC%84%A4%EC%B9%98
처음에는 이 블로그의 주소를 참조해

#1, create an empty file
dd if=/dev/zero of=/media/swapfile.img bs=1024 count=1M

2, generate a file exchange system
mkswap /media/swapfile.img

3, set the boot
vi /etc/fstab
/media/swapfile.img swap swap sw 0 0

4, activate
swapon /media/swapfile.img

5. Is the verification successful?
[root@izwz956snfyrvah6yq8sa4z ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/media/swapfile.img                     file            1048572 0       -2
 
[root@izwz956snfyrvah6yq8sa4z ~]# grep 'Swap' /proc/meminfo
SwapCached:            0 kB
SwapTotal:       1048572 kB
SwapFree:        1048572 kB



오류를 해결해보고 다시 make가 진행됐다.

💊 메모리 오류 해결 과정 2

이렇게 해결해 보고 다시 make를 진행했지만 얼마 안가서 또 같은 메모리 오류가 나타났다.
다른 블로그에서 swap file 용량을 늘리는 것으로 해결한 것을 보고 swap file 용량을 늘려 보았더니 그 다음부턴 막힘 없이 진행된다!

Ubuntu 20.04버전은 default로 2GB의 swap이 잡혀있다. 이를 늘려보자.

  1. 먼저 swap을 비활성화시킨다.
$ sudo swapoff -v /swapfile
  1. fallocate 명령어로 메모리 크기를 조정하고, 권한을 설정한 다음 mkswap 명령어로 swapfile을 만들고 swapon으로 활성화 시킨다.
    swap을 8G로 설정한다.
$ sudo swapoff -v /swapfile
  1. 권한 설정
$ sudo chmod 600 /swapfile
  1. swap file 만들기
$ sudo mkswap /swapfile
  1. swap file 활성화
$ sudo swapon /swapfile

다시 오류 ㅠ!

🌵 MYSQL DB 초기화


📌 mysql 그룹 및 유저 생성

-r : system account
-g : 그룹 지정
-s : user 의 로그인 shell

/usr/local/mysql-8.0.28/dir_mysql# groupadd mysql
/usr/local/mysql-8.0.28/dir_mysql# useradd -r -g mysql -s /bin/false mysql

📌 디렉토리 생성

cd /usr/local
cd mysql
mkdir mysql-files

📌 권한 주기

chown : 파일의 소유자를 변경
-R : 하위 디렉토리까지 소유권 할당
chmod : 사용권한을 변경

$ chown -R mysql:mysql /usr/local/mysql
$ chown mysql:mysql mysql-files
$ chmod 750 mysql-files

📌 기본 DB 생성

$ bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

후에 나오는 임시비밀번호는 나중에 입력해야 mysql이 사용 가능하므로 기록해두자!!

🌵 서버 시작 / 사용


$ bin/mysql_safe —user=mysql &
$ ps -ef | grep mysqld
%bin mysql -u root -p
Enter password: 비밀번호 입력

#비밀번호 변경
ALTER USER 'root'@'localhost' IDENTIFIED By '원하는 비밀번호';
exit

#서버 종료
bin/mysqladmin -u root -p shutdown
Enter password: 비밀번호 입력

🌵 참고 URL


https://jminie.tistory.com/91?category=1006530#%F-%-F%--%-C%--%C-%A-MySQL
https://yeni-days.tistory.com/7?category=1020921
https://happylulurara.tistory.com/139
https://happylulurara.tistory.com/137 - 디스크 용량
https://r-mango.tistory.com/6?category=900118 -- ㄲ
https://velog.io/@yeonii/LinuxUbuntu20.04-Mysql8.0.25-%EC%88%98%EB%8F%99%EC%84%A4%EC%B9%98 - swap file
https://mrkzet.tistory.com/23 - 우분투 vi 에디터
https://alkhwa-113.tistory.com/entry/Ubuntu-1804-%EC%97%90-MySQL-8021-%EC%88%98%EB%8F%99%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

https://technote.kr/156- swap

profile
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글