เครื่องมือการกู้คืนการถ่ายโอนข้อมูล MySQL - บันทึกการรวมกลุ่มนกแก้ว! ถ่ายโอนข้อมูลและกู้คืนฐานข้อมูล MySQL

การสร้างดัมพ์ฐานข้อมูล (สำรอง) มีความสำคัญมาก ดังนั้นฉันจึงแสดงความคิดเห็นพร้อมตัวอย่างสำหรับสิ่งนี้ ยูทิลิตี้ที่ยอดเยี่ยมเช่น mysqldump

mysqldump - ยูทิลิตี้ที่ช่วยให้คุณสามารถถ่ายโอนเนื้อหาของฐานข้อมูลหรือชุดฐานข้อมูลเพื่อสร้างสำเนาสำรองหรือส่งข้อมูลไปยังเซิร์ฟเวอร์ฐานข้อมูล SQL อื่น (ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์ MySQL) ดัมพ์จะมีชุดคำสั่ง SQL เพื่อสร้างและ/หรือเติมข้อมูลตาราง

mysqldump-u root -p -f name_database >

กับทีมนี้เราทำ การสำรองฐานข้อมูลข้อมูลภายใต้ชื่อ name_database ไปยังไดรฟ์ C ในไฟล์ mydb_backup_name_database.txt

คุณไม่จำเป็นต้องสร้างไฟล์ MySQL จะสร้างมันขึ้นมาเอง

mysql-u root -p -f name_database< C:\mydb_backup_name_database.txt

ด้วยคำสั่งนี้ เราจะนำเข้าข้อมูลสำรองจากไฟล์ C:\mydb_backup_name_database.txt

หมายเหตุ: -f, --force เป็นตัวเลือกที่ระบุให้ดำเนินการต่อแม้ว่าจะได้รับข้อผิดพลาด SQL เช่น ละเว้นข้อผิดพลาด เช่น หากมีแถวที่เหมือนกันอยู่แล้วในตาราง

เพื่อหลีกเลี่ยงการถามรหัสผ่าน คุณต้องเขียนทันทีหลัง -p นั่นคือโดยไม่ต้องเว้นวรรค ถ้าเป็นรหัสผ่าน พล.อจากนั้นตัวอย่างจะมีลักษณะดังนี้:

mysqldump-คุณรูท -p พล.อ-f name_database > C:\mydb_backup_name_database.txt

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

ลองพิจารณาเพิ่มเติม การตั้งค่าที่ดี mysqldump:

--ฐานข้อมูลอนุญาตให้ mysqldump รวมคำสั่ง CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME และ USE DBNAME ในสคริปต์การกู้คืน สิ่งนี้จะช่วยให้คุณสร้างฐานข้อมูลที่ใช้งานได้ตั้งแต่เริ่มต้น นั่นคือหากไม่ใช้ --databases จะถือว่าผู้ใช้กำลังกู้คืนฐานข้อมูลเดียวและระบุอย่างชัดเจนว่าควรวางข้อมูลที่เรียกคืนไว้ที่ใด หากการสำรองข้อมูลถูกสร้างขึ้นโดยมีเป้าหมายเพื่อสร้างสำเนาข้อมูลที่ทำงานได้อย่างสมบูรณ์ เช่น บนเซิร์ฟเวอร์ MySQL อื่น คุณจะต้องใช้คีย์นี้

--ฐานข้อมูลทั้งหมดช่วยให้คุณสร้างสำเนาของฐานข้อมูลทั้งหมดที่มีอยู่ในเซิร์ฟเวอร์ MySQL ที่กำหนด หากคุณต้องการทำสำเนาของฐานข้อมูลเพียงบางฐานข้อมูล คุณเพียงแค่ต้องระบุฐานข้อมูลเหล่านั้นโดยคั่นด้วยช่องว่างเมื่อเรียก mysqldump จาก บรรทัดคำสั่ง(ดูด้านบน);

