My SQL Replication

TaeYoon Kim·2023년 11월 7일
0

기초 (치트 시트)

목록 보기
4/23

요구 사항 분석 -> 개념 설계 -> 논리 설계 -> 물리설계

여기서는 물리설계에 대해서 다루겠다.

설계 시 고려 사항

물리 설계란 데이터를 어디에 저장할 것인가?

서버를 1대만 쓸것인가?

여러 대를 쓸 것인가?
Replication
Cluuster

보통 요즘엔 무조건 2개 이상 쓴다.
부하 분산과 재난 방지는 서비스 업체에 필수이기 때문이다.

다중 서버 구성을 위한 우리는 가장 간단한 MySQL의 Replication에 대해서 자세히 다뤄보자.

준비물
VM Linux server 2대 준비 (VM ware workstation Pro 사용)
네트워크 설정(링크)
mysql-server 설치(링크)

참고 문서
https://dev.mysql.com/doc/refman/8.0/en/replication.html

  1. DB 이중화
    (1) 네트워크 설정(2) 방화벽 설정
    setenforce 0
    systemctl stop firewalld

(3) MySQL 설치 및 실행
yum install mysql-server

systemctl restart mysqld

(4) MySQL 초기 설정
mysql_secure_installation
No
패스워드 입력
패스워드 입력
y
y
y
y

(5) Master 설정 (MySQL1)
1) /etc/my.cnf.d/mysql-server.cnf 파일 수정
[mysqld] 밑에 다음 내용을 추가한다.
server-id = 1
log-bin = mysql-bin

systemctl restart mysqld

2) Master 상태 확인
mysql -u root -p 로그인 후
show master status;

3) Replication할 때 사용할 계정 생성 및 권한 부여
CREATE USER '[이니셜]'@'[MySQL2의 IP주소]' IDENTIFIED BY '[패스워드]';

GRANT REPLICATION SLAVE ON *.*  TO '[이니셜]'@'[MySQL2의 IP주소]'



select * from mysql.user where user='[이니셜]'\G
	Repl_slave_priv 속성이 Y로 되어있는지 확인

(6) Slave 설정 (MySQL2)
1) /etc/my.cnf.d/mysql-server.cnf 파일 수정
[mysqld]밑에 다음 내용을 추가한다.

server-id = 2

systemctl restart mysqld

2) Master 지정
mysql -u root -p
change master to
master_host='[마스터 컴퓨터의 IP 주소]',
master_user='[마스터에서 만든 slave용 계정 이름]',
master_password='[마스터에서 만든 slave용 계정의 PW]',
master_log_file='mysql-bin.[마스터의 로그 번호]',
master_log_pos=[마스터의 포지션 번호];

3) 동기화 시작
start slave;

4) Slave 상태 확인
show slave status;

	또는

show slave status\G

Slave_IO_Running: Yes		Slave_SQL_Running: Yes
Slave_SQL_Running_State 등 확인
  1. 동기화 안될 때
    (1) 슬레이브
    stop slave;

    (2) 마스터
    마스터 상태 확인

    (3) 슬레이브
    change master to 명령어로 설정

    	start slave;
  1. 동작 확인
    (1) 마스터, 슬레이브에서 DB 확인
    show databases;

    (2) 마스터에서 DB 생성
    CREATE DATABASE [DB이름];

    (3) 마스터, 슬레이브 에서 DB 확인
    show databases;

이 때 양쪽에 DB가 생성되어 있어야 한다.

0개의 댓글