MariaDB 백업 및 복구 전략
1️⃣ mysqldump를 이용한 백업 및 복원 (–single-transaction)
mysqldump
는 MariaDB의 데이터베이스 백업을 위해 가장 많이 사용되는 명령어입니다. 이를 통해 전체 데이터베이스 또는 특정 테이블을 백업할 수 있습니다. --single-transaction
옵션을 사용하면 백업 도중 데이터베이스의 일관성을 유지할 수 있습니다.
mysqldump 백업 예시
mysqldump --user=root --password=yourpassword --single-transaction --all-databases > all_databases_backup.sql
이 명령어는 --single-transaction
옵션을 사용하여 트랜잭션을 사용해 백업을 진행합니다. 이 방식은 InnoDB 스토리지 엔진을 사용할 때 유용하며, 백업 중 데이터 변경이 일어나도 일관된 상태의 백업을 만들 수 있습니다.
mysqldump 복원 예시
mysql --user=root --password=yourpassword < all_databases_backup.sql
백업 파일을 복원하려면 위와 같이 mysql
명령어를 사용하여 SQL 파일을 복원합니다.
2️⃣ mariabackup (Percona XtraBackup) 활용
mariabackup
은 Percona XtraBackup을 기반으로 한 MariaDB 전용 백업 도구로, 빠르고 효율적인 백업을 제공합니다. 이 도구는 InnoDB 테이블에 대해 Hot Backup을 지원하며, 데이터베이스가 실행 중인 상태에서 백업을 만들 수 있습니다.
mariabackup 백업 예시
mariabackup --backup --target-dir=/path/to/backup --user=root --password=yourpassword
이 명령어는 MariaDB의 데이터를 백업하고 /path/to/backup
디렉토리에 저장합니다.
mariabackup 복원 예시
mariabackup --prepare --target-dir=/path/to/backup
mariabackup --copy-back --target-dir=/path/to/backup
백업 데이터를 복원하려면 먼저 --prepare
명령을 사용하여 백업 데이터를 준비하고, 이후 --copy-back
명령을 사용하여 데이터를 원래 위치에 복원합니다.
3️⃣ binlog을 이용한 Point-in-Time 복구
binlog
는 MariaDB의 이진 로그로, 데이터베이스에서 발생한 모든 변경 사항을 기록합니다. 이를 사용하여 특정 시점까지의 데이터를 복원할 수 있습니다.
binlog를 이용한 복구 예시
-
전체 백업 복원: 첫 번째로, 전체 백업을 복원합니다.
mysql --user=root --password=yourpassword < full_backup.sql
-
binlog 적용: 이후, 특정 시점까지의 변경 사항을
binlog
를 통해 복구할 수 있습니다. 아래 예시에서는binlog.000001
이라는 이진 로그 파일을 사용하여 복구를 진행합니다.mysqlbinlog /var/lib/mysql/binlog.000001 | mysql --user=root --password=yourpassword
이 명령어는 이진 로그 파일을 읽고 복구 시점을 지정하여 복원합니다.
4️⃣ 스냅샷을 활용한 데이터 복구
스냅샷은 데이터베이스 서버의 전체 파일 시스템을 일정 시점에서 캡처한 것입니다. 이를 통해 빠르게 백업을 만들고 복구할 수 있습니다. 스냅샷 복구는 MariaDB의 데이터 디렉토리(/var/lib/mysql
)를 포함한 파일 시스템의 스냅샷을 이용합니다.
스냅샷 백업 예시
파일 시스템에서 스냅샷을 찍으려면 LVM, ZFS 또는 다른 스냅샷 도구를 사용할 수 있습니다.
LVM 예시:
lvcreate --size 10G --snapshot --name mysql_snapshot /dev/vg0/lv_mariadb
이 명령어는 MariaDB 데이터가 저장된 Logical Volume에 대해 10GB 크기의 스냅샷을 생성합니다.
스냅샷 복원 예시
스냅샷 복원은 LVM이나 ZFS에서 제공하는 복원 명령어를 사용하여 빠르게 복구할 수 있습니다.
LVM 예시:
lvconvert --merge /dev/vg0/mysql_snapshot
이 명령어는 스냅샷을 원래 볼륨으로 병합하여 복원합니다.
5️⃣ Replica 서버를 이용한 고가용성 백업 전략
MariaDB의 복제(replication)를 이용하면 하나 이상의 복제본을 설정하여 실시간으로 데이터를 백업할 수 있습니다. 복제 서버는 실시간 백업 및 장애 조치를 가능하게 하며, 고가용성 환경을 구축할 수 있습니다.
Replica 서버 설정 예시
-
마스터 서버 설정: 마스터 서버에서
my.cnf
파일에 복제 관련 설정을 추가합니다.[mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = your_database
-
슬레이브 서버 설정: 슬레이브 서버에서
my.cnf
파일에 복제 관련 설정을 추가합니다.[mysqld] server-id = 2 relay-log = mysql-relay-bin
-
슬레이브에서 복제 시작: 마스터 서버에서 복제 계정을 만들고, 슬레이브 서버에서 복제를 시작합니다.
-- 마스터 서버에서 사용자 생성 CREATE USER 'replica_user'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; -- 슬레이브 서버에서 복제 시작 CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replica_user', MASTER_PASSWORD='yourpassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;
슬레이브 서버는 마스터 서버의 모든 데이터를 실시간으로 복제하여 백업을 유지합니다.
이와 같은 다양한 백업 및 복구 전략을 통해 MariaDB의 데이터 보호 및 고가용성 환경을 구축할 수 있습니다. 각 방법은 사용자의 필요와 환경에 따라 선택하여 적용할 수 있습니다.