สำคัญ --ช่วย- โปรแกรม mysqldump มีหลายเวอร์ชัน คุณสามารถดูว่าเวอร์ชันของคุณรองรับฟีเจอร์ใดบ้างโดยใช้คีย์นี้

--add-drop-table- สวิตช์ที่จะบังคับให้ mysqldump เพิ่มคำสั่ง drop table ให้กับสคริปต์ผลลัพธ์ก่อนที่จะสร้างตาราง ซึ่งจะช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดบางประการเมื่อกู้คืนฐานข้อมูลจากข้อมูลสำรอง แน่นอนคุณต้องคำนึงว่าตารางที่อยู่ในสำเนาการทำงาน (หากมีตารางที่มีชื่อเดียวกันอยู่ในข้อมูลสำรอง) จะถูกลบออกจากฐานข้อมูลหลักและสร้างใหม่จากข้อมูลสำรองก่อนที่จะกู้คืนจากข้อมูลสำรอง

--ไม่มีข้อมูล- เมื่อใช้คีย์นี้ คุณสามารถสร้างสำเนาของโครงสร้างตาราง/ฐานข้อมูลโดยไม่ต้องมีข้อมูลได้อย่างรวดเร็ว ตัวอย่างเช่น คุณได้สร้างตารางที่ซับซ้อนและต้องการบันทึกโครงสร้างของตารางไว้ใช้ในอนาคต แต่คุณไม่ต้องการข้อมูลที่อยู่ในตารางนี้ในสำเนาสำรอง

--ไฟล์ผลลัพธ์=...- สวิตช์นี้สามารถใช้เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ คุณสามารถใช้การเปลี่ยนเส้นทาง Unix ปกติด้วยคำสั่ง ">" หรือคุณสามารถใช้ปุ่มนี้ ใครชอบอะไร?

อีกมาก คำแนะนำที่เป็นประโยชน์เกี่ยวกับการใช้ mysqldump ในสภาพแวดล้อมการโฮสต์ ตามกฎแล้ว เมื่อใช้โฮสติ้ง ผู้ใช้จะมีข้อจำกัดบางประการ ตัวอย่างเช่น คุณไม่สามารถกู้ยืมเกินจำนวนที่กำหนดได้ หน่วยความจำกายภาพ(แรมแรม) mysqldump โดยค่าเริ่มต้นจะใส่ข้อมูลทั้งหมดที่ได้รับจากเซิร์ฟเวอร์ MySQL ลงในหน่วยความจำ จากนั้นจึงเขียนข้อมูลทั้งหมดลงดิสก์ ดังนั้นหากผู้ให้บริการอนุญาตให้คุณยืมเช่นหน่วยความจำ 30 MB และฐานข้อมูลที่คุณกำลังคัดลอกโดยใช้ mysqldump มีพื้นที่ 50 MB แน่นอนว่าจะเกิดข้อผิดพลาดที่นี่ - mysqldump จะไม่สามารถทำงานได้อย่างถูกต้อง และจะพังซึ่งจะแจ้งให้ทราบ หากต้องการ "บังคับ" mysqldump ให้เขียนข้อมูลลงดิสก์โดยตรง แทนที่จะเก็บไว้ในหน่วยความจำ แม้เป็นการชั่วคราว ให้ใช้คีย์ --เร็ว- นี่จะช่วยแก้ปัญหาได้

ต่อไปนี้เป็นตัวอย่างที่เป็นประโยชน์อีกสองสามตัวอย่าง:

mysqldump -u รูต -p พล.อ-f --default-Character-set=cp1251 DBNAME- gzip -c > filename.txt .gz

คุณสามารถแตกไฟล์เก็บถาวรดังกล่าวได้ด้วยคำสั่ง:

ชื่อไฟล์ gunzip.txt.gz

