mysqlReplicationSetting

Mysql_Replication_설정

Mysql Replication는?

Master 는 insert/update/delete
Slave 는 select로 DB 서버 2대로 각자 역활을 분담하므로써 이중화 시켜 DB 서버 부하를 최소화 하는 역활

호환성을 위해서는 Master, Slave Mysql 버전을 동일하게 맞추는것이 좋고 만약 다르다면

Slave 서버가 상위 버전이어야 한다. (이번 블로그 소개 경우 Mysql 5.7.25 버전입니다.)

Replication 가동시 Master 서버 -> Slave 서버 순으로 가동하자.

1. DB 서버 계정 정보 및 Mysql 설치

1.PNG

Master 서버

IP : 52.78.208.231

Database : syh8088

id : syh8088

pw : 1234

Slave 서버

IP : 13.209.40.109

Database : syh8088

id : syh8088

pw : 1234

1
2
sudo apt update // apt 최신 버전 업데이트 하자!
apt-get install mysql-server (Master Slave 서버 각각 설치해주자)

2. MySQL DATABASE 생성, 계정 생성 및 권한 설정

1
2
3
4
5
// Master Slave 서버 각각 똑같이 적용하자 (각 서버 마다 ID를 다르게 주고 싶으면 다르게 설정하자)
mysql -u root -p // mysql 접속
mysql> create database syh8088 default character set utf8; // database 생성
mysql> create user syh8088@'%' identified by '1234'; // 계정생성
mysql> grant all privileges on repl_db.* to syh8088@'%' identified by '1234'; // 권한부여

3. replication 계정 생성

1
mysql> GRANT REPLICATION SLAVE ON *.* TO '아이디'@'%' IDENTIFIED BY '비밀번호';

4. TABLE 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Master Slave 서버 각각 똑같이 적용하자
mysql> CREATE TABLE `topic` (
`id` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
`description` text NOT NULL,
`author` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> INSERT INTO `topic` (`id`, `title`, `description`, `author`) VALUES
(1, '555', 'Computer language for web.', 'egoing'),
(2, 'NPM', 'Package manager', 'leezche'),
(3, '제목', '내용', 'syh'),
(23, '546', '346', '346'),
(24, 'r5', 'r', 'rtrt'),
(25, '5', '5656', '56'),
(26, 'ㅛ셔', 'ㅛ셔', '쇼56'),
(27, '45', '45', '45y');

5. MySQL 설정(my.cnf)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Master(my.cnf)
vi /etc/mysql/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=1
binlog_do_db=syh8088
bind-address = 0.0.0.0

service mysqld restart

##############################

// Slave(my.cnf)
vi /etc/mysql/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=2
replicate-do-db=syh8088
bind-address = 0.0.0.0

service mysqld restart

6. Master SHOW MASTER STATUS 상태 확인하기

1
mysql> SHOW MASTER STATUS

2.PNG

7. Slave Replication 설정하기

1
2
3
4
5
6
먼저 telnet 52.78.208.231 3306 통해 Mater 서버 DB하고 통신이 되는지 확인하자

mysql> stop slave;
mysql> change master to master_host='{마스터 IP}', master_user='{아이디}', master_port=3306, master_password='{비밀번호}', master_log_file='mysql-bin.000012', master_log_pos=154;
mysql> start slave;
mysql> SHOW SLAVE STATUS\G

3.PNG

8. TEST 해보기

1
2
3
4
5
6
//Master 서버에서 
mysql> UPDATE topic SET title = 'test입니다.' WHERE id = 1


//Slave 서버 확인해보기
mysql> SELECT * FROM topic;

4.PNG


Copyright 2020- syh8088. 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

💰

×

Help us with donation