MySQL Master DB를 백업하여 Replication Slave DB 구성하기
· Version : MySQL 5.7.5 Later
MySQL DB를 처음 구축할때 마스터DB와 슬레이브DB를 구성하는것이 아니라면 반드시 마스터 DB의 데이터를 백업하여 슬레이브DB를 구성 하여야 한다. 이때 특정 시점까지 (Point in Time)의 마스터 DB를 백업하면, 백업파일에는 백업이 완료된 시점의 바이너리 로그파일과 포지션 정보가 기록된다. 슬레이브DB에서는 마스터DB 백업 파일 이후로 발생된 데이터 변경사항을 전달받아 레플리케이션 한다.
InnoDB 스토리지 엔진은 트랜잭션을 지원하므로 특정 시점까지 백업한 후 백업 시점의 마지막 바이너리 로그 파일과 로그 포지션 정보로 마스터 DB와 슬레이브 DB를 연결하는 식으로 레플리케이션을 구성할 수 있다.
MySQL에서 데이터를 백업할 때 시점 백업(Point in Time)을 수행하는 방법에는 두 가지가 있다. 첫번째 방법은 mysqldump 명령을 사용할때 –single=transaction옵션을 사용하는 방법이고, 두번째 방법은 xtrabackup을 사용하는 것이다. 이번 포스트에서는 mysqldump만 다루도록 한다.
mysqldump를 사용한 시점 백업은 아래와 같다.
mysqldump --all-databases --master-data –single-transaction > all_databases.sql |
백업이 완료 되었으면 아래 명령을 사용하여 Slave DB에서 백업 파일을 복원한다.
mysql -uroot -p ‘xxxx’ < all_databases.sql |
슬레이브DB에 백업파일 복원이 완료 되었으면 백업파일에서 마스터DB의 로그 파일과 포지션 정보를 확인하여 레플리케이션 정보를 등록한다.
head -30 all_databases.sql |
위 정보를 바탕으로 연결할 마스터DB의 정보를 입력하고 연결을 시작한다.
--연결설정 mysql>CHANGE MASTER TO MASTER_HOST=’1.2.3.4’, MASTER_USER=’replication_user’, MASTER_PASSWORD=’replication_password’, MASTER_PORT=3306, MASTER_LOG_FILE=’mysql-bin.000108’, MASTER_LOG_POS=384679355; --연결시작 mysql> start lave |
슬레이브DB 복제가 시작되었으면 show slave status 명령을 사용하여 슬레이브DB의 복제상태를 확인할 수 있으며 “Slave I/O thread”, “Slave SQL thread” 상태가 YES로 표시되면 정상 작동이며 , NO라고 표시될 경우 비정상 작동이라고 판단할 수 있다.
[참고자료]
· mysqldump — A Database Backup Program : https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#mysqldump-transaction-options
2021-05-28 / Sungwook Kang / http://sungwookkang.com
MySQL, MysqlDump, MySQL Replication, MySQL HA, Replication, MySQL복제, 마스터 슬레이브
'MySQL, MariaDB' 카테고리의 다른 글
ProxySQL 설치 (MySQL 설치부터, 복제 구성, ProxySQL 설정까지 한번에) (0) | 2023.07.22 |
---|---|
ProxySQL 이란 무엇인가 (0) | 2023.07.20 |
MySQL InnoDB Buffer Pool Resizing Online (0) | 2020.10.21 |
MySQL MMM 구성 (Centos7 + MySQL 8.0) (1) | 2020.02.01 |
MySQL/MariaDB Single-pass, Two-pass Sort Algorithm (0) | 2019.09.21 |