HeeLee_DBA
MySQL - Master-Slave 구성 본문
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
'MySQL' 카테고리의 다른 글
| MySQL - InnoDBCluster 구성하기 (3) | 2024.08.30 |
|---|---|
| MySQL - MySQL8.0에서 server_id 변경하기 (0) | 2024.08.30 |
| MySQL - PMM 구성 및 Alert(Email) 기능 (0) | 2024.08.20 |
| MySQL - binlog_format (1) | 2022.11.23 |
| MySQL - (MHA)Master -Slave 동기화 깨졌을 경우 (2) | 2022.07.15 |