Real MySQL

1 minute read

[DB] Real MySQL - 2장

2.3 서버 설정

  • 2.3.1 설정 파일의 구성

    mysql은 유닉스에서는 my.cnf, 윈도우에서는 my.ini 파일을 이용해 설정된다.

  • 2.3.2 mysql 시스템 변수

    SHOW VARIABLES, SHOW GLOBAL VARIABLES 명령어로 확인한다.

    autocommit, basedir, date_format, general-log 등을 확인할 수 있다.

    Cmd-Line 으로 명령으로 인자를 설정할 수 있는지

    Option file 으로 my.cnf 설정으로 제어할 수 있는지

    System Var 으로 시스템 변수인지 등을 알 수 있다.

  • 2.3.5 my.cnf 설정 파일

    /etc/mysql/mysql.conf.d/mysqld.cnf 파일의 bind-address로 접근을 허용할 외부 ip를 지정할 수 있다.

    이 외에도 port, dir 등의 기본 옵션 뿐만 아니라 스케쥴러, transaction 격리수준, innoDB 플러그인 옵션, plugin-load 설정, innoDB 기본 옵션, MyISAM 옵션, 로깅 옵션, 복제 옵션 등을 설정할 수 있다.

    모든 설정 참고

2.5 MySQL 복제 구축

복제 그룹 내에 속한 각 MySQL 서버가 중복되지 않는 server-id 값을 가지고 있어야 하고, 마스터 서버는 바이너리 로그가 활성화돼 있어야 한다. 바이너리 로그의 동기화 방법은 sync_binlog 설정을 사용

SHOW MASTER STATUS 명령어로 binary log 파일명 과 로그 위치 조회

  • 2.5.2 복제 계정 준비

    CREATE USER 'replica'@'%' identified '1234';, GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'

    복제 계정을 마스터 서버에 생성

  • 2.5.3 데이터 복사

    MySQL Enterprise backup 이나 mysqldump 등을 이용해 데이터를 슬레이브 mySQL에 복사한다.

    mysqldump -utoor -p --opt --single-transaction --hex-blob --master-data=2 --routines --triggers --all-databases > master_data.sql

    --single-transaction 옵션을 주어 테이블이나 레코드 잠금을 걸지 않고 InnoDB 테이블 백업을 할 수 있게 한다.

    --master-data=2 옵션을 주어 바이너리 로그의 정보를 백업 파일에 같이 기록하게 해준다. -> FLUSH TABLES WITH READ LOCK

  • 2.5.4 복제 시작

    mysqldump로 백업받은 파일의 헤더에서 CHANGE MASTER~~ 를 찾아 복붙해 실행

    START SLAVE 명령을 통해 복제 시작

    SHOW SLAVE STATUS 에 표시되는 Seconds_Behind_Master 의 상태가 0이 되면 동기화 완료

2.6 권한 관리

사용자 계정 생성 방법과 각 계정 권한 설정 방법을 잘 설정하면 데이터베이스 보안이 유지될 수 있다.

  • 2.6.1 사용자의 식별

    사용자 계정 뿐만 아니라 사용자의 접속 지점도 계정의 일부가 된다. 사용자 계정 생성 시에 동일한 아이디가 잇으면 서버는 범위가 더 좁은 것을 선택해 생성한다.

  • 2.6.2 권한

    종류

    GRANT ~~ on *.* TO 'user'@'localhost' 와 같은 명령어로 권한 부여