Database/Mysql

[Real MySQL] 2. 설치와 설정

noahkim_ 2023. 11. 22. 16:31

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

1. MySQL 설치

2. MySQL 서버의 시작과 종료

실행

mysqld --defaults-file=/usr/local/etc/my.cnf --initialize-insecure
--defaults-file
  • mysql 서버를 기동하는데 사용되는 기본 옵션 파일을 전달하는 옵션

 

--initialize-insecure
  • mysql 서버를 실행하는데 필요한 초기설정 관련 파일들을 자동 생성하는 옵션
    • 초기 데이터 파일
    • 로그 파일
    • root 계정 (비밀번호 없음)

 

설정

my.cnf
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
  • 기본 옵션 파일
  • 파일 검색 우선순위
    • /etc/my.cnf -> /usr/local/etc/my.cnf  -> ~/.my.cnf
    • 처음 발견한 my.cnf 파일 하나만 적용하고, 그 이후는 무시됨

 

시스템 변수

SHOW VARIABLES;
  • 서버를 기동할 때 사용되는 설정을 시스템 변수로 저장하여 적용할 수 있습니다.

 

속성
  • Cmd-Line: 명령행 인자로 설정한 시스템 변수인지 여부 ("--변수명=값" 형식으로 설정할 수 있음)
  • Option file: 설정파일인 my.cnf로 제어한 시스템 변수인지 여부
  • System Var: MySQL이 제공한 시스템 변수인지 여부
  • Var Scope: 적용 범위 
  • Dynamic: 시스템 변수가 정적인지 동적인지 여부

 

Var Scope
show global variables;
  • 시스템 전체에 영향을 미칩니다.
  • 주로 서버 설정에 사용됩니다.
  • ex) innodb_buffer_pool_size, key_buffer_size

 

show session variables;
  • 커넥션 단위별 값을설정할 수 있습니다.
  • 특정 클라이언트 연결에만 적용됨
  • ex) autocommit, sql_mode

 

Dynamic
  • 서버 기동중에 수정이 가능한지 여부에 따라 나뉩니다.

 

  • Dynamic
set global max_connections=5000;
set session autocommit=on;
  • 메모리에 접근하여 값을 수정합니다.
  • 현재 기동중인 서버 인스턴스에서만 유효합니다. (서버를 재시작하면 원래 설정값으로 돌아감)
  • ex) max_connections, sql_mode, innodb_flush_log_at_trx_commit

 

  • Static
    • 기동중에 수정할 수 없는 변수입니다.
    • 대부분의 글로벌 변수가 해당됩니다.

 

SET PERSIST

SET PERSIST max_connections=5000;
  • 메모리 값을 수정하고 디스크에도 반영하는 명령어 입니다.
  • mysqld-auto.cnf 파일에 기록됩니다.
  • global 변수에만 사용 가능합니다.

 

SET PERSIST_ONLY

SET PERSIST_ONLY max_connections=5000;
  • 디스크에 반영하는 명령어 입니다.
  • 메모리 값에는 반영되지 않습니다.

 

my.cnf

  • 시스템 변수의 기본 설정이 담긴 파일입니다.

 

[mysqld]
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1

[mysqld_safe]
malloc-lib = /opt/lib/libtmalloc_minimal.so

[mysql]
default-character-set = utf8mb4
socket = /usr/local/mysql/tmp/mysql.sock
port = 3304
  • 설정 변수
    • bind-address: 접속 가능한 호스트 ip 설정
    • mysqlx-bind-address: mysqlx 프로토콜로 접속 가능한 호스트 ip 설정
    • malloc-lib: mysql에서 사용할 메모리 할당 라이브러리 지정
  • 설정 그룹
    • 여러 개의 설정 그룹을 담을 수 있습니다.
    • 그룹명은 실행 프로그램을 주로 사용합니다.
    • ex) mysqld, mysqld_safe, mysql

 

출처