หากต้องการทราบว่าสำรองข้อมูลเมื่อใด คุณสามารถเขียนคำสั่งต่อไปนี้:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `วันที่ "+%Y-%m-%d"`.gz

และหากคุณต้องทำดัมพ์ด้วยการเข้ารหัสที่แตกต่างกัน ก็จะสะดวกที่จะใช้ตัวแปร:

ชุด ดีคาแรคเตอร์= utf8

ชุด DBNAME= ฝ่าฝืน

mysqldump -u รูต -p พล.อ-f --default-Character-set=$ ดีคาแรคเตอร์ $DBNAME- bzip2 -c > sql. $DBNAME.`วันที่ "+%Y-%m-%d"`.bz2

หากคุณต้องการลบไฟล์เก็บถาวรเก่าโดยอัตโนมัติ ให้ลองใช้ cron และ ค้นหาคำสั่งซึ่งมักจะพบได้ในระบบปฏิบัติการยูนิกซ์ วิ่งเป็นระยะๆ

หา~/directory-with-archives -name "*.gz" -mtime +7 -exec rm -f () \;

ดังนั้นคุณจะลบไฟล์เก็บถาวรที่ "เก่ากว่า" เกินเจ็ดวัน

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

ดังนั้นความสามารถในการดัมพ์ฐานข้อมูล ข้อมูลมายเอสคิวแอลสำคัญสำหรับนักพัฒนาเว็บทุกคน มันคืออะไร? นี่คือไฟล์ที่มีคำแนะนำสำหรับ ภาษา SQLเนื่องจากสำเนาฐานข้อมูลของคุณถูกสร้างขึ้นทั้งในเนื้อหาและโครงสร้าง คุณควรดัมพ์ฐานข้อมูล MySQL ในสถานการณ์ใดบ้าง:

  • การถ่ายโอนฐานข้อมูลไปยังเซิร์ฟเวอร์อื่น

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

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

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

จะดัมพ์ฐานข้อมูล MySQL ได้อย่างไร?

มี วิธีต่างๆสร้างดัมพ์ จากนั้นเราจะดูตัวเลือกหลัก:

  • การสร้างดัมพ์โดยใช้คอนโซล MySQL

ในกรณีนี้ หากต้องการสร้างดัมพ์ฐานข้อมูล ให้ใช้บรรทัดคำสั่งหรือคอนโซล MySQL โดยคุณต้องป้อนคำสั่ง mysqldump -user -ppass db_name > file_to_save ในกรณีนี้ ผู้ใช้คือชื่อของผู้ใช้ฐานข้อมูลที่มีสิทธิ์เพียงพอในการสร้างดัมพ์ pass คือรหัสผ่านสำหรับฐานข้อมูล db_name คือชื่อของฐานข้อมูลที่ต้องการ และแทนที่จะเป็น file_to_save คุณต้องระบุชื่อของไฟล์ ที่ที่การถ่ายโอนข้อมูลจะถูกบันทึกไว้

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

  • การสร้างดัมพ์ฐานข้อมูลโดยใช้ phpMyAdmin

หากคุณต้องการใช้ซอฟต์แวร์เพิ่มเติม คุณสามารถดัมพ์ฐานข้อมูลได้ โดยใช้ PHPการใช้งาน เช่น phpMyAdmin โดยทำตามขั้นตอนเหล่านี้:

  1. เข้าสู่ระบบ phpMyAdmin
  2. เลือก ฐานที่จำเป็นข้อมูลจากรายการทั่วไป
  3. ล็อกอินเข้าสู่ฐานข้อมูลที่เลือก
  4. หลังจากการอนุญาต คอลัมน์ด้านซ้ายจะมีฐานข้อมูลและข้อมูลบริการที่เกี่ยวข้อง ตอนนี้คุณต้องเลือกฐานข้อมูลของคุณอีกครั้ง
  5. ไปที่แท็บ "ส่งออก" จากนั้นเปิดใช้งานการตั้งค่าบางอย่าง ได้แก่:

    เพิ่มวางตาราง/มุมมอง/ขั้นตอน/ฟังก์ชัน/เหตุการณ์

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

    แพ็คด้วยซิป

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

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

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

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

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

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

