8.1 데이터베이스 백업의 필요성
데이터베이스 스키마, 테이블을 만들고 보는 방법을 배웠습니다. 또한 이러한 테이블을 데이터로 채우고 변경합니다. 이제 백업을 만드는 가장 중요한 것을 배워야 합니다.
데이터베이스는 깨지기 매우 쉽습니다. 사실 데이터베이스는 일반적으로 지속적으로 변경되는 상태에 있습니다. 무언가가 지속적으로 저장되고 추가됩니다.
브라우저에 탭이 열려 있고 그 안에 있는 정보가 손실되는 것을 원하지 않는다고 상상해 보십시오. 절대 닫지 않기로 결정했다면 이것이 최선의 선택이 아닐 것이라는 점에 동의하십시오. 결국 브라우저가 멈출 수 있고 실수로 닫힐 수 있으며 빛을 잃거나 컴퓨터를 태울 수 있습니다. Windows는 다른 업데이트를 설치할 수 있지만 무엇을 알 수 없습니다.
따라서 데이터베이스는 동일한 탭입니다. 그리고 다음에 디스크에 쓰는 동안 문제가 발생하는 것은 시간 문제입니다. 따라서 반드시 백업 방법을 배워야 합니다.
백업을 만드는 것은 이를 닦는 것과 같으며 일반 회사에서는 매일 밤 각 데이터베이스의 내용을 백업합니다. 그리고 하드 드라이브도 고장날 수 있고 데이터 센터에서 화재가 발생하기 때문에 백업은 일반적으로 세계 여러 지역의 데이터 센터에 2-3개의 복사본으로 저장됩니다.
백업을 만드는 방법에는 여러 가지가 있습니다.
백업 파일. 모든 데이터베이스 데이터는 파일 세트로 디스크에 저장되므로 가장 쉬운 방법은 이러한 파일을 어딘가에 복사하는 것입니다. 또는 먼저 하나의 아카이브에 보관한 다음 어딘가에 복사합니다.
이것은 백업을 만드는 가장 빠른 방법이지만 파일이 복사/아카이브되는 동안 파일이 변경되지 않아야 합니다. 복사본을 만드는 동안 데이터베이스를 고정해야 합니다. 그렇지 않으면 복사본이 비뚤어집니다. 결국, 새로운 데이터 중 일부는 데이터베이스에 기록되고 일부는 아직 기록되지 않는 상황이 있을 수 있습니다.
SQL 쿼리 형식으로 백업합니다 . 이미 알고 있듯이 SQL 서버 데이터베이스에서 데이터를 추가하고 변경하는 것은 항상 SQL 쿼리로 표시됩니다. 따라서 특정 테이블의 내용을 SQL 쿼리로 파일에 저장하도록 SQL 서버에 요청할 수 있습니다.
이 방법은 이전 방법보다 느리지만 다른 제조업체의 SQL 서버 간에 데이터를 전송하는 데 사용할 수 있습니다.
또한 모든 데이터를 항상 저장할 필요는 없습니다. 종종 테이블에 많은 서비스 또는 사용되지 않는 정보가 있고 이를 저장하지 않도록 SQL 서버에 지시할 수 있습니다.
또한 시간을 기준으로 일부 이벤트를 저장하는 테이블의 경우 마지막 날의 이벤트를 선택하여 해당 이벤트만 저장할 수 있습니다.
다양한 유틸리티 . 회사는 데이터가 손상되지 않고 안전하게 유지된다는 보장을 받기 위해 많은 비용을 기꺼이 지불합니다. 따라서 다양한 IT 회사에서 모든 경우에 대한 솔루션을 제공하기 시작했습니다. 예를 들어, 백업 데이터베이스를 파일 형태로 만들 수 있고 동시에 이러한 파일이 변경되지 않도록 요구하지 않는 프로그램이 있습니다.
예를 들어 운영 체제에 특수 드라이버를 설치하고 언제, 무엇을, 어디에서 변경되었는지 추적할 수 있습니다.
8.2 데이터베이스 백업
Workbench는 함께 작동하는 데이터베이스에서 데이터를 내보내고 가져오는 데 탁월합니다. 이렇게하려면 메뉴 항목을 누르기 만하면됩니다. Server-> Data Export
. 그러면 다음과 같은 내용이 표시됩니다.
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
이제 몇 가지 설명을 추가해 보겠습니다.
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
순서는 이렇습니다.
- 먼저 내보낼 스키마를 선택합니다.
- 그런 다음 오른쪽에서 백업할 테이블을 지정합니다.
- 다음으로 내보낼 항목을 정확히 선택해야 합니다.
- 데이터만;
- 구조만(테이블은 있지만 비어 있음);
- 데이터와 구조.
- 데이터 저장 방법 선택:
- 각 테이블에 대해 하나의 파일;
- 모든 테이블에 대해 하나의 파일.
- 파일 상단에 스키마 생성 코드를 추가할 수도 있습니다. 이는 서로 다른 DBMS 간에 데이터를 전송할 때 유용합니다.
8.3 테이블 스키마 백업
실제 데이터 없이 스키마만 백업합시다.
덤프 구조만을 선택하고 내보내기 시작을 클릭했습니다.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
그리고 이것이 Workbench가 만든 파일에서 찾은 것입니다.
--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`level` int(11) DEFAULT NULL,
`created_date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
맞습니다. 단일 테이블에 대해 말할 수 있다면 이것이 우리 테이블의 스키마입니다.
8.4 데이터 백업
이제 스키마 구조 없이 데이터만 백업해 보겠습니다.
Dump Data Only를 선택하고 그들이 우리에게 무엇을 제공하는지 봅시다:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
그리고 이것이 Workbench가 만든 파일에서 찾은 것입니다.
--
-- Dumping data for table `user`
--
LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES
(1,'Ivanov Ivan',40,'2022-05-11'),
(2,'Petrov Nikola',1,'2021-05-01'),
(3,'Sidroov Vitaly',8,'2022-05-12');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
예, 진실과 매우 흡사합니다. 여기에서 사용자 테이블을 잠그는 특수 코드도 볼 수 있습니다. 이렇게 하면 이 SQL 스크립트를 간단히 실행할 수 있습니다. 여기에는 모든 SQL 서버가 데이터를 올바르게 복원할 수 있도록 하는 모든 지침이 포함되어 있습니다.
8.5 백업 배포
마지막으로 백업에서 데이터베이스를 복원하는 것이 마지막입니다. 이 작업은 매우 간단하지만 유용합니다.
모든 학생이 특정 데이터베이스를 갖고 있으면 쿼리를 작성하는 방법을 배울 수 있습니다. 그런 다음 로컬로 배포하는 파일에 대한 링크를 제공합니다. 그게 다입니다.
일부 데이터, 테이블 또는 전체 스키마를 실수로 삭제하더라도 항상 백업에서 복원할 수 있습니다.
데이터를 가져오려면 메뉴에서 항목을 클릭해야 합니다 Server-> Data Import
. 그러면 다음 그림이 표시됩니다.
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
내보내기의 경우와 마찬가지로 먼저 데이터 소스(파일 그룹 또는 한 파일의 모든 데이터)를 선택하라는 메시지가 표시됩니다.
그런 다음 지정된 데이터를 업로드할 체계를 선택해야 합니다. 기존 체계를 선택하거나 새 체계를 생성할 수 있습니다.
중요한! 백업에 데이터뿐만 아니라 테이블 구조에 대한 설명도 포함되어 있으면 테이블이 다시 생성됩니다(대상 스키마에 이미 테이블이 있는 경우).
GO TO FULL VERSION