1. 테스트에 사용된 소프트웨어 사양
- CentOS 5.6
- MySQL 5.0.xx
2. 사전 준비 및 주의 사항
- master DB에 데이터가 존재하는 경우에는 Write(insert,update,delete 등) 동작을 하지 않는 상태에서 진행한다.
2.1 계정생성 - Master DB
# mysql -u root -p Enter password: [암호 입력] mysql> grant replication slave on *.* to -> 'user_name'@'user_host' identified by 'user_password'; mysql> flush privileges; |
2.2 기존 데이터 백업 - Master DB
mysql> flush tables with read lock; #DB Write를 하지 않는다면 하지 않아도 된다. #mysqldump -uroot -p [DB명] > xxxxxx.sql # 백업(dump)를 했다면 Slave DB로 이동시켜 준다. mysql> unlock tables; |
2.3 데이터 적용 - Slave DB
#mysql -uroot -p < xxxxxx.sql |
* Master와 Slave DB가 모두 일치하다면 이제 cnf설정 단계로 넘어간다.
* Master와 Slave DB는 Replication이 다 끝날 때까지 Write(insert, update, delete)기능은 사용하지 않기를 바란다.
3. my.cnf 설정하기
3.1 Master DB 설정
[mysqld] log-bin=mysql-bin server-id=1 #1~(2^32)-1 내의 숫자 중 아무거나 설정 가능. binlog_do_db= [Replication DB 명] #여러 개의 DB인 경우 계속 추가하면 된다. |
3.2 Slave DB 설정
[mysqld] log-bin=mysql-bin log-slave-update #로그 업데이트 server-id=2 #1~(2^32)-1 내의 숫자 중 아무거나 설정 가능. master-host = 127.0.0.1 #마스터 서버의 IP master-port = 3306 # 마스터 mysql 포트 번호 master-user = foxlime #마스터에서 만들어준 접속 계정명 master-password = xxxxxx #계정 비밀번호 master-connect-retry = 60 replicate-do-db = [Replication DB 명] #master DB 설정에 입력해준 binlog_do_db 이름과 일치하게 입력 |
4. 정보 확인 및 정보 입력하기
4.1 Master DB
mysql> show master status; +------------------+----------+------------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+------------------------+------------------+ | mysql-bin.000001 | 90 | TestData | | +------------------+----------+------------------------+------------------+ 1 row in set (0.00 sec) File = MASTER_LOG_FILE Position = MASTER_LOG_POS |
4.2 Slave DB
mysql> stop slave; mysql> CHANGE MASTER TO -> MASTER_LOG_FILE= File 컬럼, -> MASTER_LOG_POS= Position 컬럼; |
4.3 최종 정보 확인
- 정보를 확인은 필수이다. 잘 적용이 되었는지 이상없이 동작이 가능한지 여부를 알 수 있기 때문이다.
* Master에서 명령 mysql> show master status; * Slave에서 명령 mysql> show slave status\G; # 보기 좋게 정리해서 나온다. mysql> start slave; ##################warning 또는 error만 없다면 정상 동작한다는 의미이다. mysql> show slave status\G; - 정보 확인 중에 [Slave_IO_State: Waiting for master to send event]를 제외한 문구는 오류이다. * 주의 : master에서 port또는 IP개방을 해주지 않는 경우가 종종 발생하므로 미리 확인이 필요하다. |
'Databases > MYSQL' 카테고리의 다른 글
mysql - 인덱스 정보 정리 (2) | 2012.10.05 |
---|---|
mysql - BinLog 파일 Text 변환 (0) | 2012.02.27 |
mysql - my.cnf 설정할 때 참고 (0) | 2012.02.23 |
mysql - HeidiSQL Tool 소개 (0) | 2012.01.20 |
mysql - Replication 정의 (0) | 2012.01.16 |