Master-Slave 복제 구성
Master-Slave 복제 구성
목차
환경
| 서버 | IP | 역할 |
|---|---|---|
| Master | 192.168.206.4 | 원본 DB |
| Slave | 192.168.206.5 | 복제 DB |
Master 서버 (192.168.206.4)
1. 복제 사용자 생성
CREATE USER 'pista'@'192.168.206.5'
IDENTIFIED WITH mysql_native_password BY '<YOUR_PASSWORD>';
GRANT REPLICATION SLAVE ON *.* TO 'pista'@'192.168.206.5';
FLUSH PRIVILEGES;
2. 설정 편집
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
외부 사용자 허용
#bind-address = 127.0.0.1
#mysqlx-bind-address = 127.0.0.1
server-id = 1
3. 재시작
sudo systemctl restart mysql
Slave 서버 (192.168.206.5)
접속 테스트
mysql -h 192.168.206.4 -u pista -p
Master 서버 (192.168.206.4)
1.접속
sudo mysql -u admin -p
show master status\G
해당 내용 저장
*************************** 1. row ***************************
File: binlog.000013
Position: 157
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
슬레이브 확인
show grants for 'pista'@'192.168.206.5';
+-----------------------------------------------------------+
| Grants for pista@192.168.206.5 |
+-----------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `pista`@`192.168.206.5` |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
2.전체 백업
mysqldump -u admin -p --all-databases > ~/master_pista_all.sql
3.sql 파일 전송
scp ./master_pista_all.sql pista@192.168.206.5:/home/pista/master_pista_all.sql
SLAVE 서버 (192.168.206.5)
1. DB 복원
mysql -u pista -p < master_pista_all.sql
2. 슬레이브 파일 편집
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
read_only = 1
3. 재시작
sudo systemctl restart mysql
4. 복제 설정
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='192.168.206.4',
MASTER_PORT=3306,
MASTER_USER='pista',
MASTER_PASSWORD='<YOUR_PASSWORD>',
MASTER_LOG_FILE='binlog.000013',
MASTER_LOG_POS=157;
START SLAVE;
START SLAVE;
5. 슬레이브 상태 확인
SHOW SLAVE STATUS\G;
6. 상태 확인
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Master_Log_File: binlog.000013
Read_Master_Log_Pos: 157
설정시 문제가 있을 경우
STOP SLAVE;
RESET SLAVE ALL;
복제 동작 확인
Master서버 (192.168.206.4)
테이블 생성
USE testdb;
CREATE TABLE test_replication (
id INT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO test_replication VALUES (1, 'test');
SLAVE 서버 (192.168.206.5)
테이블 확인
USE pista;
SELECT * FROM test_replication;