ตั้งชื่อ utf8; วางฐานข้อมูล `mydb`; สร้างฐานข้อมูล `mydb` ชุดอักขระเริ่มต้น utf8; ใช้ `mydb`; ตั้งค่า SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; ตั้งค่าการส่งอัตโนมัติ=0; SET Foreign_key_checks=0; SET Unique_checks=0; แหล่งที่มา /path/to/db_dump.sql; ให้สัญญา; SET คอมมิตอัตโนมัติ=1; SET Foreign_key_checks=1; SET Unique_checks=1;

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

ลองคิดดูสิ รหัสนี้ตามลำดับ

ตั้งชื่อ utf8;บอกว่าการแลกเปลี่ยนข้อมูลจะเกิดขึ้นในการเข้ารหัส UTF-8 และนั่นคือสิ่งที่อยู่ ไฟล์ต้นฉบับดัมพ์ฐานข้อมูล และนี่คือสิ่งที่ฐานข้อมูลสุดท้ายจะมี

วางฐานข้อมูล `mydb`;และ สร้างฐานข้อมูล `mydb` ชุดอักขระเริ่มต้น utf8;ดำเนินการ การทำลายฐานข้อมูลและการสร้างในภายหลังด้วยการเข้ารหัสเริ่มต้น UTF-8 เป็นที่ชัดเจนว่าการดำเนินการนี้จะลบตารางและข้อมูลทั้งหมดในตาราง แต่จะทำให้เรามั่นใจว่าฐานข้อมูลผลลัพธ์จะสอดคล้องกับข้อมูลในไฟล์ดัมพ์โดยสมบูรณ์

ใช้ `mydb`;บ่งชี้ว่าควรใช้ฐานข้อมูลเฉพาะนี้สำหรับคำสั่งทั้งหมดจากไฟล์ดัมพ์ (ตรวจสอบไฟล์ดัมพ์ว่ามีคำสั่งนี้อยู่หรือไม่ ซึ่งระบุฐานข้อมูลอื่นเพื่อหลีกเลี่ยงความสับสน)

ตั้งค่า SQL_MODE="NO_AUTO_VALUE_ON_ZERO";ปิดใช้งานการเพิ่มตัวนับการเพิ่มอัตโนมัติเมื่อเขียนค่า 0 ลงในฟิลด์การเพิ่มอัตโนมัติ โดยค่าเริ่มต้น เมื่อเขียนลงในฟิลด์ดังกล่าว ค่าว่างหรือ 0 จะเพิ่มขึ้นโดยอัตโนมัติ และถึงแม้จะมีค่าเป็น 0 ในฟิลด์ส่วนเพิ่มอัตโนมัติก็ตาม แนวปฏิบัติที่ดีที่สุดบางครั้งมันก็ยังเกิดขึ้นว่ามีบรรทัดดังกล่าวอยู่ในดัมพ์ (ฉันพบสิ่งที่คล้ายกันในดัมพ์จาก Magento) นอกจากนี้ยังคุ้มค่าที่จะแทนที่สิ่งที่ mysqldump รวมไว้มาระยะหนึ่งแล้ว คำสั่งนี้โดยค่าเริ่มต้นในการถ่ายโอนข้อมูล

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

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

SET Unique_checks=0;ปิดใช้งานการตรวจสอบเอกลักษณ์ของคีย์รอง ซึ่งสามารถเร่งกระบวนการนำเข้าให้เร็วขึ้นได้อีกครั้ง

