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;
 - 간단하게 설명하자면 replication slave 형태의 계정을 생성해주고 DB에 적용한다.

   2.2  기존 데이터 백업 - Master DB
mysql> flush tables with read lock;                #DB Write를 하지 않는다면 하지 않아도 된다.

#mysqldump -uroot -p [DB명] > xxxxxx.sql
# 백업(dump)를 했다면 Slave DB로 이동시켜 준다.

mysql> unlock tables;
 - Write 기능을 하지 못하도록 방어 후 dump한다라는 내용이다.

   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 이름과 일치하게 입력
* Master와 Slave DB를 재시작 해준다. (재시작 명령 : service mysqld restart)


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

+ Recent posts