• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL HA 한글메뉴얼) [close]
  • 1. Chapter 리플리케이션
  • 1. 리플리케이션 구성
    2. 리플리케이션 솔루션
    1. 백업용으로 리플리케이션 사용하기
    2. 서로 다른 스토리지 엔진을 사용하는 마스터와 슬레이브 간의 리플리케이션 구성
    3. 리플리케이션을 이용한 시스템 분산 처리 (Scale-Out)
    4. 서로 다른 데이터베이스를 서로 다른 슬레이브에 복제하기
    5. 리플리케이션 성능 개선
    6. 마스터 서버 변경하기
    7. SSL을 사용해서 리플리케이션 설정하기
    3. 리플리케이션 노트 (Notes) 및 팁 (Tips)
    4. 리플리케이션 구현
  • 2. Chapter MySQL ndb Cluster

1.2.1. 백업용으로 리플리케이션 사용하기

 

1.2.1.1. mysqldump를 사용해서 백업하기

1.2.1.2. 로우 데이터 (raw data) 백업하기

 

사용자가 마스터 데이터를 슬레이브에 복제한 후에 슬레이브에서 데이터를 복사함으로써 리플리케이션을 데이터 백업 솔루션 형태로 사용할 수 있다. 이렇게 하면, 마스터의 동작에는 상관없이 슬레이브를 잠시 중단하거나 셧다운 시킨 후에 효과적으로 백업을 진행할 수 있다.

데이터베이스 백업은 데이터만을 백업할 것인지, 아니면 데이터와 함께 리플리케이션 슬레이브 상태를 같이 백업할 것인지에 따라서 달라진다.

 

1.2.1.1. mysqldump를 사용해서 백업하기

 

데이터베이스 복사본을 만들기 위해 mysqldump를 사용하면 데이터베이스에 들어 있는 모든 데이터를 다른 MySQL 인스턴스에 임포트 (import)할 수 있는 정보 포맷으로 복사할 수 있다.

mysqldump를 사용하는 경우에는, 덤프 프로세스를 시작하기 전에 반드시 슬레이브를 종료해서 덤프 파일이 데이터의 일관성을 유지할 수 있도록 해야 한다:

1.      덤프 프로세스 요청이 들어오는 시점에 슬레이브를 멈춘다. mysqladmin을 사용해서 슬레이브가 완전히 멈추도록 한다:

 

shell> mysqladmin stop-slave

 

또한, 리플리케이션 SQL 쓰레드를 종료시켜서 릴레이 로그 파일을 종료 시킬 수 있다. 이 방법을 사용하면 바이너리 로그를 전달 시킬 수 있다. 매우 바쁘게 업무를 처리하는 리플리케이션 환경에서는 이 방법을 사용하는 것이 나중에 슬레이브를 다시 시작할 때 캐치-업 프로세스 (catch-up process)를 빠르게 진행하는 방법이 된다:

 

shell> mysql -e 'STOP SLAVE SQL_THREAD;'

 

2.      데이터베이스를 덤프하기 위한 mysqldump를 실행한다. 선택적으로 데이터베이스를 덤프하거나 또는 전체 데이터베이스를 덤프할 수 있다. 모든 데이터베이스를 덤프하기 위해서는 다음과 같이 실행한다:

 

shell> mysqldump --all-databases >fulldb.dump

 

3.      덤프가 완료된 후에는 슬레이브를 다시 시작한다:

 

shell> mysqladmin start-slave

 

1.2.1.2. 로우 데이터 (raw data) 백업하기

 

슬레이브 서버가 셧다운 되어 있는 동안에는 MySQL 리플리케이션 슬레이브에서 로우 데이터를 백업해야만 복사한 파일 간의 인테그리티 (integrity)를 확보할 수 있다. 그 이유는, MySQL 서버가 백그라운드에서 계속 동작을 하고 있다면 데이터베이스에 대한 업데이트가 지속적으로 발생하기 때문이다.

서버를 셧다운 시키고 파일을 백업하기 위해서는 다음과 같이 한다:

1.      슬레이브 MySQL 서버를 셧다운 시킨다:

 

shell> mysqladmin shutdown

 

2.      cp, tar 또는 WinZip과 같은 유틸리티를 사용해서 데이터 파일을 복사한다:

 

tar cf /tmp/dbbackup.tar ./data

 

3.      mysqld 프로세스를 다시 시작한다:

 

shell> mysqld_safe &

 

윈도우 시스템의 경우:

 

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"

 

일반적인 상황에서는 MySQL 슬레이브 서버의 데이터 폴더 전체를 백업 받아야 한다. 슬레이브가 제대로 구동을 하지 않기 때문에 슬레이브에서 데이터를 복구하고자 한다면, 데이터를 백업 받을 때 릴레이 로그 파일과 함께 슬레이브 상태 파일인 master.info 및 relay.info를 같이 백업 받아야 한다. 이 파일들은 슬레이브 데이터를 복구한 후에 다시 리플리케이션을 시작할 때 필요하게 된다.

릴레이 로그 파일은 없어졌지만 relay-log.info 파일은 가지고 있다면, 이 파일을 조사해서 SQL 쓰레드가 마스터 바이너리 로그를 어디까지 처리하였는지 알아볼 수 있다. 그런 다음에, CHANGE MASTER TO를 MASTER_LOG_FILE 및 MASTER_LOG_POS 옵션과 함께 사용해서 슬레이브가 마스터 바이너리 로그를 그 지점부터 다시 읽어 오도록 만든다.

슬레이브가 LOAD DATA INFILE 명령문을 복제하는 것과 관련이 있다면, 슬레이브가 이 목적으로 사용하는 디렉토리에 들어 있는 모든 SQL_LOAD-* 파일도 함께 백업해야 한다. 슬레이브는 인터럽트 되었던 모든 LOAD DATA INFILE 연산을 다시 시작할 때 이 파일들을 사용한다. 디렉토리 위치는 --slave-load-tmpdir 옵션으로 지정한다. 이 옵션이 지정되지 않았다면, 디렉토리는 tmpdir 시스템 변수 값이 지정하는 것이 된다.

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