mysqldump - ทั้งหมด - ฐานข้อมูลรวมวัตถุทั้งหมดหรือไม่


16

ไม่mysqldump -all-databasesรวมถึงวัตถุทั้งหมดหรือไม่

ฉันต้องย้ายฐานข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่

คำตอบ:


21

ไม่มีฐานข้อมูล mysqldump ทั้งหมดไม่รวมวัตถุทั้งหมด

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

ดังนั้น mysqldump กับ - ทั้งหมด - ฐานข้อมูลเท่านั้นทิ้งฐานข้อมูลทั้งหมด

ในการโอนย้ายฐานข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่คุณควรทำการสำรองข้อมูลทั้งหมด:

mysqldump อินสแตนซ์ mysql ทั้งหมด

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

ข้อเสียคือการสำรองข้อมูลที่สร้างขึ้นด้วยวิธีนี้สามารถโหลดซ้ำในรุ่นใหญ่รุ่นเดียวกันกับ mysql ที่ mysqldump สร้างขึ้น กล่าวอีกนัยหนึ่ง, mysqldump - ทั้งหมด - ฐานข้อมูลจากฐานข้อมูล MySQL 5.0 ไม่สามารถโหลดได้ใน 5.1 หรือ 5.5 เหตุผล ? schema ของ mysql นั้นแตกต่างกันอย่างสิ้นเชิงระหว่างรุ่นใหญ่

นี่คือวิธีทั่วไปในการถ่ายโอน SQL Grants สำหรับผู้ใช้ที่อ่านได้และพกพาได้มากกว่า

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

ดูคำตอบจากRolandoMySQLDBAบนฉันจะเพิ่มประสิทธิภาพ mysqldump ของฐานข้อมูลขนาดใหญ่ได้อย่างไร


1
คุณลืม--events สิ่งที่จำเป็นนอกเหนือจาก--routinesและ--triggersและคุณยังละเว้น--single-transactionเพื่อหลีกเลี่ยงการล็อกตารางโดยไม่จำเป็น
Michael - sqlbot

1
เพียงเพื่อให้แน่ใจว่าชัดเจน--single-transactionจะไม่สร้างการสำรองข้อมูลที่สอดคล้องกันหากมีตาราง MyISAM ถูกเขียนไปในขณะที่การสำรองข้อมูลทำงาน อย่างไรก็ตามการเพิ่ม--single-transactionเป็นความคิดที่ดีถ้าคุณใช้ InnoDB ทั้งหมดและต้องการหลีกเลี่ยงการบล็อกขณะmysqldumpทำงาน
James L
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.