Notice
Recent Posts
Recent Comments
Link
반응형
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

HeeLee_DBA

MySQL - Master-Slave 구성 본문

MySQL

MySQL - Master-Slave 구성

HeeLee_ 2022. 5. 16. 14:25
반응형

mysql master-slave 구성

mysql 다운로드(rpm으로 할경우)
mysql community bundle 다운로드 rpm centos에 설치
rpm -Uvh --forve --nodeps mysql*.rpm
초기 비밀번호 log에서 확인

방화벽 해제
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-port

Master 구성
1. my.cnf 의 mysqld 에 프로퍼티를 설정
server-id 는 각 데이터베이스 별로 고유값이어야함
[mysqld]
log-bin=mysql-bin
server-id=1

2. MySQL 을 재구동

3. 이중화를 진행할 계정을 생성
$ mysql -u root -p mysql
mysql> GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test123';
Query OK, 0 rows affected, 1 warning (5.41 sec)
 
4. 이중화 구성 시, 데이터 변경작업이 있으면 안되므로 쓰기 작업을 막아야함
   주의할 점, 이 세션이 나가게 되는 경우 LOCK 이 해제되므로 세션을 종료하여서는 안됨
Master-mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.04 sec)

5. 데이터베이스를 백업
$ mysqldump --single-transaction -u root -p --all-databases > test.sql
Enter password:
 
6. 생성된 Dump 의 지점을 확인
Master-mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysqld-bin.000011 |     1942 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

7. LOCK 을 해제
Master-mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

Slave 구성
1. my.cnf 의 mysqld 에 프로퍼티를 설정
[mysqld]
log-bin=mysql-bin
server-id=2

2. MySQL 을 재구동

3. Master 에서 백업받은 데이터베이스를 Slave 에 적용
$ mysql -u root -p < test.sql
Enter password:
 
4. Master 의 정보를 입력하여 이중화를 구성
--입력해야 할 정보
옵션
Slave-mysql> CHANGE MASTER TO MASTER_HOST='192.168.86.1',
MASTER_USER='test',
MASTER_PASSWORD='test',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=365;
Query OK, 0 rows affected, 2 warnings (0.14 sec)

5. 슬레이브 시작
Slave-mysql> START SLAVE;
Query OK, 0 rows affected (0.02 sec)
Master 에서 테이블 생성 및 데이터 적재 후 Slave 에서 조회
Master-mysql> CREATE TABLE TEST (C1 INT, C2 VARCHAR(20));
Query OK, 0 rows affected (0.31 sec)

Master-mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
Master-mysql> INSERT INTO TEST VALUES (1, 'TEST');
Query OK, 1 row affected (0.08 sec)
Master-mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

Master-mysql> SELECT * FROM TEST;
+------+------+
| C1   | C2   |
+------+------+
|    1 | TEST|
+------+------+
1 row in set (0.00 sec)

Slave-mysql> SELECT * FROM TEST;
+------+------+
| C1   | C2   |
+------+------+
|    1 | TEST|
+------+------+
1 row in set (0.00 sec)

slave start
slave stop
show slave status\G

반응형