MySQL Replication

황시준·2022년 12월 31일
0
post-thumbnail

Replication 이란?

Replication은 복제를 뜻한다.
그렇다면 MySQL Replication은 MySQL을 복제한다는 말이 된다.

How TO?

MySQL을 복제하는 것이다 보니 Database가 2개 이상 존재해야 한다.
이는 Master, Slave로 구성된다.

Master

웹서버로 부터 데이터 등록, 수정, 삭제 요청시 바이너리로그를 생성해 Server로 전달

Slave

Master로부터 받은 바이너리로그를 데이터로 반영한다.

MySQL Replication 사용 이유

  • 서버 분산 기능
    Master Server 에서 등록, 수정, 삭제 연산을 수행한다면 Slave Server에서 이를 Search하여 결과를 return 할 수 있게 한다.
  • 데이터 백업 기능
    Master의 데이터를 복제하는거다 보니 백업이 가능하다.
    또한 Master 가 죽게되면 Slave를 사용 가능하다.

설정 방법(Master)

1. DB생성 및 계정 생성, 권한 설정

create database testDB default character set utf8;
create user ghkdtlwns987 identified by 'password';
grant all privileges on testDB.* to ghkdtlwn987'%' identified by 'password';

2. Replication 계정 생성

grant replication slave on *.* to 'ghkdtlwns987'@'%' identified by 'password';

3. MySQL 설정 - my.cnf

/etc/mysql/my.cnf 에 저장

[mysqld]
log_bin = mysql-bin
server_id = 10
default_authentication_plugin=mysql_native_password

4. MySQL 재시작 및 확인

show master status; //binlog 를 확인할 수 있다. 

service mysql restart

binlog란?
Database에 존재하는 바이너리 로그를 뜻한다.

설정 방법(Slave)

1. DB생성 및 계정 생성, 권한 설정

create database testDB default character set utf8;
create user ghkdtlwns987 identified by 'password';
grant all privileges on testDB.* to ghkdtlwn987'%' identified by 'password';

2. MySQL 설정 - my.cnf

/etc/mysql/my.cnf 에 저장

[mysqld]
log_bin = mysql-bin
server_id = 11
relay_log = /var/lib/mysql/mysql-relay-bin
log_slave_updates = 1
read_only = 1
default_authentication_plugin=mysql_native_password

3. Master서버와 연결 설정

연결 설정을 하기 전에 방화벽 상태를 확인해주도록 하자.

change master to master_host='Master IP', master_user='Master User', master_password='Master PW', master_log_file='binlog 파일', master_log_pos='Master Server Position';
  • MASTER_HOST : Mster 서버 IP 입력
  • MASTER_USER : 리플리케이션 ID
  • MASTER_PASSWORD : 리플리케이션 PW
  • MASTER_LOG_FILE : MASTER STATUS 로그파일명
    show master status에서 확인 가능
  • MASTER_LOG_POS : MASTER STATUS에서 position 값
    show master status에서 확인 가능
    (Log 파일을 읽을 위치를 지정하는 작업)

4. Slave 시작

start slave

확인하기

show slave status\G

\G를 붙여줘야 이쁘게 보인다.

프로젝트 하면서 공부한 내용을 적는다.
이걸 가지고 이제 Docker 에 적용시킬 예정이다.
이걸 한번에 올릴지, 짬짬히 올릴지는 봐야겠다.

profile
하고싶은게 많은 newbie

0개의 댓글