Linux에서 SQL Server 데이터베이스 백업 및 복원

적용 대상:SQL Server - Linux

다양한 옵션을 사용하여 SQL Server on Linux에서 데이터베이스 백업을 수행할 수 있습니다. Linux 서버에서 sqlcmd를 사용하여 SQL Server에 연결하고 백업을 수행할 수 있습니다. Windows에서 SQL Server on Linux에 연결하고 사용자 인터페이스를 사용하여 백업을 수행할 수 있습니다. 백업 기능은 플랫폼 간에 동일합니다. 예를 들어 데이터베이스를 로컬에서 원격 드라이브 또는 Microsoft Azure Blob Storage로 백업할 수 있습니다.

중요

SQL Server on Linux는 블록 Blob을 사용한 Azure Blob 스토리지로의 백업만 지원합니다. 백업 및 복원에 스토리지 키를 사용하면 지원되지 않는 페이지 블로그가 사용됩니다. 대신 공유 액세스 서명을 사용합니다. 블록 블로그 및 페이지 블로그에 대한 자세한 내용은 블록 Blob 및 페이지 Blob에 대한 백업을 참조하세요.

데이터베이스 백업

다음 예제에서 sqlcmd는 로컬 SQL Server 인스턴스에 연결하고 demodb라는 사용자 데이터베이스의 전체 백업을 수행합니다.

sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

명령을 실행하면 SQL Server에서 암호를 입력하라는 메시지가 표시됩니다. 암호를 입력하면 셸에서 백업 진행 결과를 반환합니다. 다음은 그 예입니다.

Password:
10 percent processed.
21 percent processed.
32 percent processed.
40 percent processed.
51 percent processed.
61 percent processed.
72 percent processed.
80 percent processed.
91 percent processed.
Processed 296 pages for database 'demodb', file 'demodb' on file 1.
100 percent processed.
Processed 2 pages for database 'demodb', file 'demodb_log' on file 1.
BACKUP DATABASE successfully processed 298 pages in 0.064 seconds (36.376 MB/sec).

트랜잭션 로그 백업

데이터베이스가 전체 복구 모델에 있는 경우 더 세분화된 복원 옵션을 위해 트랜잭션 로그 백업을 수행할 수도 있습니다. 다음 예제에서 sqlcmd는 로컬 SQL Server 인스턴스에 연결하고 트랜잭션 로그 백업을 수행합니다.

sqlcmd -S localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 5"

데이터베이스 복원

다음 예제에서 sqlcmd는 SQL Server의 로컬 인스턴스에 연결하고 demodb 데이터베이스를 복원합니다. NORECOVERY 옵션은 로그 파일 백업의 추가 복원을 허용하는 데 사용됩니다. 추가 로그 파일을 복원하지 않으려면 NORECOVERY 옵션을 제거합니다.

sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"

실수로 NORECOVERY를 사용하지만 추가 로그 파일 백업이 없는 경우에는 추가 매개 변수 없이 RESTORE DATABASE demodb 명령을 실행합니다. 그러면 복원이 완료되고 데이터베이스가 계속 작동합니다.

트랜잭션 로그를 복원합니다.

다음 명령은 이전 트랜잭션 로그 백업을 복원합니다.

sqlcmd -S localhost -U SA -Q "RESTORE LOG demodb FROM DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak'"

SSMS(SQL Server Management Studio)를 사용하여 백업 및 복원

Windows 컴퓨터에서 SSMS를 사용하여 Linux 데이터베이스에 연결하고 사용자 인터페이스를 통해 백업을 수행할 수 있습니다.

참고

최신 버전의 SSMS를 사용하여 SQL Server에 연결합니다. 최신 버전을 다운로드하여 설치하려면 SSMS 다운로드를 참조하세요. SSMS 사용 방법에 대한 자세한 내용은 SSMS를 사용하여 SQL Server on Linux 관리를 참조하세요.

다음 단계에서는 SSMS를 사용하여 백업을 수행하는 과정을 안내합니다.

  1. SSMS 시작 및 SQL Server on Linux 인스턴스에 연결

  2. 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고, 작업을 선택한 다음, 백업...을 선택합니다.

  3. 데이터베이스 백업 대화 상자에서 매개 변수 및 옵션을 확인하고 확인을 선택합니다.

SQL Server가 데이터베이스 백업을 완료합니다.

SSMS(SQL Server Management Studio)를 사용하여 복원

다음 단계에서는 SSMS를 사용하여 데이터베이스를 복원하는 과정을 안내합니다.

  1. SSMS에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 데이터베이스 복원...을 선택합니다.

  2. 원본에서 디바이스:를 선택한 다음, 줄임표(...)를 선택합니다.

  3. 데이터베이스 백업 파일을 찾고 확인을 선택합니다.

  4. 복원 계획에서 백업 파일 및 설정을 확인합니다. 확인을 선택합니다.

  5. SQL Server가 데이터베이스를 복원합니다.

SQL 설명서에 참여하세요

SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 직접 편집하면 설명서가 개선될 뿐만 아니라 페이지에 참여자로 기입됩니다.

자세한 내용은 SQL Server 설명서에 기여하는 방법을 참조하세요.