2.5. MariaDB 데이터 백업
Red Hat Enterprise Linux 9의 MariaDB 데이터베이스에서 데이터를 백업하는 방법에는 두 가지가 있습니다.
- 논리적 백업
- 물리적 백업
논리적 백업 은 데이터를 복원하는 데 필요한 SQL 문으로 구성됩니다. 이러한 유형의 백업은 일반 텍스트 파일로 정보와 레코드를 내보냅니다.
물리적 백업보다 논리적 백업의 주요 장점은 이식성과 유연성입니다. 데이터는 물리적 백업에서 사용할 수 없는 다른 하드웨어 구성, MariaDB 버전 또는 DBMS(데이터베이스 관리 시스템)에서 복원할 수 있습니다.
mariadb.service
가 실행 중인 경우 논리적 백업을 수행할 수 있습니다. 논리적 백업에는 로그 및 구성 파일이 포함되지 않습니다.
물리적 백업 은 콘텐츠를 저장하는 파일과 디렉토리의 복사본으로 구성됩니다.
물리적 백업은 논리적 백업과 비교하여 다음과 같은 이점이 있습니다.
- 출력이 더 작습니다.
- 백업은 크기가 작습니다.
- 백업 및 복원 속도가 빨라집니다.
- 백업에는 로그 및 구성 파일이 포함됩니다.
물리적 백업은 mariadb.service
가 실행 중이 아니거나 백업 중 변경을 방지하기 위해 데이터베이스의 모든 테이블이 잠겨 있는 경우 수행해야 합니다.
다음 MariaDB 백업 방법 중 하나를 사용하여 MariaDB 데이터베이스에서 데이터를 백업할 수 있습니다.
-
mariadb-dump
를 사용한 논리 백업 -
Mariabackup
유틸리티를 사용한 물리적 온라인 백업 - 파일 시스템 백업
- 백업 솔루션으로의 복제
2.5.1. mariadb-dump를 사용하여 논리적 백업 수행
mariadb-dump 클라이언트는 백업 또는 다른 데이터베이스 서버로 전송하기 위해 데이터베이스 컬렉션을 덤프하는 데 사용할 수 있는 백업 유틸리티입니다. mariadb-dump 의 출력은 일반적으로 서버 테이블 구조를 다시 생성하거나, 데이터로 채우거나, 둘 다로 구성되는 SQL 문으로 구성됩니다. mariadb-dump 는 XML 및 CSV와 같은 구분된 텍스트 형식을 포함한 다른 형식의 파일도 생성할 수 있습니다.
mariadb-dump 백업을 수행하려면 다음 옵션 중 하나를 사용할 수 있습니다.
- 하나 이상의 선택된 데이터베이스 백업
- 모든 데이터베이스 백업
- 하나의 데이터베이스에서 테이블의 하위 집합 백업
절차
단일 데이터베이스를 덤프하려면 다음을 실행합니다.
# mariadb-dump [options] --databases db_name > backup-file.sql
한 번에 여러 데이터베이스를 덤프하려면 다음을 실행합니다.
# mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
모든 데이터베이스를 덤프하려면 다음을 실행합니다.
# mariadb-dump [options] --all-databases > backup-file.sql
하나 이상의 덤프된 전체 데이터베이스를 서버에 다시 로드하려면 다음을 실행합니다.
# mariadb < backup-file.sql
데이터베이스를 원격 MariaDB 서버에 로드하려면 다음을 실행합니다.
# mariadb --host=remote_host < backup-file.sql
하나의 데이터베이스에서 테이블 서브 세트를 덤프하려면
mariadb-dump
명령 끝에 선택한 테이블 목록을 추가합니다.# mariadb-dump [options] db_name [tbl_name ...] > backup-file.sql
하나의 데이터베이스에서 덤프된 테이블의 하위 집합을 로드하려면 다음을 실행합니다.
# mariadb db_name < backup-file.sql
참고db_name 데이터베이스는 이 시점에 있어야 합니다.
mariadb-dump 에서 지원하는 옵션 목록을 보려면 다음을 실행합니다.
$ mariadb-dump --help
추가 리소스
2.5.2. Mariabackup 유틸리티를 사용하여 물리적 온라인 백업 수행
mariabackup 은 Percona XtraBackup 기술을 기반으로 하는 유틸리티로서 InnoDB, Aria, MyISAM 테이블의 물리적 온라인 백업을 수행할 수 있습니다. 이 유틸리티는 AppStream 리포지토리에서 mariadb-backup
패키지에서 제공합니다.
mariabackup 은 암호화 및 압축된 데이터를 포함하는 MariaDB 서버에 대한 전체 백업 기능을 지원합니다.
사전 요구 사항
mariadb-backup
패키지가 시스템에 설치됩니다.# dnf install mariadb-backup
- 백업이 실행될 사용자 자격 증명이 포함된 Mariabackup 을 제공해야 합니다. 명령줄 또는 구성 파일을 통해 자격 증명을 제공할 수 있습니다.
-
Mariabackup 사용자는
RELOAD
,LOCK TABLES
및REPLICATION CLIENT
권한이 있어야 합니다.
Mariabackup 을 사용하여 데이터베이스 백업을 만들려면 다음 절차를 따르십시오.
절차
명령줄에서 자격 증명을 제공하는 동안 백업을 만들려면 다음을 실행합니다.
$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
target-dir
옵션은 백업 파일이 저장되는 디렉터리를 정의합니다. 전체 백업을 수행하려면 대상 디렉터리가 비어 있거나 존재하지 않아야 합니다.사용자
이름 및암호
옵션을 사용하여 사용자 이름과 암호를 구성할 수 있습니다.구성 파일에 인증 정보가 설정된 백업을 생성하려면 다음을 수행합니다.
-
/etc/my.cnf.d/
디렉터리에 구성 파일을 만듭니다(예:/etc/my.cnf.d/mariabackup.cnf
). 새 파일의
[xtrabackup]
또는[mysqld]
섹션에 다음 행을 추가합니다.[xtrabackup] user=myuser password=mypassword
백업을 수행합니다.
$ mariabackup --backup --target-dir <backup_directory>
-
추가 리소스
2.5.3. Mariabackup 유틸리티를 사용하여 데이터 복원
백업이 완료되면 다음 옵션 중 하나와 함께 mariabackup
명령을 사용하여 백업에서 데이터를 복원할 수 있습니다.
-
--copy-back
을 사용하면 원본 백업 파일을 유지할 수 있습니다. -
--move-back
은 백업 파일을 데이터 디렉터리로 이동하고 원래 백업 파일을 제거합니다.
Mariabackup 유틸리티를 사용하여 데이터를 복원하려면 다음 절차를 따르십시오.
사전 요구 사항
mariadb
서비스가 실행 중이 아닌지 확인합니다.# systemctl stop mariadb.service
- 데이터 디렉터리가 비어 있는지 확인합니다.
-
Mariabackup 사용자는
RELOAD
,LOCK TABLES
및REPLICATION CLIENT
권한이 있어야 합니다.
절차
mariabackup
명령을 실행합니다.데이터를 복원하고 원본 백업 파일을 유지하려면
--copy-back
옵션을 사용합니다.$ mariabackup --copy-back --target-dir=/var/mariadb/backup/
데이터를 복원하고 원본 백업 파일을 제거하려면
--move-back
옵션을 사용합니다.$ mariabackup --move-back --target-dir=/var/mariadb/backup/
파일 권한을 수정합니다.
데이터베이스를 복원할 때 Mariabackup 은 백업의 파일 및 디렉토리 권한을 보존합니다. 그러나 Mariabackup 은 파일을 디스크에 쓰는 사용자 및 그룹으로 데이터베이스를 복원합니다. 백업을 복원한 후 일반적으로 MariaDB 서버의 사용자 및 그룹과 일치하도록 데이터 디렉터리의 소유자(일반적으로
mysql
)를 조정해야 할 수 있습니다.예를 들어 파일의 소유권을
mysql
사용자 및 그룹으로 재귀적으로 변경하려면 다음을 수행합니다.# chown -R mysql:mysql /var/lib/mysql/
mariadb
서비스를 시작합니다.# systemctl start mariadb.service
추가 리소스
2.5.4. 파일 시스템 백업 수행
MariaDB 데이터 파일의 파일 시스템 백업을 생성하려면 MariaDB 데이터 디렉터리의 콘텐츠를 백업 위치에 복사합니다.
현재 구성 또는 로그 파일도 백업하려면 다음 절차의 선택적 단계를 사용하십시오.
절차
mariadb
서비스를 중지합니다.# systemctl stop mariadb.service
필요한 위치에 데이터 파일을 복사합니다.
# cp -r /var/lib/mysql /backup-location
선택 사항: 구성 파일을 필요한 위치에 복사합니다.
# cp -r /etc/my.cnf /etc/my.cnf.d /backup-location/configuration
선택 사항: 로그 파일을 필요한 위치에 복사합니다.
# cp /var/log/mariadb/* /backup-location/logs
mariadb
서비스를 시작합니다.# systemctl start mariadb.service
백업 위치에서
/var/lib/mysql
디렉터리에 백업 데이터를 로드할 때mysql:mysql
이/var/lib/mysql
에 있는 모든 데이터의 소유자인지 확인하십시오.# chown -R mysql:mysql /var/lib/mysql
2.5.5. 백업 솔루션으로의 복제
복제는 소스 서버를 위한 대체 백업 솔루션입니다. 소스 서버에서 복제본 서버에 복제하는 경우 소스에 영향을 주지 않고 복제본에서 백업을 실행할 수 있습니다. 복제본을 종료하는 동안 계속 소스를 실행하고 복제본에서 데이터를 백업할 수 있습니다.
복제 자체는 충분한 백업 솔루션이 아닙니다. 복제는 하드웨어 장애로부터 소스 서버를 보호하지만 데이터 손실에 대한 보호는 보장하지 않습니다. 이 메서드와 함께 복제본에서 다른 백업 솔루션을 사용하는 것이 좋습니다.