และในที่สุดทีมหลักที่วางแผนไว้ทั้งหมดนี้ - แหล่งที่มา /path/to/db_dump.sql;นำเข้าดัมพ์ฐานข้อมูล mysql โดยตรง ไฟล์ที่ระบุ- เส้นทางไปยังไฟล์อาจเป็นแบบสัมบูรณ์หรือสัมพันธ์กับไดเร็กทอรีที่คุณใช้เข้าถึงคอนโซล mysql

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

โดยส่วนใหญ่ คุณสามารถจัดการฐานข้อมูลของคุณได้อย่างง่ายดายจากเครื่องมือเว็บ เช่น PHPMyAdmin น่าเสียดายที่มีบางครั้งที่จำเป็นต้องกู้คืน จำนวนมากข้อมูล. สิ่งนี้ไม่สามารถทำได้ผ่าน PHPMyAdmin เนื่องจากอยู่นอก PHP (ไม่อนุญาตให้ใช้เวลารันสคริปต์สูงสุดหรือไม่สามารถโหลดได้ ที่เก็บถาวรขนาดใหญ่จากฐานข้อมูล)

การใช้ MySQL จากบรรทัดคำสั่ง

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

วิธีสำรองฐานข้อมูล MySQL

MySQL มียูทิลิตี้ชื่อ "mysqldump" โดยพื้นฐานแล้ว เครื่องมือนี้จะสร้างไฟล์แฟลตที่มีคำสั่ง MySQL เพื่อซ่อมแซมฐานข้อมูล นี่คือตัวอย่างบางส่วนของการใช้ mysqldump:

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

# mysqldump -u ชื่อผู้ใช้ -p DB_name > your_file.sql

สิ่งนี้จะสร้างไฟล์ที่มีคำสั่ง MySQL ทั้งหมดสำหรับสร้างตารางและกู้คืนข้อมูล ฐานที่มีอยู่ข้อมูล. หากฐานข้อมูลเป้าหมายมีตารางที่มีชื่อเดียวกัน ตารางเหล่านั้นจะถูกเขียนทับ หากคุณต้องการให้ตารางที่มีอยู่ถูกทิ้งและนำกลับมาใช้ใหม่ ให้ใช้ตัวเลือก "เพิ่ม-วาง-ตาราง":

# mysqldump --add-drop-table -u ชื่อผู้ใช้ -p DB_name > your_file.sql

นอกจากนี้ คุณสามารถเลือกสิ่งนี้เป็นทางเลือก:

# mysqldump --add-drop-databases -u ชื่อผู้ใช้ -p DB_name > your_file.sql

สำรองฐานข้อมูลหลาย ๆ

คุณสามารถทำสำเนาของฐานข้อมูลหลายรายการเป็นไฟล์เดียวได้โดยใช้ตัวเลือกฐานข้อมูล:

# mysqldump -u ชื่อผู้ใช้ -p -- ฐานข้อมูล your_database1 your_database2 your_database3 > your_file.sql

การสร้างการสำรองข้อมูลฐานข้อมูลทั้งหมดสามารถทำได้โดยใช้ตัวเลือกฐานข้อมูลทั้งหมด:

# mysqldump -u ชื่อผู้ใช้ -p -- ฐานข้อมูลทั้งหมด > your_file.sql

การสำรองตาราง InnoDB

หากฐานข้อมูลของคุณมีคอลัมน์ InnoDB คุณจะต้องปิดการใช้งาน Referential Integrity เมื่อกู้คืนข้อมูล น่าเสียดายที่ไม่สามารถทำได้โดยใช้ ยูทิลิตี้ mysqldump- ในการดำเนินการนี้ คุณจะต้องเปิดไฟล์เองและเพิ่ม:

ตั้งค่า FOREIGN_KEY_CHECKS = 0;
... และเพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายของไฟล์:
ตั้งค่า FOREIGN_KEY_CHECKS = 1;

การบีบอัดไฟล์ MySQL Dump

