mysql dual replication이란 일반적인 리플리케이션과 달리 서로가 마스터이자 슬레이브로
서로 양쪽의 db를 리플리케이션 함으로 어느쪽에서든 데이터가 생성되면 서로 복제하며
한쪽 DB가 죽어도 나머지 한쪽은 정상 작동되며 죽은 DB가 다시 살아날 경우 작동이 중지되어있던 시간동안 생긴 데이터가 바로 복제된다
# replication 설정
# db 1
#my.cnf 수정
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id = 1
binlog_format = 'MIXED'
#mysql 재시작
/etc/init.d/mysqld restart
#리플리케이션에 이용할 db사용자 생성
mysql -u root -p
mysql> create user 'repli'@'서버2번 아이피 입력' identified by'비밀번호';
#mysql replication user 생성 및 master 정보 확인
mysql> grant replication slave on *.* to 'repli'@'서버2번 아이피 입력' identified by '비밀번호';
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 2516 | | | |
+------------------+----------+--------------+------------------+-------------------+
# server 2
# my.cnf 수정
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id = 2
binlog_format = 'MIXED'
# mysql 재시작
/etc/init.d/mysqld restart
#리플리케이션에 이용할 db사용자 생성
mysql -u root -p
mysql> create user 'repli2'@'서버1번 아이피 입력' identified by'비밀번호';
# mysql replication 설정, user 생성 및 master 정보 확인
mysql> stop slave;
mysql> change master to master_host='서버1번 아이피 입력', master_user='repli', master_port=3306, master_password='암호입력', master_log_file='mysql-bin.000001(위에나온 서버1 파일명)', master_log_pos=2516(위에나온 서버1 포지션번호);
mysql> start slave;
mysql> grant replication slave on *.* to 'repli2'@'서버1번 아이피 입력' identified by '암호입력';
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 2365 | | | |
+------------------+----------+--------------+------------------+-------------------+
# server 1
# mysql replication 설정
mysql -u root -p
mysql> stop slave;
mysql> change master to master_host='서버2번 아이피 입력', master_user='repli2', master_port=3306, master_password='암호입력', master_log_file='mysql-bin.000001(위에나온 서버2 파일명)', master_log_pos=2365(위에나온 서버2 포지션번호);
mysql> start slave;
확인작업으로 한쪽에서 testdb 생성
다른쪽에 정상적으로 생겼는지 조회해본후
한쪽 mysql stop 후 나머지 한쪽에서 testdb2 생성
다시 mysql start후 testdb2 생기는지 확인
출처: https://puham.tistory.com/71 [리눅스 SUPERUSER]
'Others > 데이터베이스' 카테고리의 다른 글
[MYSQL] sql_mode=only_full_group_by 에러 발생 (0) | 2020.12.22 |
---|---|
[리눅스] MySQL Dual Replication 설정 방법 (0) | 2020.09.11 |
MySQL Replication을 이용하여 DBMS 단방향 이중화하기 (0) | 2020.08.04 |
MSSQL 테이블정의서 그냥 후다닥 만들때 사용하면 유용한 Query (0) | 2020.07.30 |
[Ubuntu] 우분투 서버(16.04)에 MySQL(5.7) 설치 (0) | 2020.06.23 |