❑ MySQL Replication 설정
1. 환경설정(MasterServer)
# vi /etc/my.cnf
[mysqld]
#log setting
log-bin = mysql-bin // 로그파일명
max_binlog_size = 100M // 로그파일크기
expire_logs_days = 7 // 로그보존주기
#Replication for master server
server-id = 3 // 서버 식별자(유니크)
binlog_do_db = test1 // 리플리케이션DB명(생략시엔 전체DB를 리플리케이션함)
binlog_do_db = test2 // 여러 개의 DB일경우, 계속 추가
2. mysql 재가동(MasterServer)
# mysqladmin -u root -p shutdown
# mysqld_safe &
3. 유저추가(MasterServer)
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'username'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
4. 데이터 백업(MasterServer)
mysql> FLUSH TABLES WITH READ LOCK; // DB Write 금지
# mysqldump -u root -p [DB명] >BackupData.sql
※ 리플리케이션대상 DB를 백업함
mysql> SHOW MASTER STATUS;
+--------------------+---------+----------------+----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+---------+----------------+----------------------+
| mysql-bin.000012| 2074 | | |
+--------------------+---------+----------------+----------------------+
1 row in set (0.00 sec)
mysql> UNLOCK TABLES; // DB Write 금지해제
5. 데이터 복사(SlaveServer)
# mysql -u root -p [DB명] < BackupData.sql
6.환경설정(SlaveServer)
# vi /etc/my.cnf
[mysqld]
#Replication for master server
server-id = 4 // 서버 식별자(유니크)
replicate-do-db = test1 // 리플리케이션DB명(생략시엔 전체DB를 리플리케이션함)
replicate-do-db = test2 // 여러 개의 DB일경우, 계속 추가
7.mysql 재가동(SlaveServer)
# mysqladmin -u root -p shutdown
# mysqld_safe &
8. 마스터접속설정(SlaveServer)
mysql> CHANGE MASTER TO
-> MASTER_HOST='MasterServerIP',
-> MASTER_USER='username', // Master DB에서 Grant로 설정했던 ID
-> MASTER_PASSWORD='password',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='MasterDB의 Status에 기록된 파일명',
-> MASTER_LOG_POS=MasterDB의 Status에 기록된 Position;"
9.리플리케이션시작
mysql> START slave;
10.에러 유무 확인(MasterServer)
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000013
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
11.에러 유무 확인(SlaverServer)
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.3
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 107
Relay_Log_File: SlaveDB1-relay-bin.000006
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
・・・・・・・
・・・・・・・
Master_Server_Id: 3
1 row in set (0.00 sec)
❑ MySQL Replication 종류
1.Single Master Replication
2.Chained Master Replication
※ Chained Master Replication경우, 3번항목부터 11번항목까지 SlaveDB3과 SlaveDB4에서 설정할 필요가 있다. 이 때, Slave이자 Master가 되는 SlaveDB3에는 반드시 log-save-update옵션이 설정되어 있어야 한다.
(log-save-update 옵션이 설정되어 있지 않을 경우, SlaveDB4가 갱신되지 않는다.)
※ 장애발생 시, 특정 Slave를 Master(Master전용)로 변경하는 경우, log-save-update 옵션이 설정되어 있어선 안된다. 설정되어 있는 상태에서 Slave에서 Master로 변경하게 되면 다른 서버(변경후의 Slave)에 이전 Master에서 받았던 업데이트를 다시 하게 된다.
※ Backup용 Slave가 존재하면 다음과 같은 명령어로 온라인백업이 가능하다.
Backup용 Slave서버에서 백업실시
# mysqldump -u user -p --delete-master-logs > xxxxxx.sql
(Backup이 진행되는 동안 락으로 인해 Backup용 Slave서버에 데이터 입력이 안됨)
출처 : http://juhyunsik.blogspot.kr/2012/05/mysql-replication.html
'# DataBase > Mysql(MariaDB)' 카테고리의 다른 글
mysql select query 결과 파일 저장 (0) | 2015.08.16 |
---|---|
mysql dump 옵션정리 (0) | 2015.08.16 |
mysql db 다중 테이블 조인 (0) | 2015.08.16 |
[error]cmake 설치시 could not find curses문제 (0) | 2015.08.16 |
FATAL ERROR: Could not find ./bin/my_print_defaults' (0) | 2015.08.16 |
안녕하세요. 이곳은 IT위주의 잡다한 정보를 올려두는 개인 블로그입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!