본문 바로가기
Dev/MySQL

[MySQL] Replication 설정

by 흰바다제비 2022. 7. 25.
728x90

서버 구성 

MySQL2개의 경로에 설치했다.

-       Master : /usr/local/mysql

-       Slave : /usr/local/mysql-slave

 

같은 서버에서 포트를 다르게 주어 Master Slave를 구분했다.

-       Server : 192.168.4.37

-       Master port : 3306

-       Slave port : 3307

 


Conf 파일 수정

MySQL은 실행할 때 my.cnf 를 참조하여 작동한다. 보통 /etcmy.cnf 파일이 위치해있는데, 이 경로에 없을 경우 자신의 data 디렉토리 안을 다음 순위로 살펴본다. 따라서 /etc/my.cnf 파일을 지우고 각 MySQL 경로의 data 디렉토리에 my.cnf 파일을 생성했다.

-       Master : --defaults-file=/usr/local/mysql/data/my.cnf

-       Slave : --defaults-file=/usr/local/mysql-slave/data/my.cnf

 

먼저 Master server my.cnf 파일에 아래 내용을 추가해준다.

[mysqld]
log-bin=mysql-bin
server-id=1

→ masterslaveserver id가 겹치면 안된다.

    Masterserver id1, Slaveserver id2,

    id 증가폭은 모두 2로 두어 server id가 겹치지 않도록 설정했다.

 


Replication 세팅

Slave serverMaster server를 바라보도록 설정하는 방법은 두가지이다.

1)     MySQL 접속 후 설정

2)     my.cnf 파일 내에서 설정

 

 

먼저 MySQL 커맨드 창에서 직접 입력하는 방법이다.

1.1)   Slavemy.cnf 파일에 아래 내용을 추가해준다.

[mysqld]
server-id=2
replicate-do-db='repl_db'

 

1.2)   Master의 데이터베이스를 dump하여 Slave server에 복원한다.

-       Dump 백업 Command :

/usr/local/mysql/bin/mysqldump -uroot –p repl_db > /tmp/repl_db_dump.sql

-       Dump 복원 Command :

/usr/local/mysql-slave/bin/mysqldump -uroot –p repl_db < /tmp/repl_db_dump.sql

 

1.3)   MySQL 접속 후 command를 입력하여 설정한다.

mysql> change master to
master_host='192.168.4.37',
master_user='repl_user',
master_password='masterpw',
master_log_file='mysql-bin.000010',
master_log_pos=154;

master_log_filemaster_log_pos 정보는 Master server에서 show master status 커맨드를 통해 확인할 수 있다.

 

1.4)   Slave MySQL을 재시작한다.

 


 

다음은 My.cnf 파일 내에서 설정하는 방법이다.

2.1) Slavemy.cnf 파일을 설정해준다.

[mysqld]
replicate-do-db='repl_db'
master-host=192.168.4.37
master-user=repl_user
master-password=masterpw
master-port=3306
server-id=2

 

2.2) Master의 데이터베이스를 dump하여 Slave server에 복원한다.

: 1.2와 동일하게 진행한다.

 

2.3) Slave MySQL을 재시작한다.

 


Replication 상태 확인

* Master에서 show processlist 커맨드를 실행한 결과

mysql> show processlist\G

프로세스가 정상적으로 실행되는 것을 확인할 수 있다.

 

 

* Slave에서 show slave status 커맨드를 실행한 결과

mysql> show slave status\G

(일부 생략)

→ Slave_IO_Running : yes

→ Slave_SQL_Running : yes

→ Last_IO_Error / Last_SQL_Error : 0

 

위 항목을 보고 정상적으로 돌아가는 것을 알 수 있다.

728x90

'Dev > MySQL' 카테고리의 다른 글

[MySQL] yum으로 MySQL 설치 (CentOS 7)  (0) 2022.09.03
[MySQL] MySQL MMM  (0) 2022.07.26
[Database] 백업 방식별 특징/장점/단점  (0) 2022.07.16
5. XtraBackup 소요 시간 산정  (0) 2022.07.15
4. XtraBackup 상황별 스크립트  (0) 2022.07.03

댓글