MySQL 서버 설치
설치 가능한 방법
tar
,zip
으로 된 압축 파일 버전- 패키지 매니저 등을 이용한 설치 버전
- 소스코드 빌드
→ 가능 한 설치 버전을 이용하는 것이 안전하다.
패키지 매니저를 이용한 설치
Debian 계열
apt install mysql-server
RedHat 계열
dnf install mysql-server
최신 버전을 설치하고자 한다면 MySQL 홈페이지에서 리포지토리 설정 패키지를 설치해야한다.
RockyLinux MySQL 설치 게시글 참고
설치 후 초기 세팅
mysqld --initialize-insecure
--initialize
: 임시 비밀번호가 발급된 root 계정을 생성 (mysqld.log 로그에서 확인 가능)--initialize-insecure
: 비밀번호가 없는 root 계정을 생성
mysql_secure_installation
MySQL의 기본 보안 설정하는 명령어
- root 계정 패스워드 설정
- 원격 호스트에서 root 계정 접속 차단
- 익명 계정 삭제
- 테스트 DB 등 삭제
MySQL 디렉토리 구조
bin
: MySQL 서버, 클라이언트 프로그램 및 유틸리티 위치include
: C/C++ 헤더 파일 위치lib
: 라이브러리 파일 위치share
: 이외 여러 지원 파일 및 에러 메시지, 샘플 설정 파일my.ini
위치
MySQL 서버 시작과 종료
Systemd를 이용
systemctl status mysql
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
프로세스 확인
systemctl status mysql ## 또는
ps -ef | grep mysqld
systemd
를 이용하게 되면 mysql 설정파일(my.cnf
)의 mysqld_safe
스크립트 설정을 무시하게 된다.
malloc-lib
와 같은 해당 섹션에서만 가능한 시스템 설정을 적용해야 한다면 mysqld_safe
스크립트를 이용해서 MySQL 서버를 시작/종료 해야 한다.
원격으로 MySQL 종료
mysql> SHUTDOWN
- 원격으로 종료하고자 한다면 MySQL 접속하여 해당 명령어를 입력하면 된다.
- 단, 해당 명령의 권한(Privileges)이 있어야 한다.
Clean shutdown
실제 트랜잭션이 정상적으로 커밋되어도 데이터 파일에 반영되지 않고 로그 파일(Redo log)에만 기록되어 있을 수 있다.
MySQL 서버에서는 비정상적인 상황이 아니다.
mysql> SET GLOBAL innodb_fast_shutdown=0;
위 명령어를 통해 서버 옵션을 변경하면 모든 커밋된 데이터를 데이터 파일에 적용하고 종료할 수 있다.
서버를 종료하고 다시 기동할 때 트랜잭션 복구 과정을 진행하지 않기 때문에 빠르게 기동이 가능하다.
MySQL 서버 연결
mysql 이용
MySQL 프로그램(mysqld)과 설치된 기본 클라이언트 프로그램 mysql
을 이용한 방법이다.
mysql -u root -p --host=localhost --socket=/tmp/mysql.sock
mysql -u root -p --host=127.0.0.1 --port=3306
mysql -u root -p
여기서 host를 localhost와 127.0.0.1 로 명시할 때 방법이 다르다.
- localhost : 소켓 파일을 이용한다. (IPC(Inter-Process Communication) 이용)
- 127.0.0.1 : TCP/IP를 이용한다.
외부 서버에 접속하고자 한다면 두 번째 방법을 이용해야 한다.
세 번째 방법처럼 host와 포트를 명히하지 않았다면 기본값으로 localhost가 된다.
MySQL 서버 업그레이드
서버 업그레이드 방법에는 두 가지가 있다.
- MySQL 서버 데이터 파일을 그대로 두고 업그레이드 <- 인플레이스 업그레이드(In-Place Upgrade)
- 제약 사항이 논리적 업그레이드보다 있으나 업그레이드 소요 시간이 매우 짧다.
mysqldump
도구를 이용해 덤프를 뜬 후(백업 한 후) 업그레이드 <- 논리적 업그레이드(Logical Upgrade)- 제약 사항이 거의 없지만 저장된 데이터 양에 따라 업그레이드 소요 시간이 길어질 수 있다.
인플레이스 업그레이드 제약 사항
인플레이스 업그레이드를 하고자 한다면 두 제약 조건을 조심해야 한다.
하위 버전 지원
- 8.0.16 -> 8.0.21 또는 5.5 -> 5.6 (가능)
- 5.5 -> 5.7 또는 5.5 -> 8.0 (불가능)
두 단계를 건너뛰는 업그레이드는 지원하지 않는다.
이러한 메이저 업그레이드는 데이터 파일 패치가 필요하다.
(8.0은 직전 메이저 버전인 5.7 버전의 데이터 파일과 로그 포맷만 인식할 수 있다.)
만약 5.1 버전을 사용하고 있을 때 8.0으로 업그레이드 해야 한다면?
5.1 -> 5.5 -> 5.6 -> 5.7 -> 8.0
이렇게 순차적으로 업그레이드 하는 과정을 거쳐야 하는데, 이런 경우에는 덤프를 뜨는 방법이 나을 수 있다.
특정 버전 지원
메이저 버전 업그레이드가 특정 마이너 버전에서만 가능한 경우가 있다.
5.7 에서 8.0으로 업그레이드를 하기 위해선 GA버전에서만 가능하다.
- GA(General Availabilty) : 오라클에서 안정성이 확인된 버전
MySQL 서버 설정
my.cnf
일반적으로 MySQL 서버가 시작될 때 단 하나의 설정 파일을 참조한다.
- 유닉스 계열 :
my.cnf
- 윈도우 계열 :
my.ini
지정된 여러 디렉토리를 순차적으로 탐색하면서 처음 발견된 my.cnf
를 참조한다.
설정 파일의 경로는 여러 곳 일 수 있고 운영체제마다도 경로가 다르다.
mysql --help
명령어를 통해 어느 경로의 my.cnf
을 참조하는지 확인할 수 있다.
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf