728x90
반응형
Database Replication 개념
Database Replication 구현
Database Replication을 진행하기에 앞서 준비해야할 것들이 있습니다.
먼저 VirtualBox를 설치하고 ubuntu-20.04.4-desktop-amd64.iso (이미지 파일) 을 다운받습니다.
그리고 Master PC와 Slave PC를 구성합니다. (아래 설명 참조)
Virtual Box에서 Ubuntu PC를 구성하는 방법은 아래를 참조하였습니다.
Virtual Box에 Ubuntu가 올라갔다면 Ubuntu 내부 설정을 해야합니다.
그 이후에 MySQL을 설치하겠습니다.
Ubuntu 초기 설정과 MySQL 설치
1. Ubuntu Terminal을 열고 패키지에 대한 업데이트와 업그레이드를 진행합니다. (조금 시간이 소요됩니다.)
sudo apt-get update // 사용가능한 패키지들과 버전 리스트를 업데이트 합니다.
sudo apt-get upgrade // 현재 우분투에 있는 패키지들을 최신 버전으로 업그레이드 합니다.
2. 네트워크 툴을 설치합니다. (ifconfig 등등)
sudo apt-get install net-tools
3. MySQL 설치
sudo apt-get install mysql-server
4. MySQL 잘 설치되었는지 확인
mysql -V // 버전 확인을 통해 잘 설치되었는지 확인합니다.
DB Replication을 위한 준비
1. MySQL 설정 파일 찾기 ( /etc/mysql/mysql.conf.d/mysqld.cnf )
2. master(=source) PC의 MySQL 설정과 slave(=replica) PC의 MySQL 설정
GTID는 Global Transaction IDentifier 의 약자로 MySQL 데이터베이스에서 커밋되는 각 트랜잭션과 함께 생성되고 트랜잭션에 연결되는 고유한 식별자 입니다. GTID 정보만으로 master와 slave 사이에 일관성 확인이 수행됩니다.
트랜잭션이 커밋되면 GTID를 사용하여 복제하기 위한 설정을 위에서 하였습니다. gtid_mode = ON, enforce_gtid_consistency = ON 이 두가지 관련 파라미터를 설정 하였습니다.
server_id는 master는 1 slave는 2로 설정해주었습니다. server_id는 중복되지 않도록 설정만 하면 됩니다.
relay_log 는 slave관련 로그가 저장될 파일명을 설정해주었습니다.
read_only 는 1 로 설정해주어 읽기만 가능하도록 설정하였습니다.
log_slvae_updates는 ON으로 설정해주어 slave 자체에도 binlog를 저장하여 추후에 master 서버를 대신해야할 상황을 대비합니다.
replicate-do-db='repl_db' 를 설정해주어서 복제할 DB의 이름을 설정해주었습니다.
※ MySQL5.6부터는 [replicate-do-db] 설정을 넣지 않아도 모든 DB가 Replication 자동으로 반영됩니다.
MySQL 서버 재시작
1. 서버 재시작하고 MySQL 실행
sudo service mysql restart //mysql 재시작
sudo mysql //mysql 실행
Database Replication Test 진행
1. 네트워크 설정 변경 [virtual Box -> 설정 -> 네트워크]
2. mater DB에서 Replication을 수행 할 사용자를 생성합니다.
[Master Database]
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_user_password';
GRANT REPLICATION SLAVE ON *.* 'repl_user'@'%';
repl_user와 repl_user_password는 변경가능합니다.
그리고 Mysql의 password 정책이 Low가 아니라면 Error가 발생합니다.
password 정책을 변경하는 명령어는 SET GLOBAL validate_password.policy=LOW; 입니다.
또한 %는 모든 IP를 허용한다는 의미인데 slave DB의 IP주소를 입력해주어 Slave PC만 접속하도록 할 수 있습니다.
3. slave DB에 Replication을 수행하기 위한 설정을 합니다. 아래의 SOURCE는 MASTER를 의미합니다.
[Slave Database]
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='서버 ip 주소', // master pc 에서 ifconfig 를 통해 ipv4 주소를 찾아서 입력하면 됩니다.
SOURCE_PORT=3306,
SOURCE_USER='repl_user',
SOURCE_PASSWORD='repl_user_password',
SOURCE_AUTO_POSITION=1,
GET_SOURCE_PUBLIC_KEY=1;
Slave PC Replication 설정 잘 되었는지 확인하고 Replication 시작
[Slave Database]
SHOW REPLICA STATUS \G;
[Slave Database]
start replica; // Replication 진행
Master PC 에서 Replication 확인
SHOW PROCESSLIST \G;
이렇게 DB Replication을 구현해보았습니다.
이 상태에서 Master DB에서 데이터베이스를 만들면 Slave DB에 자동으로 반영이 됩니다.
또한 만든 데이터베이스에 테이블을 추가하거나 데이터가 추가되면 그 또한 자동으로 반영이 됩니다.
728x90
반응형
'Backend > Relational Databases' 카테고리의 다른 글
[Relational Databases] Datasource Routing (0) | 2022.10.25 |
---|---|
[Relational Databases] DB Index 설정 (2) | 2022.10.12 |
[Relational Databases] MHA 개념 (2) | 2022.08.10 |
[Relational Databases] Database Replication 개념 (0) | 2022.08.10 |