2022이전/Linux
mysql 무중단으로 replication 설정하기
바로퇴장
2021. 9. 15. 18:58
#[master] 설정
vi /etc/my.cnf
```
server_id=1
log-bin=mysql-bin
```
#값 확인하기
mysql -u root -p
SHOW VARIABLES LIKE 'server_id';
#replication 계정 확인
grant replication slave, replication client on *.* to repl@'%' identified by '패스워드';
Query OK, 0 rows affected (0.000 sec)
select user, host from user;
+------+-----------+
| user | host |
+------+-----------+
| repl | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
+------+-----------+
4 rows in set (0.000 sec)
flush privileges;
Query OK, 0 rows affected (0.000 sec)
# Master 데이터 덤프 가져오기
mysqldupm -h [masterIP] -u [아이디] -p --single-transaction --master-data=2 --all-databases > masterDB.sql
#[Slave] 설정
vi /etc/my.cnf
```
[mysqld]
log_bin=mysql.bin # 추가
server-id=2 # 추가 (Slave 서버가 여러 대일 경우 각각 다른 번호 할당)
relay_log=mysql-relay-bin # 추가
log_slave_updates=1 # 추가
read_only=1 # 추가
```
mysql -u root -p < masterDB.sql
mysql -u root -p
show databases;
SHOW VARIABLES LIKE 'server_id';
# slave 설정에 필요한 값들 확인
head -30 masterDB.sql
ex>
.... 중략
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql.000001', MASTER_LOG_POS=661;
.... 중략
CHANGE MASTER TO MASTER_HOST='IP', MASTER_USER='repl', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='mysql.000001', MASTER_LOG_POS=661, MASTER_CONNECT_RETRY=10;
start slave;
show slave status\G;
--single-transaction
별도의 트랜잭션을 이용하여 DB Lock 없이 Dump를 진행합니다.
--master-data=2
생성된 Dump 파일 헤더에 Slave 서버에서 Master를 바라보게 할 때 사용할 값을 남깁니다.
--all-databases
전체 데이터베이스를 모두 Dump 합니다.