본문 바로가기
Dev/MySQL

3. XtraBackup Master-Slave 원격 백업

by 흰바다제비 2022. 7. 2.
728x90

2022.06.29 - [개발/MySQL] - 2. XtraBackup 백업과 복구, 그리고 옵션

 

2. XtraBackup 백업과 복구

2022.06.26 - [개발/MySQL] - 1. XtraBackup 개요와 설치 1. XtraBackup 개요와 설치 XtraBackup은 Percona가 무료로 제공하는 오픈소스 백업 솔루션이다. 데이터 파일을 통째로 특정 디렉토리에 복사하는 물리적..

dev-kwon.tistory.com

 

 

MASTER-SLAVE 구조

xtrabackup_info / xtrabackup_binlog_info 파일에 백업받은 시점의 binlog file과 position 정보가 저장된다.

 

추가적으로

--slave-info 옵션으로 해당 서버가 바라보는 master의 binlog file과 position 정보를 알 수 있다.

옵션 사용시 백업 경로에 xtrabackup_slave_info 파일이 생성되며, 해당 파일에 정보가 들어있다.

이 정보를 이용하여 새로운 replication을 구성할 수 있고, binlog 복구가 가능하다.

+ SLAVE 에서 백업 받는 경우 항상 ACTIVE MASTER 를 바라보기 때문에 백업받는데 지장이 없다.

 

옵션 사용 예시

innobackupex --defaults-file=/etc/mysql_rion_testdbm/my.cnf --user=root --password="1234" --databases=test --slave-info /tmp/test/

원격 백업

공개키를 생성하면 ssh 접근시 비밀번호 입력 없이 바로 원격 백업 실행이 가능하다.

공개키가 없을 시, 로그 파일 스캔이 진행되는데 이때 그냥 비밀번호를 입력해주면 백업이 시작된다.

혹은 sshpass 를 이용하여 비밀번호 입력 없이 원격 백업을 받을 수 있다.

 

  • 기본 명령어
innobackupex --user=root --password="password" --stream=xbstream /backup/path | ssh -o StrictHostKeyChecking=no root@host "/usr/local/xtrabackup/bin/xbstream -x -C /backup/path"
  • 예시
innobackupex --defaults-file=/etc/mysql_testdb/my.cnf --user=root --password="1234" --databases=test --stream=xbstream /tmp/test | ssh -o StrictHostKeyChecking=no root@192.168.3.21 "/usr/local/xtrabackup/bin/xbstream -x -C /tmp/test/"

 

 

  • MASTER-SLAVE 에서 원격 백업
  1. SLAVE 서버에서 MASTER 받아오기
cd /backup/path
ssh -o StrictHostKeyChecking=no root@192.168.3.21 \
"/usr/local/xtrabackup/bin/innobackupex \
--defaults-file=/etc/mysql_testdb/my.cnf \
--host="localhost" \
--user="root" \
--password="1234" \
--databases=test \
--stream=xbstream \
/tmp/test" 2> innobackupex.log \
| /usr/local/xtrabackup/bin/xbstream -x 2> xbstream.log

2. MASTER 서버에서 SLAVE 받아오기

innobackupex \
--defaults-file=/etc/mysql_testdb/my.cnf \
--user=root \
--password="1234" \
--databases=test \
--stream=xbstream /tmp/test \
| ssh -o StrictHostKeyChecking=no root@192.168.3.21 \
"/usr/local/xtrabackup/bin/xbstream -x -C /tmp/test/"

공개키가 생성되어 있다면 비밀번호 입력 없이 바로 실행이 되고,
없다면 비밀번호 입력 후 원격 백업을 받을 수 있다.

 

  • 비밀번호 입력 없이 원격 백업

공개키를 생성하지 않고 비밀번호를 입력하지 않는 방법으로 sshpass가 있다.

yum install epel-release sshpass
cd /backup_path
sshpass -p "password" ssh -o StrictHostKeyChecking=no root@192.168.3.22 \
"/usr/local/xtrabackup/bin/innobackupex \
--defaults-file=/etc/mysql_testdb/my.cnf \
--host="localhost" \
--user="root" \
--password="1234" \
--databases=test \
--stream=xbstream \
/tmp/test" 2> innobackupex.log \
| /usr/local/xtrabackup/bin/xbstream -x 2> xbstream.log

 

 

  • 원격 백업시 전송 속도 제한
  1. pv 설치

centos 6

wget ftp://ftp.pbone.net/mirror/pkgs.repoforge.org/pv/pv-1.2.0-1.el6.rf.x86_64.rpm
rpm -ivh pv-1.2.0-1.el6.rf.x86_64.rpm

centos 7

yum install epel-release pv

 

2. pv를 이용하여 속도 제한 설정

ssh -o StrictHostKeyChecking=no root@192.168.3.22 \
"/usr/local/xtrabackup/bin/innobackupex \
--defaults-file=/etc/mysql_testdb2/my.cnf \
--host="localhost" \
--user="root" \
--password="1234" \
--databases=test \
--stream=xbstream \
/tmp/test | pv --rate-limit 30000000" 2> innobackupex.log \
| /usr/local/xtrabackup/bin/xbstream -x 2> xbstream.log 

 

 

 

 

 

slave online hot backup 구축

고객이 늘면서 1000만 row가 넘어가는 테이블이 속속들이 생기고 있다. mysql 은 100만 row만 넘어도 대용량 테이블로 보고 관련테이블을 join으로 쓰는 쿼리는 최소한의 function 사용, procedure 사용지양

dung-beetle.tistory.com

 

Xtrabackup 을 활용한 Replication 설정 - Voyager of Linux

Xtrabackup 을 이용한 Slave 추가 하기. Master 에 Slave 를 추가해야 하는데, Online 상황에서 추가하기는 쉽지가 않다. 대부분 mysldump 를 이용해서 추가 하는 방법이나, mysql data 디렉토리를 압축해서 해제

linux.systemv.pe.kr

 

728x90

'Dev > MySQL' 카테고리의 다른 글

5. XtraBackup 소요 시간 산정  (0) 2022.07.15
4. XtraBackup 상황별 스크립트  (0) 2022.07.03
2. XtraBackup 백업과 복구, 그리고 옵션  (0) 2022.06.29
1. XtraBackup 개요와 설치  (0) 2022.06.26
[MySQL] OR -> UNION  (0) 2022.06.21

댓글