คำถามติดแท็ก mysqldump

ยูทิลิตี้ Dump / Backup มาตรฐานของ MySQL


11
ฉันจะติดตามความคืบหน้าของการนำเข้าไฟล์. sql ขนาดใหญ่ได้อย่างไร
ฉันกำลังนำเข้า 7 GB foobar.sqlเพื่อกู้คืนตารางในฐานข้อมูลท้องถิ่น $ mysql -h localhost -u root 'my_data' < foobar.sql $ mysql --version /usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1 ฉันจะติดตามความคืบหน้าได้อย่างไร
204 mysql  mysqldump  import 

7
ฉันจะเพิ่มประสิทธิภาพ mysqldump ของฐานข้อมูลขนาดใหญ่ได้อย่างไร
ฉันมีแอพพลิเคชั่น symfony ที่มีฐานข้อมูล InnoDB ที่ ~ 2GB พร้อม 57 ตาราง ขนาดส่วนใหญ่ของฐานข้อมูลอยู่ในตารางเดียว (~ 1.2GB) ฉันกำลังใช้ mysqldump เพื่อสำรองฐานข้อมูลทุกคืน เนื่องจากการเชื่อมต่อ comcast ของฉันบ่อยครั้งถ้าฉันเรียกใช้การถ่ายโอนข้อมูลด้วยตนเองการเชื่อมต่อกับเซิร์ฟเวอร์ของฉันจะหมดเวลาก่อนที่การถ่ายโอนข้อมูลเสร็จสมบูรณ์ทำให้ฉันต้องเรียกใช้การถ่ายโอนข้อมูลอีกครั้ง [ฉันกำลังเรียกใช้ cron ที่ถ่ายโอนข้อมูลทุกคืนนี่เป็นเพียงการทิ้งที่ฉันทำงานด้วยตนเอง] มีวิธีเพิ่มความเร็วในการทิ้งสำหรับปัญหาการหมดเวลาการเชื่อมต่อ แต่ยัง จำกัด เวลาที่เซิร์ฟเวอร์ครอบครองกระบวนการนี้หรือไม่ BTW ฉันกำลังทำงานในการลดขนาดของฐานข้อมูลโดยรวมเพื่อแก้ไขปัญหานี้

13
ฉันจะย้ายฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นได้อย่างไร
ฉันจะย้ายตาราง MySQL จากเซิร์ฟเวอร์จริงหนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งได้อย่างไร เช่นสถานการณ์ที่แน่นอน: ฉันมีเซิร์ฟเวอร์ MySQL ที่ใช้ตาราง innodb และมีขนาดประมาณ 20GB ฉันต้องการย้ายไปยังเซิร์ฟเวอร์ใหม่วิธีที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คืออะไร

6
วิธีที่ปลอดภัยที่สุดในการใช้ mysqldump บนระบบจริงที่มีการอ่านและเขียนที่ใช้งานอยู่?
ฉันไม่แน่ใจว่าสิ่งนี้จริงหรือไม่ แต่ฉันจำได้ว่าอ่านถ้าคุณเรียกใช้คำสั่งต่อไปนี้ใน linux mysqldump -u username -p database_name > backup_db.sql ขณะที่กำลังอ่านและเขียนข้อมูลกับฐานข้อมูลดังนั้นดัมพ์อาจมีข้อผิดพลาด มีตัวเลือกเฉพาะในคำสั่งmysqldumpเพื่อให้แน่ใจว่าทำได้อย่างปลอดภัยบนระบบจริงหรือไม่? ฉันโอเคที่มีการอ่าน / เขียนถูกปิดการใช้งานสำหรับผู้ใช้ของเราสองสามวินาที (ฐานข้อมูล <50MB)

