3.5. MySQL 데이터 백업
Red Hat Enterprise Linux 9의 MySQL 데이터베이스에서 데이터를 백업하는 방법에는 두 가지가 있습니다.
- 논리적 백업
- 물리적 백업
논리적 백업 은 데이터를 복원하는 데 필요한 SQL 문으로 구성됩니다. 이러한 유형의 백업은 일반 텍스트 파일로 정보와 레코드를 내보냅니다.
물리적 백업보다 논리적 백업의 주요 장점은 이식성과 유연성입니다. 데이터는 물리적 백업에서 사용할 수 없는 다른 하드웨어 구성, MySQL 버전 또는 DBMS(데이터베이스 관리 시스템)에서 복원할 수 있습니다.
mysqld.service
가 실행 중인 경우 논리적 백업을 수행할 수 있습니다. 논리적 백업에는 로그 및 구성 파일이 포함되지 않습니다.
물리적 백업 은 콘텐츠를 저장하는 파일과 디렉토리의 복사본으로 구성됩니다.
물리적 백업은 논리적 백업과 비교하여 다음과 같은 이점이 있습니다.
- 출력이 더 작습니다.
- 백업은 크기가 작습니다.
- 백업 및 복원 속도가 빨라집니다.
- 백업에는 로그 및 구성 파일이 포함됩니다.
mysqld.service
가 실행 중이 아니거나 백업 중 변경되지 않도록 데이터베이스의 모든 테이블이 잠길 때 물리적 백업을 수행해야 합니다.
다음 MySQL 백업 접근법 중 하나를 사용하여 MySQL 데이터베이스에서 데이터를 백업할 수 있습니다.
-
mysqldump
를 사용한 논리적 백업 - 파일 시스템 백업
- 백업 솔루션으로의 복제
3.5.1. mysqldump를 사용하여 논리적 백업 수행
mysqldump 클라이언트는 백업 또는 다른 데이터베이스 서버로 전송하기 위해 데이터베이스 또는 데이터베이스 컬렉션을 덤프하는 데 사용할 수 있는 백업 유틸리티입니다. mysqldump 의 출력은 일반적으로 서버 테이블 구조를 다시 만들거나, 데이터로 채우거나, 둘 다입니다. mysqldump 는 XML 및 CSV와 같은 구분된 텍스트 형식을 포함한 다른 형식으로 파일을 생성할 수도 있습니다.
mysqldump 백업을 수행하려면 다음 옵션 중 하나를 사용할 수 있습니다.
- 하나 이상의 선택된 데이터베이스 백업
- 모든 데이터베이스 백업
- 하나의 데이터베이스에서 테이블의 하위 집합 백업
절차
단일 데이터베이스를 덤프하려면 다음을 실행합니다.
# mysqldump [options] --databases db_name > backup-file.sql
한 번에 여러 데이터베이스를 덤프하려면 다음을 실행합니다.
# mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
모든 데이터베이스를 덤프하려면 다음을 실행합니다.
# mysqldump [options] --all-databases > backup-file.sql
하나 이상의 덤프된 전체 데이터베이스를 서버에 다시 로드하려면 다음을 실행합니다.
# mysql < backup-file.sql
데이터베이스를 원격 MySQL 서버에 로드하려면 다음을 실행합니다.
# mysql --host=remote_host < backup-file.sql
하나의 데이터베이스에서 리터럴 하위 집합을 덤프하려면
mysqldump
명령 끝에 선택한 테이블 목록을 추가합니다.# mysqldump [options] db_name [tbl_name ...] > backup-file.sql
하나의 데이터베이스에서 덤프된 테이블의 리터럴 하위 집합을 로드하려면 다음을 실행합니다.
# mysql db_name < backup-file.sql
참고db_name 데이터베이스는 이 시점에 있어야 합니다.
mysqldump 에서 지원하는 옵션 목록을 보려면 다음을 실행합니다.
$ mysqldump --help
추가 리소스
3.5.2. 파일 시스템 백업 수행
MySQL 데이터 파일의 파일 시스템 백업을 생성하려면 MySQL 데이터 디렉터리의 내용을 백업 위치에 복사합니다.
현재 구성 또는 로그 파일도 백업하려면 다음 절차의 선택적 단계를 사용하십시오.
절차
mysqld
서비스를 중지합니다.# systemctl stop mysqld.service
필요한 위치에 데이터 파일을 복사합니다.
# cp -r /var/lib/mysql /backup-location
선택 사항: 구성 파일을 필요한 위치에 복사합니다.
# cp -r /etc/my.cnf /etc/my.cnf.d /backup-location/configuration
선택 사항: 로그 파일을 필요한 위치에 복사합니다.
# cp /var/log/mysql/* /backup-location/logs
mysqld
서비스를 시작합니다.# systemctl start mysqld.service
백업 위치에서
/var/lib/mysql
디렉터리에 백업 데이터를 로드할 때mysql:mysql
이/var/lib/mysql
에 있는 모든 데이터의 소유자인지 확인하십시오.# chown -R mysql:mysql /var/lib/mysql
3.5.3. 백업 솔루션으로의 복제
복제는 소스 서버를 위한 대체 백업 솔루션입니다. 소스 서버에서 복제본 서버에 복제하는 경우 소스에 영향을 주지 않고 복제본에서 백업을 실행할 수 있습니다. 복제본을 종료하는 동안 계속 소스를 실행하고 복제본에서 데이터를 백업할 수 있습니다.
MySQL 데이터베이스를 복제하는 방법에 대한 지침은 MySQL 복제를 참조하십시오.
복제 자체는 충분한 백업 솔루션이 아닙니다. 복제는 하드웨어 장애로부터 소스 서버를 보호하지만 데이터 손실에 대한 보호는 보장하지 않습니다. 이 메서드와 함께 복제본에서 다른 백업 솔루션을 사용하는 것이 좋습니다.
추가 리소스