การกู้คืนดัมพ์ที่สร้างโดย mysqldump การดัมพ์ฐานข้อมูล MySQL และส่งออกข้อมูลไปยังคอนโซล

ถ่ายโอนข้อมูลและกู้คืนฐานข้อมูล ข้อมูลมายเอสคิวแอลทำได้ค่อนข้างง่ายและสะดวกในการดำเนินการจากระยะไกลผ่าน SSH หรือผ่านคอนโซลเซิร์ฟเวอร์โดยตรง สามารถทำได้โดยใช้โปรแกรม Putty/Kitty จากระยะไกล คุณยังสามารถดำเนินการตัวอย่างด้านล่างบน Windows ได้โดยการเรียกใช้บรรทัดคำสั่ง ' คำสั่ง- ด้านล่างนี้คือตัวอย่างเกี่ยวกับวิธีสร้างดัมพ์ฐานข้อมูล MySQL แล้วกู้คืนหากจำเป็น เช่น สำหรับเว็บไซต์ของคุณ ร้านค้าออนไลน์ หรือโปรเจ็กต์อื่นๆ

การสร้างการถ่ายโอนข้อมูลฐานข้อมูล MySQL

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

# สำรองหนึ่งฐานข้อมูลไปยังไฟล์ dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # เปิด การถ่ายโอนข้อมูลหน้าต่างวิธีที่ดีที่สุดคือสร้างคำสั่งที่แตกต่างออกไปเล็กน้อยเพื่อป้องกัน # การเขียนทับบรรทัดดัมพ์โดยไม่ตั้งใจ เนื่องจากการแปลงอักขระขึ้นบรรทัดใหม่ "\r\n" เป็น "\n" mysqldump -uroot -p your_base -r dump_file_utf8.sql # หากคุณต้องการการสำรองข้อมูล ของแต่ละตารางเท่านั้น ไม่ใช่ฐานข้อมูลทั้งหมด # (ระบุชื่อตารางโดยคั่นด้วยช่องว่างหลังชื่อฐานข้อมูล) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # หากคุณต้องการสร้างการสำรองข้อมูลเฉพาะฐานข้อมูล โครงสร้างที่ไม่มีข้อมูล mysqldump -uroot -p -- no-data your_base > dump_file.sql # สำรองฐานข้อมูลทั้งหมดไปยังไฟล์ current_date.gz mysqldump -uroot -p --all_databases | gzip -c > "date "+%Y-%m-%d"".gz # การสำรองข้อมูล โดยที่ INSERT แยกต่างหากจะถูกสร้างขึ้นสำหรับแต่ละระเบียน # และมีการบ่งชี้ที่ชัดเจนของการเข้ารหัสฐานข้อมูล UTF-8 mysqldump -uroot -p --default- character-set=utf8 your_base --extend-insert=FALSE | gzip -c > "วันที่ "+%Y-%m-%d"".gz

# สำรองหนึ่งฐานข้อมูลไปที่ dump_file.sql

mysqldump - uroot - p your_base > dump_file ฐานข้อมูล SQL

# บน Windows วิธีที่ดีที่สุดคือสร้างดัมพ์โดยใช้คำสั่งป้องกันที่แตกต่างออกไปเล็กน้อย

# การเขียนทับบรรทัดดัมพ์โดยไม่ตั้งใจเนื่องจากการแปลงอักขระขึ้นบรรทัดใหม่ "\r\n" เป็น "\n"

mysqldump - uroot - p your_base - r dump_file_utf8 ฐานข้อมูล SQL

# หากคุณต้องการสำรองข้อมูลเฉพาะตารางเดียว ไม่ใช่ทั้งฐานข้อมูล

# (ระบุชื่อตารางโดยคั่นด้วยช่องว่างหลังชื่อฐานข้อมูล)

mysqldump - uroot - p your_base TABLE1 TABLE2 TABLE3 > dump_file ฐานข้อมูล SQL

# หากคุณต้องการสำรองข้อมูลเฉพาะโครงสร้างฐานข้อมูลโดยไม่มีข้อมูลเอง

mysqldump - uroot - p -- ไม่ - ข้อมูล your_base > dump_file ฐานข้อมูล SQL

# สำรองฐานข้อมูลทั้งหมดไปที่ไฟล์ current_date.gz