หากคุณใช้ mysqldump ใน เปลือกลินุกซ์คุณสามารถบีบอัดผ่าน Gzip เพื่อบีบอัดไฟล์ดัมพ์ (สมมติว่าคุณติดตั้ง gzip แล้ว):

# mysqldump -u ชื่อผู้ใช้ -p your_database_name | gzip -c your_file.sql.gz

การกู้คืนจากข้อมูลสำรอง MySQL

เพื่อฟื้นฟู สำเนาสำรองสร้างด้วย mysqldump คุณจะต้องใช้คำสั่ง MySQL หากไฟล์ของคุณ ดัมพ์ MySQLไม่มี "สร้างฐานข้อมูล" โอ้ คุณสามารถใช้คำสั่งต่อไปนี้:

# mysql -u ชื่อผู้ใช้ -p your_database_name< your_file.sql

แต่ถ้าสำเร็จ ให้ใช้คำสั่งเดียวกันโดยไม่ระบุชื่อฐานข้อมูล:

# mysql -u ชื่อผู้ใช้ -p< your_file.sql

มากกว่า ข้อมูลรายละเอียดเกี่ยวกับ mysqldump สามารถพบได้บนเว็บไซต์ MySQL อย่างเป็นทางการ

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

# mysql-ขึ้น< mysql_dump.sql.

ให้แทนที่ชื่อผู้ใช้แทน ฉันจะทำการกู้คืนจากรูทเป็นการส่วนตัว และใน mysql_dump, sql จริงๆ แล้ว ดัมพ์ถูกสร้างขึ้น mysqldumpคุณประโยชน์. ตัวเลือก -p ระบุการอนุญาตด้วยรหัสผ่าน หลังจากกด Enter ระบบจะขอให้คุณป้อนรหัสผ่าน นั่นคือทั้งหมดจริงๆ คุณสามารถทำการดัมพ์ด้วยคำสั่ง:

# mysqldump-u root -p -f ฐานข้อมูลชื่อ > file_with_dump.sql

ที่นี่พารามิเตอร์ -f Database_name ระบุชื่อของฐานข้อมูลที่เรากำลังบันทึก หากคุณต้องการทุกอย่าง เราจะแทนที่ด้วย --ฐานข้อมูลทั้งหมดตัวเลือกนี้จะระบุการบันทึกฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ เพื่อไม่ให้ป้อนรหัสผ่านทุกครั้ง คุณสามารถระบุโดยตรงในคำสั่ง (ซึ่งจำเป็นหากคุณกำลังถ่ายโอนข้อมูล cron จากสคริปต์) อย่างไรก็ตามจากมุมมองด้านความปลอดภัย คำถามเกิดขึ้นที่นี่ โดยเฉพาะอย่างยิ่งหาก รหัสผ่านคือรูทสำหรับกล้ามเนื้อ ทีนี้ ถ้ากล้ามเนื้อเข้าใจรหัสผ่าน md5 เป็นอย่างน้อย... อย่างไรก็ตาม ไม่ใช่ความจริงที่ว่าเขาไม่เข้าใจ ฉันแค่อาจจะไม่รู้ :)

ผู้เขียน

อเล็กซ์ ราซกิบาลอฟ

คนบ้า วัยไม่แน่นอน ชอบถูกข่มเหง ไม่ไว้วางใจในทางพยาธิวิทยา เห็นแก่ตัว เผด็จการ การวินิจฉัยทุติยภูมิ - โปรแกรมเมอร์และผู้ช่วย เป็นเจ้าของ ภาษาอังกฤษในระดับประมาณการสนทนาห่วยๆ ยังคุ้นเคยกับภาษาอื่นๆ บ้าง เขาสนใจทุกคนและทุกสิ่งเนื่องจากความรู้ของเขาในสาขาใด ๆ นั้นเป็นเพียงผิวเผินและตื้นเขิน ตัวละครไม่สามารถควบคุมได้ ความแรง - 55 องศา