• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    1. InnoDB 및 memcached 조합의 장점
    2. InnoDB 및 memcached의 통합 아키텍처
    3. InnoDB Memcached 플러그인의 개요
    4. InnoDB memcached 플러그인의 보안 고려 사항
    5. InnoDB memcached 인터페이스용 응용 프로그램 만들기
    6. 복제에서 InnoDB memcached 플러그인 사용
    7. InnoDB memcached 플러그인 내부 구조
    8. InnoDB memcached 플러그인 문제 해결
    19. InnoDB 문제 해결
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.18.6 복제에서 InnoDB memcached 플러그인 사용

InnoDB memcached 데몬 플러그인은 MySQL 바이너리 로그 를 지원하고 있기 때문에 memcached 인터페이스를 통해 마스터 서버 에 수행 한 업데이트는 백업 읽기 집약적 워크로드의 균형 확보 및 고 가용성을 위해 복제 할 수 있습니다 . 모든 memcached 명령은 바이너리 로깅에 지원합니다.

슬레이브 서버 에서 InnoDB memcached 플러그인을 설치 할 필요가 없습니다. 이 구성의 가장 큰 장점은 마스터에서 쓰기 처리량의 증가입니다. 복제 메커니즘의 속도는 영향을받지 않습니다.

다음 섹션에서는 바이너리 로그 기능을 사용하여 InnoDB memcached 플러그인 MySQL 복제와 함께 사용하는 방법을 보여줍니다. 섹션 14.18.3 "InnoDB Memcached 플러그인 개요" 에 기재되어있는 기본 설정이 이미 실행되고있는 것을 전제로하고 있습니다.

innodb_api_enable_binlog에 따르면 InnoDB Memcached 바이너리 로그 활성화 :

  • InnoDB memcached 플러그인을 MySQL 바이너리 로그 와 함께 사용하려면 마스터 서버 에서 innodb_api_enable_binlog 구성 옵션을 사용합니다. 이 옵션은 서버 부팅시에만 설정할 수 있습니다. 또한 --log-bin 옵션을 사용하여 마스터 서버에서 MySQL 바이너리 로그를 활성화해야합니다. 이 옵션을 my.cnf 등의 서버 구성 파일에 추가하거나 mysqld 명령 줄에 추가 할 수 있습니다.

     mysqld ... --log-bin --innodb_api_enable_binlog = 1
    
  • 다음은 섹션 17.1.1 "복제 설정 방법" 에 설명 된대로 마스터 서버와 슬레이브 서버를 구성합니다.

  • mysqldump를 사용하여 마스터 데이터 스냅 샷을 생성하고이를 슬레이브 서버에 동기화합니다.

     master shell : mysqldump --all-databases --lock-all-tables> dbdump.db
     slave shell : mysql <dbdump.db
    
    
  • 마스터 서버에서 show master status 를 실행하여 마스터 바이너리 로그 좌표를 가져옵니다.

     mysql> show master status;
    
  • 슬레이브 서버에서 change master to 문을 사용하여 위의 좌표에서 슬레이브 서버를 설치합니다.

     mysql> CHANGE MASTER TO
            MASTER_HOST = 'localhost',
            MASTER_USER = 'root'
            MASTER_PASSWORD = ''
            MASTER_PORT = 13000,
            MASTER_LOG_FILE = '0.000001,
            MASTER_LOG_POS = 114;
    
    
  • 다음 슬레이브를 시작합니다.

     mysql> start slave;
    
    

    다음과 같은 출력이 오류 로그에서 출력되는 경우, 슬레이브는 복제가 준비되어 있습니다.

     111002 18:47:15 [Note] Slave I / O thread : connected to master 'root @ localhost : 13000'
     replication started in log '0.000001'at position 114
    

memcached telnet 인터페이스에 의한 테스트

위의 복제 설정을 갖춘 서버를 테스트하려면 memcached telnet 인터페이스를 사용하며 SQL을 사용하여 마스터 서버와 슬레이브 서버에 쿼리를 실행하여 결과를 확인합니다.

여기에서 구성 설정 SQL에서 memcached에 의해 사용되는 test 데이터베이스에 하나의 샘플 테이블 demo_test 가 생성됩니다. 이 기본 테이블을 데모 용으로 사용합니다.

  • set 을 사용하여 키 test1 값 t1 및 플래그 10 레코드를 삽입합니다.

     telnet 127.0.0.1 11211
     Trying 127.0.0.1 ...
     Connected to 127.0.0.1.
     Escape character is '^]'.
     set test1 10 0 2
     t1
     STORED
    

