'Slave'에 해당되는 글 2건

  1. 2010.08.29 [MySQL] Slave_Sql_Running = No
  2. 2010.08.29 [MySQL] Master-Slave Replication 1
Server-Side/MySQL2010. 8. 29. 21:37

Master-Slave Replication 환경에서 Master에만 있는 테이블을 변경한다던가, Slave에서 테이블을 DROP하는 작업을 하는 경우 Slave의 Replication이 중단된다.

 

이 경우 SHOW SLAVE STATUS\G 명령어를 수행하면

 

Slave_Sql_Running = No

 

라는 부분을 발견한다. 이런 경우 error를 유발한 쿼리를 skip 해줘야 한다.

 

mysql> SLAVE STOP;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> SLAVE START;


SQL_SLAVE_SKIP_COUNTER : Slave를 작동한 후 Master로부터 읽어온 쿼리 중 skip할 쿼리 수

 

 

'Server-Side > MySQL' 카테고리의 다른 글

[MySQL]Too Many Connection Error  (0) 2010.10.04
mysql 접속자 수 늘리기  (0) 2010.09.20
[MySQL] Master-Slave Replication  (1) 2010.08.29
[MySQL] index 추가, 삭제, 확인하기  (0) 2010.08.16
mysql password 변경  (0) 2010.03.12
Posted by 준피
Server-Side/MySQL2010. 8. 29. 21:26

가. Master 서버 설정

 

1. Slave 서버에서 접근할 수 있도록 권한을 준다.

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'ID'@'IP' IDENTIFIED BY 'PASSWORD';


ID : Master MySQL의 user id로 Slave의 MySQL에서 접근함

IP : Slave 서버의 IP

PASSWORD : Slave의 MySQL에서 쓰는 id의 password

 

2. Master 역할을 할 수 있는 권한 부여

 

# vi /etc/my.cnf

[mysqld]
server-id = 1
binlog-do-db = 'DB_NAME'
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
log-bin = mysql-bin


server-id : 동기화 구성에 참여한 각각의 MySQL들을 구분짓기 위한 UNIQUE ID로서 중복되면 안된다.

binlog-do-db : 실제 동기화 하려는 대상 DB의 이름. DB마다 한 라인씩 추가하면 된다.

binlog-ignore-db : 동기화 하지 않을 DB의 이름. DB마다 한 라인씩 추가하면 된다.

log-bin : 아마도 mysql의 log file 이름.

 

나. Slave 서버 설정

 

1. Slave 역할을 할 수 있는 권한 부여

 

# vi /etc/my.cnf

[mysqld]
server-id = 2
master-host = 'Master IP'
master-user = 'ID'
master-password = 'PASSWORD'
master-port = 3306
log-bin = mysql-bin

 

server-id : Master에서의 역할과 동일하게 UNIQUE ID

master-host : Master 서버의 IP

master-user : Master 서버의 MySQL에 생성했던 Replication 계정 ID

master-password : Replication 계정 ID의 비밀번호

master-port : Master 서버의 MySQL 원격 접속 포트번호 (기본: 3306)

log-bin : Master에서의 역할과 동일하게 아마도 log file 이름

 

다. 동기화 작동

 

1. Master 서버 재시작 후 MySQL에 접속

 

2. Master 서버 동작 확인

 

mysql> SHOW MASTER STATUS\G
********************** 1. row **********************
                   File : mysql-bin.000003
             Position : 98
     Binlog_Do_DB : test
Binlog_Ignore_DB : mysql, information_schema
1 row in set (0.00 sec)
mysql>

 

3. Slave 서버 재시작 후 MySQL에 접속

 

4. Slave 서버 동작 확인

 

 

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
********************** 1. row **********************
           Slave_IO_State : Waiting for master to send event (정상)
              Master_Host : IP
              Master_User : ID
               Master_Port : 3306
        Connection_Retry : 60
         Master_Log_File : mysql-bin.000003
Read_Master_Log_Pos : 98
.
.
       Slave_IO_Running : Yes (정상)
    Slave_SQL_Running : Yes (정상)
.
.
1 row in set (0.00 sec)
mysql>

 

Read_Master_Log_Pos : MASTER STATUS의 Position과 동일하다.

 

Slave_IO_State, Slave_IO_Running, Slave_SQL_Running 의 상태가 위와 같다면 정상

 

 

 

'Server-Side > MySQL' 카테고리의 다른 글

mysql 접속자 수 늘리기  (0) 2010.09.20
[MySQL] Slave_Sql_Running = No  (0) 2010.08.29
[MySQL] index 추가, 삭제, 확인하기  (0) 2010.08.16
mysql password 변경  (0) 2010.03.12
MySQL에서 인덱스 체크하기 : EXPLAIN  (0) 2009.12.11
Posted by 준피