-
MySQL 데이터베이스 백업 유형
-
MySQL 데이터베이스 백업 방법은?
-
요약
데이터베이스에 점점 더 많은 데이터가 저장됨에 따라 데이터 백업은 점점 더 중요해지고 있습니다. 데이터베이스 백업은 기업이나 개인이 데이터 손실로 인해 막대한 손실을 입지 않도록 보장하는 매우 중요한 작업입니다. MySQL은 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템으로, 기업에서 널리 사용되고 있습니다. 본 문서에서는 MySQL 데이터베이스를 백업하는 방법에 대해 설명합니다.
MySQL 데이터베이스 백업 유형
데이터베이스의 크기 according 하여 사용되는 네 가지 유형의 백업이 있으며, 이는 다양한 상황에서 사용됩니다:
전체 백업
이는 대부분의 사람들이 사용하는 일반적인 방법입니다. 사용자 테이블, 시스템 테이블, 인덱스, 뷰 및 저장 프로시저와 같은 모든 데이터베이스 개체를 포함하여 전체 데이터베이스를 백업할 수 있습니다. 하지만 더 많은 시간과 공간이 소요되므로 일반적으로 일주일에 한 번 전체 백업을 수행하는 것이 권장됩니다.
트랜잭션 로그 백업
트랜잭션 로그는 데이터베이스에 대한 변경 사항을 기록하는 별도의 파일입니다. 백업은 마지막 백업 이후 데이터베이스에 이루어진 변경 사항만 복사하면 되므로 매우 짧은 시간이 소요됩니다. 데이터베이스의 안정성을 위해 트랜잭션 로그의 시간 단위 또는 그보다 더 잦은 백업을 권장합니다.
차등 백업
데이터베이스의 일부만 백업하는 또 다른 방법이며, 트랜잭션 로그를 사용하지 않고 대신 전체 데이터베이스의 새 이미지를 사용합니다. 마지막 전체 백업 이후 변경된 데이터베이스만 포함하기 때문에 원래의 전체 백업보다 작습니다. 저장 및 복구 속도가 빠른 장점이 있습니다. 매일 차등 백업을 수행하는 것이 좋습니다.
파일 백업
데이터베이스는 하드 디스크의 여러 파일로 구성될 수 있습니다. 데이터베이스가 매우 커서 하룻밤 만에 백업할 수 없다면, 파일 백업을 사용하여 매일 밤 데이터베이스의 일부분을 백업할 수 있습니다. 일반적으로 데이터베이스가 여러 개의 파일 저장소를 사용해야 할 정도로 크지 않기 때문에 이러한 유형의 백업은 그리 흔하지 않습니다.
데이터베이스의 상태에 따라 세 가지 유형으로 나눌 수 있습니다:
1. 콜드 백업
콜드 백업은 데이터베이스가 오프라인 상태에서 사용자에게 접근이 불가능할 때 데이터에 대해 수행되는 백업입니다. 백업이 데이터베이스 오프라인 상태에서 이루어지기 때문에 콜드 백업은 보통 오프라인 백업이라고 불리기도 합니다. 콜드 백업은 보통 더 적은 자원을 소비하며, 새로운 데이터를 추가할 수 없기 때문에(데이터베이스가 오프라인 상태임) 백업 프로세스가 한 번에 모든 데이터를 백업할 수 있습니다. 물론 콜드 백업은 백업 작업이 진행 중일 때 데이터베이스에 접근할 수 없다는 제한 사항이 있습니다.
2. 핫 백업
핫 백업은 데이터베이스가 온라인 상태이고 사용자가 접근할 수 있는 동안 데이터에 대해 수행되는 백업입니다. 핫 백업은 다운타임을 요구하지 않고 운영체제의 중단이 거의 없기 때문에 매우 편리한 해결책일 수 있지만, 다음과 같은 단점도 있습니다: 백업이 진행 중인 동안 백업 대상 데이터가 변경되는 경우 백업본이 데이터베이스 내 데이터의 최종 버전과 동일하지 않을 수도 있습니다.
3. 논리적 백업
논리적 백업은 소프트웨어를 사용하여 데이터베이스에서 데이터를 추출하고 결과를 파일에 기록합니다.
MySQL 데이터베이스 백업 방법은?
백업 복구 방법에 따라 MySQL에는 논리적 백업과 물리적 백업이 있습니다. 논리적 백업은 SQL 문을 백업한 후 복구 시 이를 실행하여 데이터베이스 데이터를 재현하는 방식입니다. 물리적 백업은 디스크에 저장된 것과 동일한 형식으로 데이터베이스 파일을 복사하는 방식입니다.
이 두 가지 유형의 백업에는 각각 장단점이 있습니다. 일반적으로 물리적 백업은 복구 속도가 더 빠르지만 더 많은 공간을 차지하는 반면, 논리적 백업은 속도는 느리지만 공간을 덜 차지합니다.
1. mysqldump 사용하기
Mysqldump는 MySQL에 포함된 백업 도구로, bin 디렉터리(/usr/local/mysql/bin/mysqldump)에 위치하며, innoDB 기반의 핫 백업을 지원합니다. 다만 논리적 백업이기 때문에 속도가 빠르지 않아 백업 데이터가 상대적으로 작은 시나리오에 적합합니다. Mysqldump 전체 백업과 이진 로그를 활용하면 특정 시점 복구를 수행할 수 있습니다.
MyISAM 저장 엔진의 테이블의 경우 핫 백업만 사용할 수 있습니다. 이때 데이터 쓰기를 방지해야 하므로 먼저 읽기 잠금을 추가해야 합니다. 이 시점에서 데이터베이스에 직접 진입하여 수동으로 읽기 잠금을 걸 수도 있지만, 이는 다소 번거로운 작업입니다. mysqldump 도구 자체에 --lock-all-tables와 같은 잠금 옵션이 포함되어 있으므로 이를 활용하면 됩니다. 예를 들어, mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date +%F-%H-%M`.sql 명령을 사용할 수 있습니다.
단일 테이블을 백업하는 경우, 라이브러리 이름 test 뒤에 테이블 이름을 추가하면 됩니다.
InnoDB 저장 엔진 테이블의 경우 데이터베이스를 잠그지 않고 핫 백업을 수행할 수 있습니다. 핫 백업을 수행하기 위한 옵션을 추가하십시오: --single-transaction, 예시: mysqldump --databases test --single-transaction --flush-logs --master-data=2> /tmp/backup_test_`date+%F-%H-%M`.sql.
P.S. 복원할 때 바이너리 로그를 닫는 것을 잊지 마세요:
mysql> set sql_log_bin=0;
이 방식은 논리적 백업 방법을 기반으로 하기 때문에 SQL을 실행하면 데이터를 삽입하고 이를 바이너리 로그에 기록합니다. 복구를 위해서는 삽입된 바이너리 로그 기록을 중단하여 복구 시간을 단축할 수 있습니다.
MySQL 데이터베이스 백업 및 복구(Mysqldump 사용/미사용)에 대해 클릭하여 더 알아보세요.
2. LVM 스냅샷 기반 백업
물리 백업 측면에서는 파일 시스템(LVM 스냅샷)을 기반으로 한 물리 백업이 있으며, tar와 같은 명령어를 사용하여 전체 데이터베이스 디렉터리를 패키징하고 백업할 수도 있지만, 이 방법은 콜드 백업에만 사용할 수 있습니다. 서로 다른 저장 엔진은 각기 다른 내용을 백업합니다. MyISAM은 자동으로 테이블 단위로 백업되지만, InnoDB는 독립 테이블 공간을 활성화하지 않으면 전체 데이터베이스만 백업할 수 있습니다.
LVM의 스냅샷 기능을 백업에 활용하는 방법에 대한 소개는 다음과 같습니다.
1) 안전을 위해 먼저 데이터베이스에 읽기 잠금을 설정하십시오
mysql>FLUSH TABLES WITH READ LOCK
2) 특정 시점 복구를 위해 바이너리 로그 새로 고침
mysql>FLUSH LOGS
3) 그런 다음 스냅샷 볼륨을 생성하십시오
lvcreate –L 1G –s –n data-snap –p –r /dev/myvg/mydata
4) 읽기 잠금을 해제하기 위해 데이터베이스에 접속합니다
UNLOCK TABLES
5) 백업을 위해 스냅샷 볼륨 마운트
6) 마지막으로 /mnt/snap 아래의 파일들을 패키지하고 백업하세요
복원을 위해:
1) MySQL 종료
2) 그런 다음 이진 로그를 백업하십시오
3) 원래 백업 파일로 복원하기
4) 그런 다음 바이너리 로그를 통해 오류가 발생한 시점으로 복원합니다(시간 복원 시 바이너리 로그를 일시적으로 비활성화하는 것을 잊지 마세요).
2010년부터 2012년 사이에 MySQL 데이터베이스가 아마존의 클라우드 환경에 배포되었습니다. 그들은 매우 편리하고 빠른 LVM 스냅샷을 제공했습니다. LVM 스냅샷을 사용하면 아마존의 10G 네트워크 환경에서 복구 속도 역시 매우 빠릅니다.
3. Tar 백업
데이터베이스에서 첫 번째 데이터 백업을 준비하고, 모든 테이블을 일시적으로 잠그고 윈도우 1을 엽니다
mysql> flush tables with read lock;
쿼리 OK, 0개 행 영향(0.00초)
mysql> 마스터 상태 보기;
+++++| File | Position | Binlog_Do_DB |Binlog_Ignore_DB | | mysql-bin.000003 | 194554 | | | 1 row in set (0.00 sec)
이 창은 종료할 수 없으며 tar 패키지가 완료될 때까지 유지되어야 합니다.
--Re-open a shell window, go to the data file directory tar packageopen window 2[root@myfstv_21_11 data]# tar -zcvf mysqla1.tar.gz mysqlatar -zcvf mysqla1.tar.gz mysqla CompressedSwitch to window 1 and execute the unlock command
mysql> 테이블 잠금 해제;
Query OK, 0 rows affected (0.00 sec)mysql>
tar 패키지를 다른 MySQL 라이브러리 서버로 복사한 후 데이터 디렉터리를 덮어쓰고 MySQL 데이터베이스 서비스를 다시 시작합니다.
4. Percona에서 제공하는 xTraBackup
InnoDB의 물리적 핫백업을 지원하며, 전체 백업 및 증분 백업이 가능하고 속도가 매우 빠릅니다. InnoDB 저장소로 인해 발생하는 다양한 데이터베이스 간 데이터 마이그레이션을 지원하며, 복제 모드에서 슬레이브 백업과 복구도 지원합니다. xTraBackup이 더 많은 기능 확장을 지원할 수 있도록 하려면 독립적인 테이블 스페이스를 설정하고 innoDB_file_per_table 기능을 활성화할 수 있습니다. 이후 개별 테이블 백업을 지원할 수 있습니다.
xTraBackup 백업 원리:
xTraBackup은 innoDB의 충돌 복구 기능을 기반으로 합니다. 이는 innoDB의 데이터 파일을 복사하게 되며, 테이블이 잠기지 않기 때문에 복사된 데이터는 일관되지 않을 수 있습니다. 복구 시에는 충돌 복구 기능을 사용하여 데이터를 일관되게 만듭니다.
InnoDB는 모든 InnoDB 데이터 변경 사항을 포함하는 리도 로그(Redo Log), 즉 트랜잭션 로그를 유지합니다. InnoDB가 시작되면 먼저 데이터 파일과 트랜잭션 로그를 확인하고 다음 단계를 수행합니다:
xTraBackup이 백업을 수행할 때, 테이블을 잠그지 않고 innodb 데이터를 페이지 단위로 복사합니다. 동시에 xTraBackup은 또 다른 스레드를 사용하여 트랜잭션 로그를 모니터링합니다. 로그가 변경되면 변경된 로그 페이지를 복사해 둡니다. 트랜잭션 로그 파일의 크기는 제한되어 있기 때문에 공간이 가득 차면 처음부터 다시 기록하게 되며, 이로 인해 새로운 데이터가 오래된 데이터를 덮어쓸 수 있습니다.
준비 과정에서 xTraBackup은 복사된 트랜잭션 로그를 사용하여 백업된 innoDB 데이터 파일에 충돌 복구를 수행합니다.
5. Vinchin 백업 및 복구로 MySQL 데이터베이스 백업
Vinchin Backup & Recovery 는 가상 머신과 물리 서버 모두에서 데이터베이스를 보호할 수 있는 강력한 기능을 제공합니다. VM 수준 백업과 잘 협업하여 가상 환경 사용자에게 핵심 비즈니스 데이터와 정보 시스템에 이중 보장을 제공합니다. Vinchin Backup & Recovery는 물리 및 가상 머신에 설치된 Oracle DB, MySQL, SQL Server, PostgreSQL, Postgres Pro 및 MariaDB 보호를 위해 강력한 데이터베이스 백업 및 복원 기능을 지원합니다. 또한 전체 백업, 차등 백업, 증분 백업 및 트랜잭션 로그 백업 전략을 제공하여 요구에 따라 자체 백업 계획을 세울 수 있습니다.
Vinchin 백업 및 복구는 데이터베이스의 정상적인 운영에 영향을 주지 않고 MySQL, SQL Server 및 Oracle의 효율적인 핫 백업을 지원합니다.
Vinchin Backup & Recovery의 작동은 매우 간단하며, 단 몇 단계만으로 이루어집니다.
1. 백업 대상을 선택하십시오.
2.백업 대상을 선택하십시오.
3. 백업 전략 구성.
4.검토하고 직무 제출하기.
강력한 이 시스템을 60일 동안 완전한 기능을 갖춘 무료 체험판으로 시작할 수 있습니다. 설치 패키지를 받으려면 버튼을 클릭하세요. MySQL을 Vinchin Backup & Recovery로 백업하는 방법에 대해 더 알아보려면 여기를 클릭하세요.
요약
MySQL 데이터베이스는 여러 산업 분야에서 널리 사용되고 있습니다. 그 보안을 보장하기 위해 본 문서에서는 MySQL 백업 데이터의 5가지 다양한 방법을 소개합니다. 실제 상황에 따라 보다 적합한 방법을 선택하시기 바랍니다. 무엇을 망설이십니까? 서둘러 MySQL 데이터베이스의 백업을 시작하십시오!
공유하기: