다른 server, 다른 port 사용하는 MySQL Replication

YUNU·2023년 6월 1일
0

데이터베이스

목록 보기
4/5
post-thumbnail

🟦 MySQL DB Replication


다른 서버와 다른 포트를 사용하는 두 MySQL Replication

지난번 Mobius 플랫폼의 mysql과 ELK 컨테이너의 mysql을 replication하였었는데
포트문제로 ELK 컨테이너의 포트를 3307:3306으로 바꾸어 DB 싱크 맞추는 것을 다시 수행하였다.

Mobius_aquafarm 도커 컨테이너의 IP address : 172.17.0.3

Mobius_aquafarm의 mysql 사용 포트 : 3306

ELK_aquafarm 도커 컨테이너의 IP address : 172.17.0.2

ELK_aquafarm의 mysql 사용 포트 : 3307

ELK_aquafarm의 mysql을 workbench에 127.0.0.1:3307로 연결

🔹 Master 서버의 my.cnf 파일

my.cnf 파일 수정
vi /etc/mysql/my.cnf
[mysqld] 섹션이 없다면 본인이 만들고 해당 내용을 입력하면 된다.
[mysqld]
server-id = 임의 아이디
log_bin = mysql-bin // 로그 옵션
port = 3306
super_read_only = 0
bind-address = 0.0.0.0

🔹 Slave 서버의 my.cnf 파일

my.cnf 파일 수정
vi /etc/mysql/my.cnf
[mysqld] 섹션이 없다면 본인이 만들고 해당 내용을 입력하면 된다.
[mysqld]
server-id = 임의 아이디(중복되면 안됨)
port = 3306
log_bin = mysql-bin // 로그 옵션
binlog_do_db = 복제할 DATABASE 이름
여기서부터는 이전 글을 참고하여 진행하면 된다.

다른 서버의 MySQL Replication

🔹 Master 서버의 사용자 생성 및 권한 부여

//사용자 생성
CREATE USER '사용자이름'@'SlaveMySQL호스트' IDENTIFYED BY '비밀번호';
// 권한 부여
GRANT SELECT, INSERT, UPDATE, DELETE ON aquafarm.* TO 사용자이름@localhost;
GRANT PROCESS ON *.* TO '사용자이름'@'Slave_MySQL_호스트'; 
GRANT LOCK TABLES ON 데이터베이스.* TO '사용자이름'@'Slave_MySQL_호스트';
exit

🔹 Master MySQL 서버의 데이터베이스 백업 및 복원

Master MySQL 서버에서 데이터베이스를 백업하여 Slave MySQL 서버로 복원해야 합니다. 이를 통해 초기 데이터 동기화를 수행할 수 있다.
mysqldump -u <사용자> -p <데이터베이스> > <백업파일명>.sql;
백업파일명은 임의로 설정

// 백업 파일 생성 확인
ls -l <백업파일명>.sql // 파일 생성 확인

🔹 Slave MySQL 서버의 복제 설정

Slave MySQL 서버에서 Master MySQL 서버를 마스터로 설정한다.
// Slave MySQL 쿼리문 수행
CHANGE MASTER TO MASTER_HOST='<모비우스 MySQL 서버의 IP 주소>',
MASTER_USER='<복제를 위한 사용자 이름>',
MASTER_PASSWORD='<복제를 위한 사용자 비밀번호>',
MASTER_LOG_FILE='<모비우스 MySQL 서버의 로그 파일>',
MASTER_LOG_POS=<모비우스 MySQL 서버의 로그 위치>;
Docker Container IP 주소 확인
cmd에서 아래 명령어 입력
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 컨테이너명
LOG_FILE, LOG_POS 확인
Master서버의 mysql 아래 쿼리문 실행

SHOW MASTER STATUS;

FILE 및 POSTION 열의 값이 각각 FILE, POS

(혹은 Mobius MySQL 서버의 my.cnf 또는  my.ini 열어서 log.bin 옵션을 찾음
 해당 옵션의 값이 FILE, log-bin-index 옵션의 값이 POS)

🔹 복제 시작

START SLAVE; // 복제 시작
SHOW SLAVE STATUS // 복제 상태 확인

🔹 Replicaion 확인

Mobius server의 mysql에 Data Insert
ELK server의 mysql을 workbench에서 확인
profile
DDeo99

0개의 댓글