ฉันกำลังย้ายออกจาก Linode เพราะฉันไม่มีทักษะการดูแลระบบ Linux ที่จำเป็น ก่อนที่ฉันจะเปลี่ยนเป็นบริการที่เป็นมิตรกับผู้ใช้มากขึ้นฉันต้องดาวน์โหลดเนื้อหาของฐานข้อมูล MySQL มีวิธีที่ฉันสามารถทำได้จากบรรทัดคำสั่งหรือไม่
ฉันกำลังย้ายออกจาก Linode เพราะฉันไม่มีทักษะการดูแลระบบ Linux ที่จำเป็น ก่อนที่ฉันจะเปลี่ยนเป็นบริการที่เป็นมิตรกับผู้ใช้มากขึ้นฉันต้องดาวน์โหลดเนื้อหาของฐานข้อมูล MySQL มีวิธีที่ฉันสามารถทำได้จากบรรทัดคำสั่งหรือไม่
คำตอบ:
คุณสามารถทำได้โดยใช้ฟังก์ชั่นบรรทัดคำสั่ง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
ตัวเลือกโดยไม่มีรหัสผ่าน มันจะพร้อมท์ให้คุณและไม่บันทึก
wget
หรือscp
จะต้องเรียกคืนไฟล์ดังกล่าวเมื่อสร้างขึ้น
>
เพื่อประหยัดผมค่อนข้างจะใช้-r
เพื่อป้องกันไม่ให้มีปัญหากับตัวอักษรต่างประเทศหรือฝันร้ายที่เกี่ยวข้องกับการเข้ารหัสปัญหาตามที่ระบุไว้ในบทความนี้
--result-file=db_backup.sql
> db_backup.sql
อ้างอิงจากเอกสาร MySQL : "ไม่อนุญาตให้ UTF-16 เป็นชุดอักขระการเชื่อมต่อ (ดูชุดอักขระไคลเอนต์ที่ไม่อนุญาต) ดังนั้นไฟล์การถ่ายโอนข้อมูลจะไม่โหลดอย่างถูกต้องหากต้องการแก้ไขปัญหานี้ให้ใช้--result-file
ตัวเลือกที่สร้างผลลัพธ์ใน รูปแบบ ASCII "
ในรุ่นล่าสุดของ mysql อย่างน้อยก็ในตัวคุณไม่สามารถใส่รหัสผ่านในคำสั่งได้โดยตรง
คุณต้องเรียกใช้:
mysqldump -u [uname] -p db_name > db_backup.sql
แล้วมันจะถามรหัสผ่าน
-p
ตัวเลือกและรหัสผ่านที่แท้จริงนั้นหลอกลวง
หากการดาวน์โหลดจากเซิร์ฟเวอร์ระยะไกลนี่เป็นตัวอย่างง่ายๆ:
mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql
-p ระบุว่าคุณจะป้อนรหัสผ่าน แต่จะไม่เกี่ยวข้องกับ db_name หลังจากป้อนคำสั่งคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่าน พิมพ์และกด Enter
ใน windows คุณต้องระบุ mysql bin ที่ mysqldump.exe อยู่
cd C:\xampp\mysql\bin
mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql
บันทึกสิ่งนี้ลงในไฟล์ข้อความเช่น backup.cmd
mysql
คำสั่งจากทุกที่โดยไม่ต้องอยู่ในไดเรกทอรี
เปิดพรอมต์คำสั่งและพิมพ์คำสั่งนี้โดยตรง อย่าเข้าไปข้างใน mysql แล้วพิมพ์คำสั่งนี้
mysqldump -u [uname] -p[pass] db_name > db_backup.sql
ไปที่ไดเรกทอรีการติดตั้ง MySQL และเปิด cmd จากที่นั่น จากนั้นดำเนินการคำสั่งด้านล่างเพื่อรับการสำรองฐานข้อมูลของคุณ
mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
เพียงพิมพ์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
หากคุณใช้ MySQL นอกเหนือจากพอร์ตเริ่มต้น:
mysqldump.exe -u username -p -P PORT_NO database > backup.sql
สำหรับผู้ที่ต้องการพิมพ์รหัสผ่านภายในบรรทัดคำสั่ง เป็นไปได้ แต่แนะนำให้ส่งผ่านภายในเครื่องหมายคำพูดเพื่อให้อักขระพิเศษไม่ทำให้เกิดปัญหาใด ๆ
mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
ใช้สิ่งนี้หากคุณมีฐานข้อมูลที่มีชื่อ archiedb ให้ใช้ mysql -p - ฐานข้อมูล archiedb> /home/database_backup.sql
สมมติว่านี่เป็น linux ให้เลือกว่าไฟล์สำรองข้อมูลจะถูกบันทึกไว้ที่ใด
สำหรับผู้ใช้ Windows คุณสามารถไปที่โฟลเดอร์ mysql เพื่อเรียกใช้คำสั่ง
เช่น
cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
หมายเหตุ: ขั้นตอนนี้เกิดขึ้นหลังจากการทิ้งไฟล์ MySQL ของคุณเท่านั้น (ซึ่งคำตอบส่วนใหญ่มีการระบุไว้แล้ว)
ถือว่าคุณมีไฟล์ดัมพ์ดังกล่าวในเซิร์ฟเวอร์ระยะไกลของคุณและตอนนี้คุณต้องการที่จะนำมันลงในเครื่องคอมพิวเตอร์ของคุณ
ในการดาวน์โหลด.sql
ไฟล์ที่ถูกทิ้งจากเซิร์ฟเวอร์ระยะไกลของคุณไปยังเครื่องคอมพิวเตอร์ของคุณให้ทำ
scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir