• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL HA 한글메뉴얼) [close]
  • 1. Chapter 리플리케이션
  • 1. 리플리케이션 구성
    1. 리플리케이션 설정 방법
    2. 리플리케이션 포맷
    3. 리플리케이션 옵션과 변수
    4. 일반적인 리플리케이션 관리 업무
    2. 리플리케이션 솔루션
    3. 리플리케이션 노트 (Notes) 및 팁 (Tips)
    4. 리플리케이션 구현
  • 2. Chapter MySQL ndb Cluster

1.1.4. 일반적인 리플리케이션 관리 업무

 

1.1.4.1. 리플리케이션 상태 검사

1.1.4.2. 슬레이브에서 리플리케이션 잠시 중단시키기

 

일단 리플리케이션을 구동 시킨 후에는 추가적인 관리 업무 없이 지속적으로 운영을 할 수 있어야 한다. 리플리케이션 구성 환경에 따라서 각 슬레이브의 상태를 주기적으로 검사하도록 한다.

 

1.1.4.1. 리플리케이션 상태 검사

 

리플리케이션을 관리하는 업무 중에 가장 일반적인 것은 슬레이브와 마스터 간에 정상적으로 리플리케이션이 동작하고 있는지를 확인하는 것이다.

리플리케이션 상태를 확인하기 위해서 각 슬레이브에서 가장 많이 사용해야 하는 명령어는 SHOW SLAVE STATUS이다:

 

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: master10

                Master_User: root

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: mysql-bin.000004

        Read_Master_Log_Pos: 931

             Relay_Log_File: slave1-relay-bin.000056

              Relay_Log_Pos: 950

      Relay_Master_Log_File: mysql-bin.000004

           Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

            Replicate_Do_DB:

        Replicate_Ignore_DB:

         Replicate_Do_Table:

     Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                 Last_Errno: 0

                 Last_Error:

               Skip_Counter: 0

        Exec_Master_Log_Pos: 931

            Relay_Log_Space: 1365

            Until_Condition: None

             Until_Log_File:

              Until_Log_Pos: 0

         Master_SSL_Allowed: No

         Master_SSL_CA_File:

         Master_SSL_CA_Path:

            Master_SSL_Cert:

          Master_SSL_Cipher:

             Master_SSL_Key:

      Seconds_Behind_Master: 0

1 row in set (0.01 sec)

 

상태 레포트에서 조사해야 할 주요 필드는 다음과 같다:

  • Slave_IO_State — 슬레이브의 현재 상태를 나타낸다.
  • Slave_IO_Running — 마스터 바이너리 로그를 읽기 위한 I/O 쓰레드가 구동 중에 있는지를 표시한다.
  • Slave_SQL_Running — 릴레이 로그에 있는 이벤트를 처리하기 위한 SQL 쓰레드가 구동 중에 있는지를 표시한다.
  • Last_Error — 릴레이 로그를 처리할 때 등록된 마지막 에러를 보여준다. 정상적이라면, 이것은 비어 있어야 한다.
  • Seconds_Behind_Master — 슬레이브 SQL 쓰레드가 마스터 바이너리 로그를 백그라운드에서 처리하는 시간 (초)을 나타낸다.

마스터 서버에서 구동 중에 있는 프로세스 리스트를 조사해서 슬레이브 상태를 알아볼 수 있다. 슬레이브는 Binlog Dump 명령어를 실행한다:

 

mysql> SHOW PROCESSLIST \G;

*************************** 4. row ***************************

     Id: 10

   User: root

   Host: slave1:58371

     db: NULL

Command: Binlog Dump

   Time: 777

  State: Has sent all binlog to slave; waiting for binlog to be updated

   Info: NULL

 

리플리케이션은 슬레이브가 대부분 처리하기 때문에, 이 리포트를 통해서는 그리 많은 정보를 얻을 수 없다.

--report-host 옵션을 사용한다면, SHOW SLAVE HOSTS 명령문은 연결되어 있는 슬레이브의 기본 정보를 보여준다:

 

mysql> SHOW SLAVE HOSTS;

+-----------+--------+------+-------------------+-----------+

| Server_id | Host   | Port | Rpl_recovery_rank | Master_id |

+-----------+--------+------+-------------------+-----------+

|        10 | slave1 | 3306 |                 0 |         1 |

+-----------+--------+------+-------------------+-----------+

1 row in set (0.00 sec)

 

결과 값에는 슬레이브 서버의 ID, --report-host 옵션 값, 연결 포트, 마스터 ID 그리고 전달받는 바이너리 로그 업데이트에 대한 슬레이브 우선권 등에 대한 정보가 포함된다.

 

1.1.4.2. 슬레이브에서 리플리케이션 잠시 중단시키기

 

STOP SLAVE 및 START SLAVE 명령어를 슬레이브에서 실행하면 명령문에 대한 리플리케이션을 시작/종료 시킬 수 있다.

마스터에서 읽어 온 바이너리 로그 실행을 중지하기 위해서는 STOP SLAVE를 사용한다:

 

mysql> STOP SLAVE;

 

실행이 중단되면, 슬레이브는 마스터에서 바이너리를 더 이상 읽어오지 않고 (IO_THREAD), 아직 실행되지 않은 릴레이 로그로부터 들어오는 이벤트 처리를 중단한다 (SQL_THREAD). 쓰레드 타입을 지정하면, I/O 또는 SQL 쓰레드를 개별적으로 잠시 중지할 수 있다. 예를 들면:

 

mysql> STOP SLAVE IO_THREAD;

 

마스터에서 가져온 이벤트를 처리하기만 하는 슬레이브에서 백업 또는 다른 작업을 하고자 한다면 SQL 쓰레드를 중단하는 것이 효과적이다. 마스터는 I/O 쓰레드를 계속 읽기는 하지만 실행하지 않기 때문에, 슬레이브는 연산을 다시 시작할 때 쉽게 원 위치를 찾아가게 된다.

I/O 쓰레드 중단은 릴레이 로그가 새로운 이벤트를 전달 받지 않는 시점 이전까지는 릴레이 로그 안에 있는 명령문을 실행하도록 한다. 이 옵션은 슬레이브가 마스터에서 전달받은 이벤트를 처리할 수 있을 때까지 잠시 실행을 멈추고자 하는 경우 또는 슬레이브가 특정 포인트까지의 최신 업데이트를 가지고 있는지 확인하고자 하는 경우에 유용하다.

슬레이브를 다시 시작하기 위해서는 START SLAVE 명령문을 사용한다:

 

mysql> START SLAVE;

 

필요할 경우에는 IO_THREAD 또는 SQL_THREAD 쓰레드를 개별적으로 사용한다.

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved