카테고리 없음
Mysql 레플리카 설정
백봉
2024. 7. 15. 10:52
운영 서버 실시간 백업을 위한 레플리카 설정
백업 대상: MASTER, 백업 위치: SLAVE
1. MASTER에 접속할 백업 전용 계정 생성
# MASTER 서버에서 Mysql에 접속 mysql -u root -p 123!@# mysql> CREATE USER 'slave_db'@'Slave server IP' IDENTIFIED BY '패스워드'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_db'@'Slave server IP' IDENTIFIED BY '패스워드'; mysql> flush privileges;
my.cnf 편집하기
MySQL 5.5 이하
# vi /etc/my.cnf [mysql] log-bin=mysql-bin.log server-id = 1 binlog_do_db = DB명 -- Replication 진행 할 DB 명 max_binlog_size = 100M expire_logs_days = 10 binlog-ignore-db=mysql -- 바이너리 로그 제외 DB binlog-ignore-db=information_schema -- 바이너리 로그 제외 DB binlog-ignore-db=performance_schema -- 바이너리 로그 제외 DB #log_bin_trust_function_creators=1 -- function 가능하도록 설정 #binlog_format=mixed
MySQL 5.6 이상
# vi /etc/my.cnf [mysql] log-bin=mysql-bin.log server-id = 1 expire_logs_days = 10 -- 로그 보관 주기 max_binlog_size = 100M
※ MySQL 5.6부터는 [binlog_do_db] 설정을 넣지 않아도 모든 DB가 Replication 자동으로 반영됩니다.
2. Master 데이터 백업
Master DB 백업
# mysqldump -u root -p DB명 > DB명.sql - 데이터베이스를 Dump 하여 백업
Master의 Replication 정보 조회
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 120 | DB명 | | | +------------------+----------+--------------+------------------+------------------- 1 row in set (0.00 sec)
- 위 상태의 File 값과 Position 값을 기억해야 합니다.
- File:
mysql-bin.000001
- Position:
120
3. Slave 설정하기
my.cnf 편집하기
MySQL 5.5 이하
# vi /etc/my.cnf [mysql] server-id=2 -- ID의 경우 Master 에서 설정한 값과 달라야 합니다. replicate-do-db = DB명 -- Replication 진행 할 DB 명 read_only = 1 -- 읽기 전용으로 설정 (쓰기 불가능) max_binlog_size = 100M expire_logs_days = 10 -- 로그 보관 주기
MySQL 5.6 이상
# vi /etc/my.cnf [mysql] server-id = 2 read_only = 1 -- 읽기 전용으로 설정 (쓰기 불가능) max_binlog_size = 100M expire_logs_days = 10 -- 로그 보관 주기
※ MySQL 5.6부터는 [replicate-do-db] 설정을 넣지 않아도 모든 DB가 Replication 자동으로 반영됩니다.
4. Slave 설정, Master dump(백업)파일 복원 (Master / Slave 데이터 동기화)
# mysql -u root -p DB명 < DB명.sql (Master 데이터 복원) mysql> stop slave; -- slave 중지 mysql> CHANGE MASTER TO MASTER_HOST='Master Server IP', MASTER_USER='slave_db', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120; mysql> start slave; # /etc/init.d/mysqld restart (DB 재시작)
5. SLAVE DB의 오류 처리
my.ini 에 slave-skip-errors=all
show slave status
에서 발생한 오류를 넣던지, all
로 설정합니다.