지난번 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로 연결
vi /etc/mysql/my.cnf
[mysqld]
server-id = 임의 아이디
log_bin = mysql-bin // 로그 옵션
port = 3306
super_read_only = 0
bind-address = 0.0.0.0
vi /etc/mysql/my.cnf
[mysqld]
server-id = 임의 아이디(중복되면 안됨)
port = 3306
log_bin = mysql-bin // 로그 옵션
binlog_do_db = 복제할 DATABASE 이름
//사용자 생성
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
mysqldump -u <사용자> -p <데이터베이스> > <백업파일명>.sql;
백업파일명은 임의로 설정
// 백업 파일 생성 확인
ls -l <백업파일명>.sql // 파일 생성 확인
// Slave MySQL 쿼리문 수행
CHANGE MASTER TO MASTER_HOST='<모비우스 MySQL 서버의 IP 주소>',
MASTER_USER='<복제를 위한 사용자 이름>',
MASTER_PASSWORD='<복제를 위한 사용자 비밀번호>',
MASTER_LOG_FILE='<모비우스 MySQL 서버의 로그 파일>',
MASTER_LOG_POS=<모비우스 MySQL 서버의 로그 위치>;
cmd에서 아래 명령어 입력
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 컨테이너명
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 // 복제 상태 확인