mysqldump - uroot - p -- ฐานข้อมูลทั้งหมด | gzip - c > "date "+%Y-%m-%d"" . กซ

# การสำรองข้อมูลซึ่งมีการสร้าง INSERT แยกต่างหากสำหรับแต่ละรายการ

# และระบุการเข้ารหัสฐานข้อมูล UTF-8 อย่างชัดเจน

mysqldump - uroot - p - ค่าเริ่มต้น - อักขระ - set = utf8 your_base - ขยาย - แทรก = FALSE | gzip - c > "date "+%Y-%m-%d"" . กซ

ในตัวอย่างข้างต้น ยูทิลิตี้นี้ใช้เพื่อสร้างการสำรองข้อมูล mysqldumpซึ่งรวมอยู่ใน mysql ต่อไปนี้เป็นพารามิเตอร์สำหรับสร้างการสำรองฐานข้อมูลซึ่งเราจะตรวจสอบโดยละเอียดเพิ่มเติม:

  • -คุณ– พารามิเตอร์ระบุการเข้าสู่ระบบที่จะใช้เชื่อมต่อกับฐานข้อมูล ในตัวอย่าง เราใช้การเข้าสู่ระบบรูท ซึ่งจะต้องระบุในพารามิเตอร์นี้โดยไม่มีช่องว่าง! เป็นผลให้ดูเหมือนว่า -uroot
  • -พี– พารามิเตอร์ระบุว่าคุณต้องป้อนรหัสผ่านสำหรับการเข้าสู่ระบบที่ระบุ เราปล่อยว่างไว้ซึ่งเป็นผลมาจากการที่คุณจะต้องป้อนรหัสผ่านหลังจากกด "Enter" เมื่อดำเนินการคำสั่ง อย่างไรก็ตาม คุณสามารถระบุรหัสผ่านได้ที่นี่ เช่นเดียวกับในพารามิเตอร์การเข้าสู่ระบบ โดยไม่ต้องเว้นวรรคหลัง -p อย่างไรก็ตาม วิธีนี้ไม่ปลอดภัย เนื่องจากคอนโซลจะบันทึกคำสั่งของคุณลงในไฟล์บันทึก และหากคุณไม่ได้ล้างคำสั่งเป็นประจำ ผู้โจมตีอาจถูกมองได้
  • ฐานของคุณ– แทนที่จะใช้บรรทัดนี้ในตัวอย่าง คุณต้องระบุชื่อจริงของฐานข้อมูลที่คุณกำลังสร้างการสำรองข้อมูล
  • > – ตัวดำเนินการที่แสดงทิศทางของการกระทำ เช่น ราวกับว่าคุณกำลังจะเขียนจากฐานข้อมูลไปยังไฟล์
  • dump_file.sql– นี่คือชื่อไฟล์ .slq ของคุณที่คุณต้องการบันทึกฐานข้อมูลของคุณ โดยจะมีช่องว่างหลังตัวดำเนินการ '>' คุณสามารถระบุชื่ออื่นได้ ตัวอย่างเช่นเพื่อให้ระบบแทรกชื่อโดยอัตโนมัติ เวลาปัจจุบันเพียงระบุบรรทัดเช่น:

    "วันที่ "+%Y-%m-%d""

    "วันที่ "+%Y-%m-%d""


    หลังจากบรรทัดนี้ในตัวอย่างจะมีการระบุนามสกุลไฟล์ ' .gz- เป็นผลให้ไฟล์เช่น ' 15-11-2557.gz‘.

    ความสนใจ!หากคุณระบุเฉพาะชื่อไฟล์ ไฟล์นั้นจะถูกบันทึกไว้ในไดเร็กทอรีเดียวกันกับที่คุณกำลังดำเนินการ คำสั่งนี้- เหล่านั้น. หากคุณเห็นสิ่งนี้ที่พรอมต์คำสั่ง # , ที่ไหน root@dvsนี่คือชื่อล็อกอินและเซิร์ฟเวอร์ ไฟล์จะถูกสร้างขึ้นในไดเร็กทอรี /บ้าน- หากต้องการเปลี่ยนการบันทึกไฟล์เป็นพาธอื่น ให้ระบุแทนชื่อ เส้นทางเต็มเพื่อบันทึกไฟล์ เช่น: /var/www/backup/dump_file.sql.

  • ในตัวอย่างที่สอง แทนที่จะเป็นตัวดำเนินการ ‘ > มีการใช้ ' โอเปอเรเตอร์ ' | ' ซึ่งบ่งบอกถึงความจำเป็นในการดำเนินการ คำสั่งเพิ่มเติม gzip พร้อมพารามิเตอร์ ' -ค' ซึ่งช่วยให้คุณสามารถแพ็กดัมพ์ลงในไฟล์เก็บถาวรได้ทันที จากนั้นจึงบันทึกลงในไฟล์เช่น ' 15-11-2557.gz' ตามที่ผู้ดำเนินการรายงาน ' > ‘.
  • พารามิเตอร์ –ไม่มีข้อมูลอนุญาตให้คุณถ่ายโอนข้อมูลเฉพาะโครงสร้างฐานข้อมูลโดยไม่มีข้อมูลเอง ค่อนข้างมีประโยชน์ในบางกรณีเมื่อไม่ต้องการข้อมูล
  • ตัวเลือก –ค่าเริ่มต้นชุดอักขระ=utf8และ –ขยาย-แทรก=FALSE- วิธีแรกช่วยให้คุณระบุการเข้ารหัสที่ใช้โดยฐานข้อมูลนี้อย่างชัดเจน เพื่อหลีกเลี่ยงการบันทึกฐานข้อมูลด้วยการเข้ารหัสที่ไม่ถูกต้อง แทนที่จะเป็น utf8 คุณสามารถระบุการเข้ารหัสอื่น ๆ ได้ เช่น cp1251 พารามิเตอร์ที่สองช่วยให้คุณระบุว่าต้องสร้างคำสั่ง INSERT แยกต่างหากสำหรับแต่ละระเบียนเมื่อส่งออก ในบางกรณี อาจจำเป็นเมื่อกู้คืนข้อมูลจากดัมพ์บางส่วน
  • การคืนค่าฐานข้อมูลจากไฟล์ MySQL Dump

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

