[MySQL] MySQL 설치 및 설정

당당·2024년 4월 30일
0

MySQL

목록 보기
2/18

📔설명

MySQL을 설치하고, 설정을 완료해보자


🍯MySQL 설치

https://dev.mysql.com/downloads/repo/yum/

MySQL 다운로드 페이지에서 RPM 설치 파일을 직접 받아 Yum을 이용해야 한다.

https://velog.io/@es_seong/MySQL-CentOS-7-MySQL-설치-기동-설정

yum install https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm

제일 처음 것 Download 버튼을 누르고, 위 벨로그에 있던 것 처럼 링크 주소 복사를 해주자! 그다음 터미널에서 실행!

ls -alh /etc/yum.repos.d/*mysql*

yum 리포지토리가 등록되면 rpm 파일들이 저장된 경로를 가진 파일들이 생성된 것을 확인할 수 있다.

yum 인스톨러 명령을 통해 버전별로 설치 가능한 MySQL 목록을 확인해보자

sudo yum search mysql-community

#설치 가능한 모든 버전 확인
sudo yum --showduplicates list mysql-community-server

가장 최신 버전인 8.0.37 버전을 설치해보자!

sudo yum install mysql-community-server-8.0.37



🍼MySQL 서버 시작 및 종료

MySQL 서버를 실행하는 데 필요한 초기 데이터 파일(시스템 테이블이 저장되는 데이터 파일)트랜잭션 로그(리두 로그) 파일을 생성

mysqld --defaults-file=/etc/my.cnf --initialize-insecure
# MySQL 서버 시작
systemctl start mysqld

# 서버 상태 확인
systemctl status mysqld

putty 설치1
putty 설치2
root 에러 발생시

붙여넣기가 안되는게 너무 불편해서 putty를 설치했다.

# 서버 실행 확인
ps -ef | grep mysqld

# MySQL 서버 종료
systemctl stop mysqld

실제 트랜잭션이 정상적으로 커밋돼도 데이터 파일에 변경된 내용이 아직 기록되지 않고, 로그 파일(리두 로그)에만 기록돼 있을 수 있는데, 이는 비정상적인 상황은 아니다

# MySQL 서버 종료 시 모든 커밋된 내용을 데이터 파일에 기록하고 종료
SET GLOBAL innodb_fast_shutdown=0;

클린 셧다운 : 모든 커밋된 데이터를 데이터 파일에 적용하고 종료하는 것



🥛MySQL 접속

# 서버에 직접 접속
mysql -uroot -p

root 초기 설정 안했는데, 로그인 안될 때

임시 비밀번호가 있었다. 로그인 후 root 비밀번호를 바꿔주자..

--기본 생성된 데이터베이스 목록 확인
show databases;



🧃MySQL 서버 업그레이드

인플레이스 업그레이드 : MySQL 서버의 데이터 파일을 그대로 두고 업그레이드
=> 여러 가지 제약 사항이 있으나, 업그레이드 시간을 크게 단축

논리적 업그레이드 : mysqldump 도구 등을 이용해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드된 버전의 MySQL 서버에서 덤프된 데이터 적재하는 방법
=> 버전 간 제약 사항이 거의 없지만 업그레이드 시간 매우 많이 소요

메이저 버전 간 업그레이드직전 메이저 버전에서만 업그레이드 허용
=> ex. MySQL 5.1 버전 사용 중이라면 5.1->5.5로 업그레이드 후 5.6으로 업그레이드, 그 후 5.6->5.7로 업그레이드 한 후에 MySQL 8.0으로 업그레이드 가능



☕서버 설정

# 어디서 my.cnf를 읽는지
mysqld --verbose --help

시스템 변수 : MySQL 서버가 기동하면서 설정 파일의 내용을 읽어 메모리작동 방식초기화하고, 접속된 사용자 제어를 위해 이러한 별도로 저장해 둔 것

-- mysql의 시스템 변수 확인 (mysql 접속 후)
show global variables;

https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-reference.html

시스템 변수 값이 어떻게 MySQL 서버와 클라이언트에 영향을 미치는지 판단하려면, 각 변수가 글로벌 변수인지 세션 변수인지 구분해야 한다.

Cmd-Line : MySQL 서버의 명령행 인자로 설정될 수 있는지 여부

Option file : MySQL의 설정 파일인 my.cnf로 제어 가능한지 여부

System Var : 시스템 변수인지 아닌지 나타냄

Var Scope : 시스템 변수 적용 범위

Dynamic : 시스템 변수가 동적인지 정적인지 구분

1. 글로벌 변수와 세션 변수

글로벌 범위 시스템 변수 : 하나의 MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수
=> 주로 MySQL 서버 자체에 관련된 설정

세션 범위의 시스템 변수 : MySQL 클라이언트MySQL 서버에 접속할 때 기본으로 부여하는 옵션의 기본값 제어


2. 정적 변수와 동적 변수

MySQL 서버의 시스템 변수는 MySQL 서버가 기동 중인 상태에서 변경 가능한지에 따라 동적 변수정적 변수로 구분된다.

-- 변경된 시스템 변수는 my.cnf파일이 아닌 별도의 파일에 기록됨
SET PERSIST

위 명령을 사용하면, 실행 중인 MySQL 서버의 시스템 변수를 변경함과 동시에 자동으로 설정 파일로도 기록한다.

변경하고자 하는 값이 동적 변수라면, SET 명령으로 간단히 변숫값을 변경하고, MySQL 서버재시작하지 않아도 됨
=> Both의 범위를 가진 시스템 변수라면, 글로벌 시스템 변수 값을 변경해도 세션 변수의 값은 변경 안됨


3. SET PERSIST

동적 변수의 경우 MySQL 서버에서 SET GLOBAL 명령으로 변경하면, 즉시 서버에 반영되지만 설정 파일에 변경된 내용이 적용되지 않으므로 해당 문제점을 보완하기 위해 SET PERSIST 명령을 추가했다.

set persist max_connections=5000;
show global variables like 'max_connections';

set persist 명령세션 변수에 적용되지 않으며, set persist 명령으로 시스템 변수를 변경하면 mysql 서버는 자동으로 global시스템 변수의 변경으로 인식하고 변경

-- 현재 실행 중인 서버에는 변경 내용을 적용하지 않고, 다음 재시작을 위해 mysqld-auto.cnf 파일에만 변경 내용 기록시

set persist_only max_connections=5000;

정적인 변수의 값영구적으로 변경하고자 할 때도 사용 가능
정적인 변수는 실행 중인 MySQL 서버에서 변경할 수 없는데, MySQL 서버가 재시작 될 때만 변경 가능하다.

-- mysqld-auto.cnf 파일 내용 삭제시
reset persist;


4. my.cnf 파일

참조할 만한 기본 설정 파일을 이용해 my.cnfvi명령어로 추가해주자

profile
MSSQL DBA 신입

0개의 댓글