8.1 ความจำเป็นในการสำรองฐานข้อมูล

คุณได้เรียนรู้วิธีการสร้างสกีมาฐานข้อมูล ตาราง ดูพวกเขา เติมตารางเหล่านี้ด้วยข้อมูลและเปลี่ยนแปลง ตอนนี้คุณต้องเรียนรู้สิ่งที่สำคัญที่สุด - เพื่อทำการสำรองข้อมูล

ฐานข้อมูลแตกง่ายมาก ความจริงก็คือฐานข้อมูลมักจะอยู่ในสถานะของการเปลี่ยนแปลงอย่างต่อเนื่อง: มีการบันทึกและเพิ่มบางอย่างอย่างต่อเนื่อง

ลองนึกภาพว่าคุณมีแท็บเปิดอยู่ในเบราว์เซอร์ และคุณไม่ต้องการให้ข้อมูลในนั้นสูญหาย ยอมรับว่าหากคุณตัดสินใจที่จะไม่ปิดเลย นี่จะไม่ใช่ตัวเลือกที่ดีที่สุด ท้ายที่สุดแล้ว เบราว์เซอร์สามารถหยุดทำงาน ปิดได้โดยไม่ตั้งใจ คุณอาจสูญเสียแสงสว่างหรือคอมพิวเตอร์ของคุณไหม้ได้ Windows สามารถติดตั้งการปรับปรุงอื่น แต่คุณไม่มีทางรู้ว่าอะไร

ดังนั้น ฐานข้อมูลของคุณจึงเป็นแท็บเดียวกัน และเป็นเพียงเรื่องของเวลาเมื่อมีสิ่งผิดปกติเกิดขึ้นระหว่างการเขียนข้อมูลลงดิสก์ครั้งถัดไป ดังนั้นคุณต้องเรียนรู้วิธีการสำรองข้อมูลอย่างแน่นอน

การสำรองข้อมูลก็เหมือนกับการแปรงฟัน บริษัททั่วไปจะทำการสำรองข้อมูลของแต่ละฐานข้อมูลทุกคืน และเนื่องจากฮาร์ดไดรฟ์สามารถล้มเหลวและเกิดไฟไหม้ในศูนย์ข้อมูลได้ การสำรองข้อมูลมักจะถูกจัดเก็บไว้ในศูนย์ข้อมูลในส่วนต่าง ๆ ของโลก 2-3 ชุด

มีหลายวิธีในการสร้างข้อมูลสำรอง

ไฟล์สำรอง เนื่องจากข้อมูลฐานข้อมูลทั้งหมดถูกจัดเก็บไว้ในดิสก์เป็นชุดของไฟล์วิธีที่ง่ายที่สุดคือเพียงแค่คัดลอกไฟล์เหล่านี้ไปที่ใดที่หนึ่ง หรือก่อนอื่นให้เก็บถาวรไว้ในที่เก็บถาวรเดียว แล้วจึงคัดลอกไปที่ใดที่หนึ่ง

นี่เป็นวิธีที่เร็วที่สุดในการสำรองข้อมูล แต่ไฟล์นั้นต้องไม่เปลี่ยนแปลงในขณะที่กำลังคัดลอก/เก็บถาวร ฐานข้อมูลต้องถูกแช่แข็งในขณะที่กำลังสร้างสำเนา มิฉะนั้นสำเนาจะถูกบิดเบือน ท้ายที่สุด อาจมีสถานการณ์ที่ข้อมูลใหม่บางส่วนถูกบันทึกไว้ในฐานข้อมูล และบางส่วนยังไม่ได้

สำรองในรูปแบบของแบบสอบถาม SQL ดังที่คุณทราบแล้ว การเพิ่มและเปลี่ยนแปลงข้อมูลในฐานข้อมูลเซิร์ฟเวอร์ SQL จะแสดงเป็นแบบสอบถาม SQL เสมอ คุณจึงสามารถขอให้เซิร์ฟเวอร์ SQL บันทึกเนื้อหาของตารางหนึ่งๆ หรือหลายตารางลงในไฟล์ในรูปแบบของการสืบค้น SQL

วิธีนี้ช้ากว่าวิธีก่อนหน้า แต่สามารถใช้ในการถ่ายโอนข้อมูลระหว่างเซิร์ฟเวอร์ SQL จากผู้ผลิตรายอื่น