./mysql -u -พี ชม < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

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

Mysql -uroot -p

(โดยที่ root คือชื่อผู้ใช้ผู้ดูแลระบบของเราสำหรับ MySQL) และหลังจากเชื่อมต่อกับฐานข้อมูลแล้ว เราจำเป็นต้องมีคำสั่งเพื่อสร้างฐานข้อมูลและอ่านไฟล์:

สร้างฐานข้อมูล new_db; ใช้ new_db; - ไฟล์ดัมพ์.sql

รายละเอียดจะเปลี่ยนไปขึ้นอยู่กับตัวเลือกที่ใช้ในการสร้างไฟล์ดัมพ์

2018-12-18T00:00Z

คุณเพียงแค่ต้องเรียกใช้สิ่งนี้:

mysql -p -u< db_backup.dump

หากดัมพ์มีหลายฐานข้อมูล คุณควรละชื่อฐานข้อมูล:

mysql -p -u< db_backup.dump

หากต้องการรันคำสั่งเหล่านี้ ให้เปิดพรอมต์คำสั่ง (บน Windows) และซีดีลงในไดเร็กทอรีที่ mysql.exe มีไฟล์ปฏิบัติการ mysql.exe (คุณอาจต้องคิดสักหน่อย ขึ้นอยู่กับว่าคุณติดตั้ง mysql อย่างไร เช่น แบบสแตนด์อโลน หรือเป็นส่วนหนึ่งของแพ็คเกจเช่น WAMP) เมื่อคุณอยู่ในไดเร็กทอรีนี้ คุณควรป้อนคำสั่ง

2018-12-25T00:00Z

มันควรจะง่ายเหมือนกับการรันสิ่งนี้:

Mysql -u -พี< db_backup.dump

หากดัมพ์มีฐานข้อมูลเดียว คุณอาจต้องเพิ่มบรรทัดที่ด้านบนของไฟล์:

ใช้ ;

หากเป็นการดัมพ์ของฐานข้อมูลจำนวนมาก คำสั่ง use ก็จะมีอยู่แล้ว

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

2019-01-01T00:00Z

คำสั่งบรรทัดเดียวเพื่อกู้คืน SQL ที่สร้างขึ้นจาก mysqldump

Mysql -u -พี อี "แหล่งที่มา

