8.1 Sự cần thiết phải sao lưu cơ sở dữ liệu
Bạn đã học cách tạo lược đồ cơ sở dữ liệu, bảng, xem chúng. Đồng thời điền dữ liệu vào các bảng này và thay đổi chúng. Bây giờ bạn cần học điều quan trọng nhất - tạo bản sao lưu.
Cơ sở dữ liệu rất dễ bị phá vỡ. Thực tế là cơ sở dữ liệu thường ở trạng thái thay đổi liên tục: một cái gì đó liên tục được lưu và thêm vào nó.
Hãy tưởng tượng rằng bạn có một tab đang mở trong trình duyệt của mình và bạn không muốn thông tin trong đó bị mất. Đồng ý rằng nếu bạn quyết định không bao giờ đóng nó, thì đây sẽ không phải là lựa chọn tốt nhất. Rốt cuộc, trình duyệt có thể bị treo, có thể bị đóng do vô tình, bạn có thể mất đèn hoặc cháy máy tính. Windows có thể cài đặt một bản cập nhật khác, nhưng bạn không bao giờ biết đó là gì.
Vì vậy, cơ sở dữ liệu của bạn là cùng một tab. Và chỉ là vấn đề thời gian khi có sự cố xảy ra trong lần ghi tiếp theo vào đĩa. Do đó, bạn chắc chắn cần học cách tạo bản sao lưu.
Tạo bản sao lưu giống như đánh răng, các công ty bình thường tạo bản sao lưu nội dung của từng cơ sở dữ liệu mỗi đêm. Và vì ổ cứng cũng có thể bị lỗi và xảy ra cháy trong trung tâm dữ liệu, nên các bản sao lưu thường được lưu trữ thành 2-3 bản tại các trung tâm dữ liệu ở các khu vực khác nhau trên thế giới.
Có một số cách tiếp cận để tạo bản sao lưu.
Tập tin sao lưu. Vì tất cả dữ liệu cơ sở dữ liệu được lưu trữ trên đĩa dưới dạng một tập hợp các tệp nên cách dễ nhất là chỉ cần sao chép các tệp này vào một nơi nào đó. Hoặc trước tiên hãy lưu trữ nó vào một kho lưu trữ, sau đó sao chép nó vào một nơi nào đó.
Đây là cách nhanh nhất để tạo một bản sao lưu, nhưng nó yêu cầu các tệp không thay đổi trong khi chúng đang được sao chép/lưu trữ. Cơ sở dữ liệu phải được đóng băng trong khi bản sao đang được tạo, nếu không bản sao sẽ bị cong. Rốt cuộc, có thể xảy ra tình huống một số dữ liệu mới được ghi vào cơ sở dữ liệu và một số thì chưa.
Sao lưu dưới dạng truy vấn SQL . Như bạn đã biết, việc thêm và thay đổi dữ liệu trong cơ sở dữ liệu máy chủ SQL luôn được biểu diễn dưới dạng các truy vấn SQL. Vì vậy, bạn có thể yêu cầu máy chủ SQL lưu nội dung của một hoặc nhiều bảng cụ thể vào một tệp dưới dạng truy vấn SQL.
Phương pháp này chậm hơn phương pháp trước, nhưng nó có thể được sử dụng để truyền dữ liệu giữa các máy chủ SQL từ các nhà sản xuất khác nhau.
Ngoài ra, không phải lúc nào dữ liệu cũng cần được lưu. Thông thường, bạn có một loạt thông tin dịch vụ hoặc thông tin lỗi thời trong bảng của mình và bạn có thể yêu cầu máy chủ SQL không lưu thông tin đó.
Ngoài ra, đối với các bảng lưu trữ một số sự kiện có liên quan đến thời gian, bạn chỉ cần chọn các sự kiện đó cho ngày cuối cùng và chỉ lưu trữ chúng.
Tiện ích đa dạng . Các công ty sẵn sàng trả rất nhiều tiền để được đảm bảo rằng dữ liệu của họ sẽ vẫn nguyên vẹn và an toàn. Do đó, các công ty CNTT khác nhau bắt đầu đưa ra các giải pháp cho mọi trường hợp. Ví dụ: có những chương trình có thể tạo cơ sở dữ liệu sao lưu ở dạng tệp và đồng thời không yêu cầu các tệp này không thay đổi.
Ví dụ: bạn có thể cài đặt trình điều khiển đặc biệt trong hệ điều hành và theo dõi khi nào, cái gì và ở đâu đã thay đổi.
8.2 Sao lưu cơ sở dữ liệu
Workbench xuất sắc trong việc xuất và nhập dữ liệu từ cơ sở dữ liệu mà nó hoạt động. Để làm điều này, bạn chỉ cần nhấn vào mục menu: Server-> Data Export
. Và bạn sẽ thấy một cái gì đó như thế này:
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
Bây giờ hãy thêm một số lời giải thích:
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
Thứ tự là thế này:
- Đầu tiên, chọn lược đồ hoặc các lược đồ sẽ được xuất.
- Sau đó, ở bên phải, chúng tôi chỉ định các bảng để sao lưu.
- Tiếp theo, chúng ta phải chọn chính xác những gì chúng ta sẽ xuất:
- chỉ thông tin;
- chỉ cấu trúc (các bảng sẽ có, nhưng trống);
- dữ liệu và cấu trúc.
- Chọn cách lưu dữ liệu:
- một tệp cho mỗi bảng;
- một tệp cho tất cả các bảng.
- Bạn cũng có thể thêm mã tạo lược đồ vào đầu tệp. Điều này rất hữu ích khi truyền dữ liệu giữa các DBMS khác nhau.
8.3 Sao lưu lược đồ bảng
Hãy chỉ sao lưu các lược đồ, không có dữ liệu thực tế.
Tôi đã chọn Chỉ cấu trúc kết xuất và nhấp vào Bắt đầu xuất.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
Và đây là những gì tôi tìm thấy trong tệp mà Workbench đã tạo.
--
-- 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 */;
Đúng vậy, đây là lược đồ các bảng của chúng ta, nếu tôi có thể nói như vậy về một bảng duy nhất.
8.4 Sao lưu dữ liệu
Bây giờ, hãy chỉ sao lưu dữ liệu nhưng không có cấu trúc lược đồ.
Hãy chọn Chỉ kết xuất dữ liệu và xem những gì họ cung cấp cho chúng tôi:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
Và đây là những gì tôi tìm thấy trong tệp mà Workbench đã tạo.
--
-- 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 */;
Vâng, rất giống sự thật. Chúng tôi cũng thấy một mã đặc biệt ở đây khóa bảng người dùng. Điều này được thực hiện để bạn có thể thực thi tập lệnh SQL này một cách đơn giản: nó chứa tất cả các hướng dẫn cho phép bất kỳ máy chủ SQL nào khôi phục dữ liệu một cách chính xác.
8.5 Triển khai sao lưu
Và cuối cùng, việc cuối cùng là khôi phục cơ sở dữ liệu từ bản sao lưu. Hành động này rất đơn giản nhưng hữu ích.
Giả sử tôi muốn tất cả học viên của mình có một cơ sở dữ liệu cụ thể để bạn có thể học cách viết truy vấn trên đó. Sau đó, tôi sẽ chỉ cung cấp cho bạn một liên kết tới tệp mà bạn triển khai cục bộ và thế là xong.
Và ngay cả khi bạn vô tình xóa một số dữ liệu, bảng hoặc thậm chí toàn bộ lược đồ, nó luôn có thể được khôi phục từ bản sao lưu.
Để nhập dữ liệu, bạn cần nhấp vào mục trong menu Server-> Data Import
. Sau đó, bạn sẽ thấy hình ảnh này:
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
Như trong trường hợp xuất, trước tiên bạn được nhắc chọn nguồn dữ liệu: một nhóm tệp hoặc tất cả dữ liệu trong một tệp.
Sau đó, bạn cần chọn sơ đồ mà dữ liệu được chỉ định sẽ được tải lên. Bạn có thể chọn một lược đồ hiện có hoặc tạo một lược đồ mới.
Quan trọng! Nếu bản sao lưu của bạn không chỉ chứa dữ liệu mà còn chứa mô tả về cấu trúc bảng, thì các bảng đó sẽ được tạo lại (nếu đã có bất kỳ bảng nào trong lược đồ đích).
GO TO FULL VERSION