นอกจากนี้ ไม่จำเป็นต้องบันทึกข้อมูลทั้งหมดเสมอไป บ่อยครั้งที่คุณมีบริการจำนวนมากหรือข้อมูลที่ล้าสมัยในตารางของคุณ และคุณสามารถบอกเซิร์ฟเวอร์ SQL ว่าไม่ต้องบันทึก

นอกจากนี้ สำหรับตารางที่เก็บเหตุการณ์บางอย่างโดยอ้างอิงกับเวลา คุณสามารถเลือกเหตุการณ์ดังกล่าวสำหรับวันสุดท้ายและจัดเก็บเฉพาะเหตุการณ์เหล่านั้นได้

สาธารณูปโภคต่างๆ . บริษัทต่างๆ ยอมจ่ายเงินจำนวนมากเพื่อรับการรับประกันว่าข้อมูลของพวกเขาจะยังคงอยู่และปลอดภัย ดังนั้น บริษัทไอทีต่างๆ จึงเริ่มนำเสนอโซลูชั่นสำหรับทุกโอกาส ตัวอย่างเช่น มีโปรแกรมที่สามารถสร้างฐานข้อมูลสำรองในรูปแบบของไฟล์ และในขณะเดียวกันก็ไม่ต้องการให้ไฟล์เหล่านี้ไม่มีการเปลี่ยนแปลง

ตัวอย่างเช่น คุณสามารถติดตั้งไดรเวอร์พิเศษในระบบปฏิบัติการและติดตามว่ามีการเปลี่ยนแปลงเมื่อใด อะไร และที่ใด

8.2 การสำรองฐานข้อมูล

Workbench นั้นยอดเยี่ยมในการส่งออกและนำเข้าข้อมูลจากฐานข้อมูลที่ใช้งานได้ ในการทำเช่นนี้คุณเพียงแค่กดรายการเมนู: Server-> Data Export. และคุณจะเห็นสิ่งนี้:

ตอนนี้ขอเพิ่มคำอธิบาย:

คำสั่งคือ:

  1. ขั้นแรก เลือกสคีมาหรือสคีมาที่จะส่งออก
  2. จากนั้นทางด้านขวาเราจะระบุตารางสำหรับการสำรองข้อมูล
  3. ต่อไป เราต้องเลือกสิ่งที่เราจะส่งออก:
    • ข้อมูลเท่านั้น
    • โครงสร้างเท่านั้น (ตารางจะว่างเปล่า);
    • ข้อมูลและโครงสร้าง
  4. เลือกวิธีการบันทึกข้อมูล:
    • หนึ่งไฟล์สำหรับแต่ละตาราง
    • ไฟล์เดียวสำหรับทุกตาราง
  5. คุณยังสามารถเพิ่มรหัสการสร้างสคีมาที่ด้านบนของไฟล์ สิ่งนี้มีประโยชน์เมื่อถ่ายโอนข้อมูลระหว่าง DBMS ที่แตกต่างกัน

8.3 การสำรองสคีมาของตาราง

มาสำรองสคีมาเท่านั้น โดยไม่มีข้อมูลจริง

ฉันเลือก Dump Structure Only แล้วคลิก Start Export

และนี่คือสิ่งที่ฉันพบในไฟล์ที่ 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 และดูสิ่งที่พวกเขาให้:

และนี่คือสิ่งที่ฉันพบในไฟล์ที่ 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เมนู จากนั้นคุณจะเห็นภาพนี้:

ในกรณีของการส่งออก คุณจะได้รับพร้อมท์ให้เลือกแหล่งข้อมูลก่อน: กลุ่มของไฟล์หรือข้อมูลทั้งหมดในไฟล์เดียว

จากนั้นคุณต้องเลือกรูปแบบที่จะอัปโหลดข้อมูลที่ระบุ คุณสามารถเลือกโครงร่างที่มีอยู่หรือสร้างใหม่

สำคัญ! หากการสำรองข้อมูลของคุณไม่ได้มีเพียงข้อมูลเท่านั้น แต่ยังรวมถึงคำอธิบายของโครงสร้างตารางด้วย ตารางนั้นจะถูกสร้างขึ้นใหม่ (หากมีอยู่แล้วในสคีมาเป้าหมาย)