2019-01-08T00:00Z

ฉันมีไฟล์ดัมพ์ขนาด 200MB ที่สร้างบน Linux เพื่อกู้คืนบน Windows ด้วย mysql 5.5 ความสำเร็จมากขึ้นกับ

ไฟล์ต้นฉบับ .sql

แนวทางของทีม สตริง mysqlกว่าการใช้

mysql< file.sql

เข้าใกล้ใน บรรทัดคำสั่งทำให้เกิดข้อผิดพลาด "เซิร์ฟเวอร์เหลือ" ในปี 2549 (บน windows)

น่าแปลกที่บริการที่สร้างขึ้นระหว่างการติดตั้ง (mysql) อ้างถึงไฟล์ my.ini ที่ไม่มีอยู่ที่นั่น ฉันคัดลอกไฟล์ตัวอย่าง "ใหญ่" ลงใน my.ini ซึ่งฉันได้แก้ไขแล้วโดยเพิ่มตามที่แนะนำ

ค่านิยมของฉัน

Max_allowed_packet = 64M Interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

เช่น ตัวอย่างที่เป็นรูปธรรมคำตอบก่อนหน้า:

ฉันจำเป็นต้องกู้คืนข้อมูลสำรองเพื่อที่จะนำเข้า/ถ่ายโอนข้อมูลไปได้ เซิร์ฟเวอร์ SQL- ฉันติดตั้ง MySql เท่านั้น แต่ไม่ได้ลงทะเบียนเป็นบริการหรือเพิ่มลงในเส้นทางของฉันเนื่องจากฉันไม่จำเป็นต้องเรียกใช้

ฉันใช้ วินโดวส์เอ็กซ์พลอเรอร์เพื่อวางไฟล์ดัมพ์ของฉันใน C:\code\dump.sql จากนั้นเปิด MySql จากรายการเมนู Start สร้าง DB จากนั้นรันคำสั่ง source ด้วยพาธแบบเต็มดังนี้:

Mysql> สร้างฐานข้อมูล temp mysql> ใช้ temp mysql> ซอร์ส c:\code\dump.sql

โดยส่วนใหญ่ คุณสามารถจัดการฐานข้อมูลของคุณได้อย่างง่ายดายจากเครื่องมือเว็บ เช่น 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 อย่างเป็นทางการ

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

ตั้งชื่อ 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 จะเปลี่ยนค่าของตัวแปรในบริบทของเซสชันปัจจุบันเท่านั้น

จากผู้เขียน:ฉันไปเยี่ยมเพื่อนคนหนึ่ง และภรรยาของเขาก็มีอาการตีโพยตีพาย นกแก้วก็กรีดร้อง: “Mai-es-qu-el-dump” เพื่อนเองก็นอนปวดหัวและมีความปรารถนาอย่างบ้าคลั่งที่จะค้นหาว่าการฟื้นตัวจากการถ่ายโอนข้อมูลเกิดขึ้นใน MySQL ได้อย่างไร เพื่อรักษาหัวของคนที่ “โง่เขลา” ที่เหลือ เส้นประสาทของภรรยาของพวกเขา และสายเสียงของนกแก้ว เรามาพิจารณารายละเอียดเพิ่มเติมในหัวข้อนี้

อันตราย "รวมทุกอย่าง"

เพื่อนของฉันก็เหมือนกับมือใหม่หลายๆ คนที่ใช้ แพคเกจซอฟต์แวร์"รวมทุกอย่างแล้ว" สิ่งที่พบบ่อยที่สุดใน RuNet คือ ชุดสุภาพบุรุษ"เดนเวอร์". และด้วยความที่ “ซับซ้อน” (ได้แก่ เซิร์ฟเวอร์ท้องถิ่นเชลล์สำหรับการทำงานกับ DBMS เซิร์ฟเวอร์ MySQL) เขาผลักดัน "สุภาพบุรุษ" เหล่านี้ไปสู่จุดวิกลจริต