4
MySQL มีวิธีนำเข้า sql dump ขนาดใหญ่ (32 GB) เร็วขึ้นไหม?
ฉันมีการถ่ายโอนข้อมูล SQL ขนาดใหญ่ 32 GB ที่ฉันต้องนำเข้าสู่ MySQL ฉันไม่ได้นำเข้าการถ่ายโอนข้อมูล SQL ขนาดใหญ่เช่นนี้มาก่อน ฉันทำตามปกติ: mysql -uroot dbname < dbname.sql ใช้เวลานานเกินไป มีโต๊ะที่มีแถวประมาณ 300 ล้านแถวและได้รับถึง 1.5 ล้านในเวลาประมาณ 3 ชั่วโมง ดังนั้นดูเหมือนว่าสิ่งทั้งหมดจะใช้เวลา 600 ชั่วโมง (นั่นคือ 24 วัน) และทำไม่ได้ ดังนั้นคำถามของฉันคือมีวิธีที่เร็วกว่าในการทำเช่นนี้? ข้อมูลเพิ่มเติม / ผลการวิจัย ตารางเป็น InnoDB ทั้งหมดและไม่มีการกำหนดคีย์ต่างประเทศ อย่างไรก็ตามมีดัชนีจำนวนมาก ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์เดิมและฐานข้อมูลดังนั้นฉันจึงไม่สามารถทำการสำรองข้อมูลใหม่หรือทำสำเนา "ร้อน" เป็นต้น การตั้งค่าinnodb_flush_log_at_trx_commit = 2ตามที่แนะนำที่นี่ดูเหมือนว่าจะไม่มีการปรับปรุง (มองเห็นได้ชัดเจน / อธิบาย) สถิติเซิร์ฟเวอร์ในระหว่างการนำเข้า (จาก …

3
เหตุใด InnoDB จึงจัดเก็บฐานข้อมูลทั้งหมดไว้ในไฟล์เดียว
มันสะดวกที่ MyISAM ใช้เก็บแต่ละตารางในไฟล์ที่เกี่ยวข้อง InnoDB มีความก้าวหน้าในหลาย ๆ ด้าน แต่ฉันสงสัยว่าทำไม InnoDB จึงเก็บฐานข้อมูลทั้งหมดไว้ในไฟล์เดียว ( ibdata1โดยค่าเริ่มต้น) ฉันเข้าใจว่า InnoDB จะจับคู่ตำแหน่งของข้อมูลในไฟล์โดยแต่ละไฟล์ดัชนีสำหรับตาราง แต่ฉันไม่เข้าใจว่าทำไมมันจึงรวมข้อมูลทั้งหมดไว้ในไฟล์เดียว และที่สำคัญทำไมผสมข้อมูลของฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ คุณลักษณะที่น่าสนใจของ MyISAM คือสามารถคัดลอก / วางโฟลเดอร์ฐานข้อมูลไปยังเครื่องอื่นแล้วใช้ฐานข้อมูล (โดยไม่ต้องถ่ายโอนข้อมูล)

5
เหตุใดฐานข้อมูล DROP จึงใช้เวลานานมาก (MySQL)
ใหม่การติดตั้ง CentOS ฉันกำลังเรียกใช้การนำเข้าฐานข้อมูลขนาดใหญ่ (ไฟล์ 2GB sql) และมีปัญหา ไคลเอ็นต์ SSH ดูเหมือนจะสูญเสียการเชื่อมต่อและการนำเข้าดูเหมือนจะหยุดชะงัก ฉันใช้หน้าต่างอื่นเพื่อเข้าสู่ mysql และการนำเข้าดูเหมือนจะตายติดอยู่ในตารางแถว 3M โดยเฉพาะ ดังนั้นฉันจึงพยายาม DROP DATABASE huge_db; 15-20 นาทีต่อมาไม่มีอะไร ในหน้าต่างอื่นฉันทำ: /etc/init.d/mysqld restart หน้าต่าง DROP DB ส่งข้อความ: SERVER SHUTDOWN จากนั้นฉันก็รีสตาร์ทฟิสิคัลเซิร์ฟเวอร์ กลับเข้าสู่ mysql ตรวจสอบและ db ยังคงมีอยู่วิ่ง DROP DATABASE huge_db; อีกครั้งและอีกครั้งฉันรอประมาณ 5 นาที เป็นการติดตั้งใหม่อีกครั้ง huge_dbเป็นฐานข้อมูลเท่านั้น (นอกเหนือจากดีบีเอสระบบ) ฉันสาบานว่าฉันทิ้ง db ของขนาดใหญ่นี้มาก่อนและอย่างรวดเร็ว แต่บางทีฉันผิด ฉันทำฐานข้อมูลสำเร็จแล้ว …
46 mysql  mysqldump 

6
กู้คืนฐานข้อมูล mysql ด้วยชื่ออื่น
เราจะกู้คืนฐานข้อมูล mysql ด้วยชื่อที่แตกต่างจากไฟล์ mysqldump ได้อย่างไร ฉันไม่ต้องการเปิดไฟล์ดัมพ์แล้วแก้ไขมัน มีวิธีอื่นที่ดีกว่านี้ไหม?

6
จะนำเข้าไฟล์. sql ใน MySQL ได้อย่างไร
ฉันกำลังพยายามนำเข้าไฟล์. sql โดยใช้ MySQL Workbench และฉันได้รับข้อผิดพลาดนี้: ERROR 1046 (3D000) at line 28: No database selected ฉันได้สร้างฐานข้อมูลเปล่าก่อนที่มีชื่อเดียวกันกับไฟล์. sql แต่ไม่ได้ผล ฉันได้ลองทำกับไคลเอนต์คำสั่ง mysql โดยใช้: mysqldump -u root database > file.sql แต่มันบอกว่ามีข้อผิดพลาดในไวยากรณ์ SQL ของฉัน นอกจากนี้ฉันไม่ทราบเส้นทางที่ฉันต้องตั้งค่า file.sql

8
บรรทัดคำสั่งการนำเข้า / ส่งออกของฐานข้อมูล MySQL ใน Windows
จะส่งออก / นำเข้าฐานข้อมูลใน MySQL ผ่านทางบรรทัดคำสั่งได้อย่างไร การกำหนดค่าระบบ MySQL ติดตั้งเซิร์ฟเวอร์WampServer ระบบปฏิบัติการ: Windows คำแนะนำสำหรับโฮสต์ในพื้นที่ของฉันไม่ใช่โฮสติ้งแบบสด ...

7
เป็นไปได้หรือไม่ที่จะ mysqldump ชุดย่อยของฐานข้อมูลที่จำเป็นในการสร้างแบบสอบถาม?
พื้นหลัง ฉันต้องการให้ส่วนย่อยของฐานข้อมูลของฉันที่จำเป็นในการสร้างselectแบบสอบถาม เป้าหมายของฉันคือการทำให้เวิร์กโฟลว์การคำนวณของฉันทำซ้ำได้ (เช่นในการวิจัยที่ทำซ้ำได้ ) คำถาม มีวิธีที่ฉันสามารถรวมคำสั่ง select นี้ลงในสคริปต์ที่ทิ้งข้อมูลการสืบค้นลงในฐานข้อมูลใหม่หรือไม่เช่นนั้นฐานข้อมูลสามารถติดตั้งบนเซิร์ฟเวอร์ mysql ใหม่ได้และคำสั่งจะทำงานกับฐานข้อมูลใหม่ ฐานข้อมูลใหม่ไม่ควรมีเร็กคอร์ดนอกเหนือจากที่ใช้ในเคียวรี อัปเดต: เพื่อความกระจ่างฉันไม่สนใจ csv dump ของผลลัพธ์การสืบค้น สิ่งที่ฉันต้องทำคือการถ่ายโอนข้อมูลชุดย่อยฐานข้อมูลเพื่อให้สามารถติดตั้งบนเครื่องอื่นและจากนั้นแบบสอบถามสามารถทำซ้ำได้ (และแก้ไขได้ด้วยชุดข้อมูลเดียวกัน) ตัวอย่าง ตัวอย่างเช่นการวิเคราะห์ของฉันอาจเคียวรีชุดย่อยของข้อมูลที่ต้องการบันทึกจากหลาย ๆ ตาราง (ในตัวอย่างนี้ 3) ตาราง: select table1.id, table1.level, table2.name, table2.level from table1 join table2 on table1.id = table2.table1_id join table3 on table3.id = table2.table3_id where table3.name in ('fee', 'fi', …

4
ฉันจะเปลี่ยน DEFINER ของ VIEW ใน Mysql ได้อย่างไร
เมื่อฉันเรียกใช้ mysqldump ฉันได้รับข้อผิดพลาด: mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES เรื่องนี้สมเหตุสมผลเพราะfoobarเป็นเครื่องจักรที่ไม่มีอยู่จริง ฉันจะเปลี่ยนนิยามของตารางทั้งหมดเป็น 'root' @ 'localhost' ได้อย่างไร

3
วิธีที่แนะนำในการสำรองฐานข้อมูล MySQL / Amazon RDS ไปยัง S3 คืออะไร
ฉันมีสองวัตถุประสงค์นี้: หากต้องการสำรองข้อมูลนอกสถานที่ในกรณีที่เกิดปัญหาในระดับภูมิภาคกับ Amazon Web Services เพื่อคัดลอกข้อมูลการผลิตจากบัญชีการเรียกเก็บเงินการผลิตไปยังบัญชีการเรียกเก็บเงินเบต้า ขณะนี้ยังไม่ปรากฏว่า Amazon รองรับกรณีใช้งานทั้งสองกรณีนี้นอกกรอบ ฉันได้เห็น mysqldump และ xtrabackup (ดูโพสต์แบบฟอร์ม ) ที่กล่าวถึง ฉันได้เห็นกระบวนการที่ซับซ้อนมากขึ้น (เอกสารที่นี่ ) เซิร์ฟเวอร์ RDS ใหม่ในบัญชีการเรียกเก็บเงินต้นทาง (prod) จะถูกปั่นออกจากการสำรองข้อมูลล่าสุด อินสแตนซ์ EC2 ใหม่จะหมุนขึ้นที่มีการเข้าถึงเซิร์ฟเวอร์ RDS ในขั้นตอนที่ 1 mysqldump ใช้เพื่อสำรองข้อมูลของฐานข้อมูลนี้ สำรองข้อมูลถูกคัดลอกไปยังตำแหน่งนอกสถานที่ (S3?) ในบัญชีแยกต่างหากและ / หรือภูมิภาคเซิร์ฟเวอร์ RDS ใหม่จะหมุนตัว ดัมพ์ฐานข้อมูลถูกอิมพอร์ต เคล็ดลับและคำแนะนำได้รับการชื่นชม


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