กำลังดาวน์โหลดดัมพ์ MySQL จากบรรทัดคำสั่ง


306

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



mysqldumpคือสิ่งที่คุณกำลังมองหา
Faruk Sahin

1
@AZinkey ฉันคิดว่าคุณจะพบคำตอบที่ยอมรับได้ของสำเนาโพสต์นั้นและวางเนื้อหาของคำตอบของฉัน (คำต่อคำ) ลงในส่วนแรกของคำตอบของพวกเขาในเดือนต่อมา ...
nickhar

คำตอบ:


656

คุณสามารถทำได้โดยใช้ฟังก์ชั่นบรรทัดคำสั่งmysqldump

ตัวอย่างเช่น:

หากเป็นฐานข้อมูลทั้งหมดให้ทำดังนี้:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

ถ้าเป็น DBs ทั้งหมดแล้ว:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

หากเป็นตารางเฉพาะภายในฐานข้อมูลให้ทำดังนี้:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

คุณยังสามารถบีบอัดเอาต์พุตโดยใช้ gzip (ถ้าฐานข้อมูลของคุณใหญ่มาก):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

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

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

มันควรจะวาง.sqlไฟล์ในโฟลเดอร์ที่คุณเรียกใช้บรรทัดคำสั่ง

แก้ไข:อัปเดตเพื่อหลีกเลี่ยงการรวมรหัสผ่านในคำสั่ง CLI ใช้-pตัวเลือกโดยไม่มีรหัสผ่าน มันจะพร้อมท์ให้คุณและไม่บันทึก


1
คำตอบของคุณพร้อมกับstackoverflow.com/questions/2989724/… - ควรทำสิ่งที่เขาขอเพราะเขารวมถึงเขาต้องการมันดาวน์โหลด มันเป็นอย่างนั้นหรือwgetหรือscpจะต้องเรียกคืนไฟล์ดังกล่าวเมื่อสร้างขึ้น
Zak

47
โน้ตเล็ก ๆ ว่าปลอดภัยกว่าที่จะไม่ใส่รหัสผ่านในคำสั่ง การใช้ตัวเลือก -p โดยไม่มีรหัสผ่านเท่านั้นจะถามรหัสผ่านเมื่อทำงานวิธีนี้จะไม่เก็บรหัสผ่านไว้ในประวัติคำสั่งของคุณ (และอาจเรียกคืนได้) ดังนั้นใช้คำสั่งต่อไปนี้: mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name> db_backup.sql
Pitt

3
แทนการใช้>เพื่อประหยัดผมค่อนข้างจะใช้-rเพื่อป้องกันไม่ให้มีปัญหากับตัวอักษรต่างประเทศหรือฝันร้ายที่เกี่ยวข้องกับการเข้ารหัสปัญหาตามที่ระบุไว้ในบทความนี้
Pathros

1
สำหรับดาต้าเบสที่มีการอัพเดตขนาดใหญ่ให้ใช้ - พารามิเตอร์รายการเดียว สิ่งนี้จะสร้างจุดตรวจสอบและช่วยให้มั่นใจได้อย่างสม่ำเสมอ นอกจากนี้ให้ใช้สวิทช์
รูทีน

1
คุณควรใช้แทน--result-file=db_backup.sql > db_backup.sqlอ้างอิงจากเอกสาร MySQL : "ไม่อนุญาตให้ UTF-16 เป็นชุดอักขระการเชื่อมต่อ (ดูชุดอักขระไคลเอนต์ที่ไม่อนุญาต) ดังนั้นไฟล์การถ่ายโอนข้อมูลจะไม่โหลดอย่างถูกต้องหากต้องการแก้ไขปัญหานี้ให้ใช้--result-fileตัวเลือกที่สร้างผลลัพธ์ใน รูปแบบ ASCII "
Martin Braun

13

ในรุ่นล่าสุดของ mysql อย่างน้อยก็ในตัวคุณไม่สามารถใส่รหัสผ่านในคำสั่งได้โดยตรง