บัญชีรายชื่อของเดนเวอร์มีเพียงไม่กี่รายการเท่านั้น สาธารณูปโภคมาตรฐานสำหรับการทำงานกับ MySQL และเนื่องจากเราทุกคน คนสมัยใหม่จากนั้นสำหรับข้อมูลที่ขาดหายไป (เพื่อทำความเข้าใจแก่นแท้ของบางสิ่งบางอย่าง) เราจะไปที่อินเทอร์เน็ต แต่เนื้อหาที่เผยแพร่บนอินเทอร์เน็ตไม่ได้บอกว่าในแพ็คเกจ MySQL มาตรฐานจำเป็นต้องใช้ยูทิลิตี้พิเศษเพื่อดำเนินการชุดคำสั่งบางชุด ตัวอย่างเช่น หากต้องการสร้างดัมพ์ของฐานข้อมูล MySQL คุณต้องมีโปรแกรม MySQLDump

ดังนั้น หากคุณใช้ Denwer เพื่อฝึกฝนและทดสอบโค้ดของคุณด้วย และการสืบค้นที่อธิบายไว้ในเอกสารนี้จะไม่ถูกดำเนินการบนบรรทัดคำสั่ง ให้ไปที่: D:\Webserver\usr\local\mysql-5.5\bin

และดูว่ายูทิลิตี้ใดบ้างสำหรับการทำงานกับเซิร์ฟเวอร์ DBMS ที่มีให้ "ออนบอร์ด" เครื่องไคลเอนต์- ขอย้ำอีกครั้งว่าวันนี้เราต้องการโปรแกรม MySQLDump

การทำงานกับ MySQLDump

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

ยูทิลิตี้นี้ไม่มีอินเทอร์เฟซของตัวเอง ดังนั้นคุณจึงใช้งานได้ผ่าน CMD มาตรฐานที่รวมอยู่ในนั้น ชุดมาตรฐาน โปรแกรมวินโดวส์(เปิดตัวผ่านเมนู Start) และตอนนี้ทีละขั้นตอน:

ก่อนอื่นเราไปที่ดิสก์เสมือน (สร้างขึ้นหลังจากเปิดตัว Apache ซึ่งเป็นส่วนหนึ่งของเดนเวอร์)

หากคุณไม่ใช้ชุด "สุภาพบุรุษ" ก็ไม่ได้หมายความว่าคุณไม่ใช่สุภาพบุรุษ คุณเพียงแค่ต้องข้ามคำแนะนำขั้นตอนนี้ไป

จากนั้นใช้คำสั่ง cd (เปลี่ยนไดเรกทอรี) ระบุเส้นทางไปยังโฟลเดอร์ที่ติดตั้ง MySQL ในเดนเวอร์ ไดเร็กทอรีนี้ตั้งอยู่ที่นี่: Z:\usr\local\mysql-5.5\bin

เมื่อทำการติดตั้งระบบจัดการฐานข้อมูลแยกกัน โฟลเดอร์นี้จะอยู่ที่: C:\Program Files...

เนื่องจากเราอยู่ในดิสก์ (เสมือน) ที่ต้องการแล้ว เราเพียงต้องระบุส่วนหนึ่งของเส้นทางหลังคำสั่ง cd:

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

mysqldump -u ชื่อผู้ใช้ -p รหัสผ่าน name_database > สำรอง-database.sql

mysqldump - ชื่อผู้ใช้ - p รหัสผ่าน name_database > สำรอง - ฐานข้อมูล ฐานข้อมูล SQL

ตัวอย่างการใช้คำสั่ง:

mysqldump -uroot wordpress>Z:\home\localhost\dump\wp_copy.sql

mysqldump - uroot wordpress > Z:\home\localhost\dump\wp_copy. ฐานข้อมูล SQL

ด้วยเหตุนี้ เราจึงได้รับการดัมพ์ฐานข้อมูลของไซต์ WordPress:

การถ่ายโอนข้อมูลคืออะไร?

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

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

ทดสอบการฟื้นตัว

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

ตอนนี้เรามาสร้างการถ่ายโอนข้อมูล MySQL ของฐานข้อมูลที่เราสนใจกันดีกว่า สำรองข้อมูลเอาไว้ที่เดียวกันครับ รหัสคำขอ:

mysqldump -uroot อัตโนมัติ>Z:\home\localhost\dump\auto_copy.sql

mysqldump - uroot อัตโนมัติ > Z:\home\localhost\dump\auto_copy. ฐานข้อมูล SQL

ไปที่โฟลเดอร์ดัมพ์เราจะเห็นว่ายูทิลิตี้ได้สร้างสำเนา "auto_copy"