마스터 서버에서 행이 삽입 된 것을 확인할 수 있습니다. c1 은 키에 매핑되고 c2 값에 매핑되고 c3 는 플래그, c4 는 cas 값 및 c5 는 기간입니다.

 mysql> select * from test.demo_test;

c1 c2 c3 c4 c5
test1 t1 10 2 0
 1 row in set (0.00 sec)

슬레이브 서버에서 복제가 같은 레코드가 삽입 된 것을 알 수 있습니다.

 mysql> select * from test.demo_test;

c1 c2 c3 c4 c5
test1 t1 10 2 0
 1 row in set (0.00 sec)
  • set 명령을 사용하여 키 test1 을 새로운 값 new 업데이트합니다.

 Connected to 127.0.0.1.
 Escape character is '^]'.
 set test1 10 0 3
 new
 STORED

슬레이브 서버에서 업데이트가 복제됩니다 ( cas 값도 업데이트됩니다).

 mysql> select * from test.demo_test;

c1 c2 c3 c4 c5
test1 new 10 3 0
 1 row in set (0.00 sec)
  • delete 명령에서 레코드를 삭제합니다.

 Connected to 127.0.0.1.
 Escape character is '^]'.
 delete test1
 DELETED

삭제가 슬레이브에 복제되면 슬레이브의 레코드도 삭제됩니다.

 mysql> select * from test.demo_test;
 Empty set (0.00 sec)

  • flush_all 명령으로 테이블을 삭제합니다.

먼저 telnet으로 마스터 서버에 연결하여 두 개의 레코드를 삽입합니다.

 Connected to 127.0.0.1.
 Escape character is '^]'
 set test2 10 0 5
 again
 STORED
 set test3 10 0 6
 again1
 STORED

슬레이브 서버에서 이러한 두 개의 레코드가 복제되는 것을 확인합니다.

 mysql> select * from test.demo_test;

c1 c2 c3 c4 c5
test2 again 10 5 0
test3 again1 10 6 0
 2 rows in set (0.00 sec)

telnet 인터페이스에서 flush_all 를 호출하여 테이블을 삭제합니다.

 Connected to 127.0.0.1.
 Escape character is '^]'.
 flush_all
 OK

다음 삭제 작업이 슬레이브 서버에 복제 된 것을 확인합니다.

 mysql> select * from test.demo_test;
 Empty set (0.00 sec)

모든 memcached 명령은 복제에서 지원됩니다.

InnoDB Memcached Binlog 고려 사항

Binlog 형식 :

  • 대부분의 memcached 조작 (삽입, 삭제, 업데이트에 유사한) DML 문에 매핑됩니다. MySQL Server에 의해 실제로 처리되는 SQL 문이 없기 때문에 memcached 명령 ( flush_all 제외) 행 기반 복제 (RBR) 로깅을 사용합니다. 이것은 서버의 모든 binlog_format 설정과는 무관합니다.

  • memcached flush_all 명령은 TRUNCATE TABLE 명령에 매핑됩니다. DDL 명령 명령문 기반 로깅 만 사용할 수 있기 때문에이 flush_all 명령은 TRUNCATE TABLE 문을 보냄으로써 복제됩니다.

트랜잭션 :

  • 트랜잭션 의 개념은 지금까지 일반적으로 memcached 응용 프로그램의 일부를 이루는 것은 없습니다. 여기에서는 daemon_memcached_r_batch_size 및 daemon_memcached_w_batch_size 를 사용하여 성능을 고려한 읽기 및 쓰기 트랜잭션 일괄 처리 크기를 제어합니다. 이러한 설정은 복제에 영향을주지 않고 기초 테이블에서 모든 SQL 조작은 실행 후 즉시 복제됩니다.

  • daemon_memcached_w_batch_size 의 기본값은 1이기 때문에 memcached 쓰기 작업이 즉시 커밋됩니다. 이 기본 설정은 마스터 서버와 슬레이브 서버에 표시되는 데이터의 불일치를 방지하기 위해 어느 정도의 성능 오버 헤드를 발생시킵니다. 복제 된 레코드는 항상 슬레이브 서버에서 즉시 사용할 수 있습니다. daemon_memcached_w_batch_size 를 1보다 크게 설정하면 memcached 인터페이스를 통해 삽입 또는 업데이트 된 레코드는 마스터 서버에 즉시 표시되지 않습니다. 이러한 레코드가 커밋되기 전에 레코드를 마스터 서버에 표시하려면 set transaction isolation level read uncommitted 를 발행합니다.


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