คุณต้องเรียกใช้:

mysqldump -u [uname] -p db_name > db_backup.sql

แล้วมันจะถามรหัสผ่าน


2
การลบช่องว่างระหว่าง-pตัวเลือกและรหัสผ่านที่แท้จริงนั้นหลอกลวง
y2k-shubham

8

หากการดาวน์โหลดจากเซิร์ฟเวอร์ระยะไกลนี่เป็นตัวอย่างง่ายๆ:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

-p ระบุว่าคุณจะป้อนรหัสผ่าน แต่จะไม่เกี่ยวข้องกับ db_name หลังจากป้อนคำสั่งคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่าน พิมพ์และกด Enter


5

ใน windows คุณต้องระบุ mysql bin ที่ mysqldump.exe อยู่

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

บันทึกสิ่งนี้ลงในไฟล์ข้อความเช่น backup.cmd


หรือมักจะมี mysql ในตัวแปร PATH ของคุณเพื่อให้คุณสามารถเรียกใช้mysqlคำสั่งจากทุกที่โดยไม่ต้องอยู่ในไดเรกทอรี
behz4d

2

เปิดพรอมต์คำสั่งและพิมพ์คำสั่งนี้โดยตรง อย่าเข้าไปข้างใน mysql แล้วพิมพ์คำสั่งนี้

mysqldump -u [uname] -p[pass] db_name > db_backup.sql

1
การคัดลอกรหัสบรรทัดแรกจากคำตอบที่ยอมรับในคำถามอายุ 5 ปีเป็นกลยุทธ์ที่กล้าหาญสำหรับการทำฟาร์มกรรม
Phillip Copley

ฉันลองใช้คำสั่ง MySQLdump นี้ภายใน Mysql prompt และไม่ทำงาน ดังนั้นเพียงแค่ตอบ :-)
Nithin ราชา

2

ไปที่ไดเรกทอรีการติดตั้ง MySQL และเปิด cmd จากที่นั่น จากนั้นดำเนินการคำสั่งด้านล่างเพื่อรับการสำรองฐานข้อมูลของคุณ

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql

1

เพียงพิมพ์mysqldumpหรือmysqldump --helpในคำสั่งของคุณจะแสดงhow to use

นี่คือผล cmdของฉัน

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help


1

สำหรับผู้ที่ต้องการพิมพ์รหัสผ่านภายในบรรทัดคำสั่ง เป็นไปได้ แต่แนะนำให้ส่งผ่านภายในเครื่องหมายคำพูดเพื่อให้อักขระพิเศษไม่ทำให้เกิดปัญหาใด ๆ

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql

-1

ใช้สิ่งนี้หากคุณมีฐานข้อมูลที่มีชื่อ archiedb ให้ใช้ mysql -p - ฐานข้อมูล archiedb> /home/database_backup.sql

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


เชลล์> mysqldump -p mypassword - ฐานข้อมูล mydb> /home/backup.sql
Nabaasa Archie

-1

สำหรับผู้ใช้ Windows คุณสามารถไปที่โฟลเดอร์ mysql เพื่อเรียกใช้คำสั่ง

เช่น

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql

1
คำถามที่แนะนำว่า MySQL ทำงานบน Linux
gmauch

-1

หมายเหตุ: ขั้นตอนนี้เกิดขึ้นหลังจากการทิ้งไฟล์ MySQL ของคุณเท่านั้น (ซึ่งคำตอบส่วนใหญ่มีการระบุไว้แล้ว)

ถือว่าคุณมีไฟล์ดัมพ์ดังกล่าวในเซิร์ฟเวอร์ระยะไกลของคุณและตอนนี้คุณต้องการที่จะนำมันลงในเครื่องคอมพิวเตอร์ของคุณ

ในการดาวน์โหลด.sqlไฟล์ที่ถูกทิ้งจากเซิร์ฟเวอร์ระยะไกลของคุณไปยังเครื่องคอมพิวเตอร์ของคุณให้ทำ

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.