Skip to main content

extrabackup을 이용한 mysql 백업 수행

소 개

  1. 서비스 구동중에 Mysqldump를 이용한 백업 수행시 table lock이 발생하기 때문에 서비스 장애 가능성 존재.
  2. 대용량 DB의 경우 raw단위로 backup을 수행하기 때문에 수십분 ~ 수시간 소요

설치 & 실행

  1. 1차 서버는 정상, 2차 서버는 추가로 구성한 서버라고 가정하고..
  2. 전체서버대상 - extra backup 패키지 설치 -  https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
  3. 1차 서버 - 백업한 데이터 저장용 디렉토리 생성
    $ mkdir /tmp/db_backup
  4. 1차 서버 - Full backup으로 백업 수행시
    $ innobackupex  ~-~-defaults-file=/etc/my.cnf ~-~-user root ~-~-password 'root암호' /tmp/db_backup/
    \\....
     innobackupex: MySQL binlog position: filename 'mysql-bin.000100', position 001
     innobackupex: completed OK!
    # /tmp/db_backup/ 하위로 년-월-일-시-분-초 디렉토리 생성됨
    # binlog 파일정보 확인 및 position정보를 가지고 있어야 함.
    


  5. 백업된 데이터를 2차서버로  복사
    $ scp -r /tmp/db_backup csadmin@1.2.3.4:/tmp/
  6. 2차서버 -  mysql 종료
    $ /etc/init.d/mysqld stop
  7. 2서버 - DB 복원시 데이터 경로에 있는 파일 삭제
    $ rm -rf /home/data/mysql/
  8. 2차 서버 - DB로그 복원
    $ innobackupex ~-~-apply-log /home/mysqlxtra/2021-08-07_01-00-03
  9. 2차 서버 - DB데이터 복원
    $ innobackupex ~-~-copy-back /home/mysqlxtra/2021-08-07_01-00-03
  10. 리플리케이션 재구성 (3-a과정에서 확인된 binlog 정보 기재하면 됨)
    mysql> stop slave;
    mysql> change master to master_log_file='mysql-bin.000100',master_log_pos=001;
    mysql> start slave;
    mysql> show slave status \G;
    ...